3

我有一个带有 1 个回归量和 1 个回归量的分位数回归模型。我想假设检验回归量在每个分位数上都相等。我想到的一种方法是在 {0.01,0.02,....,0.99} 上测试所有 tau。但是,我将不得不写:

anova(model1,model2,model3,.......,model99),其中每个模型对应一个不同的 tau。问题:如何让 anova() 接受大量类型的模型,rq而无需手动输入它们?


我的解决方案尝试是这样做:

y = rnorm(100)
x = rnorm(100)

rqs_object <- rq(y~x,tau=1:99/100)
anova(rqs_object)

但是,不幸的是,anova显然不采用 object type rqs,只采用 type 。rq


交叉在这里发布,直到我确定它对问题有很大的编程/专业元素。

4

1 回答 1

2

我专注于问题 1,并且只专注于编程部分。

一些数据:

set.seed(65465)
y = rnorm(100)
x = rnorm(100)

现在我定义了一个函数,它将 tau 作为输入并进行拟合:

rqfits <- function(tau) {
  require(quantreg)
  rq(y~x,tau=tau)
}

然后我可以将此函数应用于 taus 向量:

taus <- 1:5/10
fits <- lapply(taus,rqfits)

结果是一个模型列表。我们现在可以使用do.call将我们的模型传递给anova

do.call(anova,fits)

Quantile Regression Analysis of Deviance Table

Model: y ~ x
Joint Test of Equality of Slopes: tau in {  0.1 0.2 0.3 0.4 0.5  }

  Df Resid Df F value Pr(>F)
1  4      496  1.0388 0.3866
Warning:
In summary.rq(x, se = se, covariance = TRUE) : 2 non-positive fis
于 2012-08-25T09:14:52.993 回答