0

我正在使用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 并避免循环来获得多个分位数回归的预测值和置信区间?

4

1 回答 1

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,以便将来使用该函数而无需实现循环。

于 2017-01-14T14:15:24.560 回答