我有一个分位数回归模型,有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
显然不会使用对象类型rqs
,但很遗憾只会输入rq
。
交叉发布here,直到我认为它有一个大型编程/专家元素来解决问题。
答案 0 :(得分: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