我有一个分位数回归模型,有一个回归者和一个回归者。我想假设回归者在每个分位数上是相等的。我想过的一种方法是在{0.01,0.02,....,0.99}上测试整个τ。然而,我不得不写:
anova(model1,model2,model3,.......,model99),其中每个模型对应于不同的τ。rq问题:如何让anova()接受大量类型的模型,而无需手动输入它们?
我的解决方案就是这样做的:
y = rnorm(100)
x = rnorm(100)
rqs_object <- rq(y~x,tau=1:99/100)
anova(rqs_object)但是,不幸的是,anova显然不采用对象类型rqs,只接受rq类型。
交叉发布了这里,直到我决定它有一个大型的编程/专家元素来解决这个问题。
发布于 2012-08-25 09:14:52
我集中讨论问题1,只谈方案编制部分。
一些数据:
set.seed(65465)
y = rnorm(100)
x = rnorm(100)现在,我定义了一个函数,它以τ作为输入,并执行适当的操作:
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 fishttps://stackoverflow.com/questions/12120064
复制相似问题