我正在使用quantreg
包来计算分位数回归。我拟合了许多taus的回归,并希望计算预测值和95%置信区间。
问题是,如果添加置信度限制,函数predict.qr
似乎不允许多个分位数。到目前为止,我使用循环解决了问题,但这使我的代码非常长。
最小的例子:
1)一个分位数(0.5)工作正常
# prediction data set
pred.df <- data.frame(disp = 150:160)
fit <- rq(mpg ~ disp, data = mtcars, tau = 0.5)
predict.rq(fit,
newdata = pred.df,
interval = "confidence")
2)多个分位数且只有预测值(无ci)也能正常工作
fit <- rq(mpg ~ disp, data = mtcars, tau = c(0.5, 0.6))
predict.rq(fit,
newdata = pred.df)
3)当多个分位数(0.5,0.75)和ci时,它不再起作用
fit <- rq(mpg ~ disp, data = mtcars, tau = c(0.5, 0.6))
predict.rq(fit,
newdata = pred.df,
interval = "confidence")
因此我的问题是: 是否有可能仅使用predict.rq和避免循环获得多个分位数回归的预测值和置信区间?
答案 0 :(得分:1)
您可以使用lapply()
,这是一个循环,但实现起来很快:
lapply(c(0.5, 0.6), function(tau) {
fit <- rq(mpg ~ disp, data = mtcars, tau = tau)
predict.rq(fit,
newdata = pred.df,
interval = "confidence")
})
或者,您可以为代码创建包装函数,然后使用Vectorize()
使tau
参数具有这样的函数的矢量化版本,以便将来使用该函数而不使用需要实现循环。