首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >quantreg包: predict.rq只接受单个tau

quantreg包: predict.rq只接受单个tau
EN

Stack Overflow用户
提问于 2017-01-14 21:42:49
回答 1查看 771关注 0票数 0

我正在使用quantreg软件包来计算分位数回归。我正在拟合一些taus的回归,并想计算预测值和95%的置信区间。问题是,如果您添加置信度限制,则函数predict.qr似乎不允许超过一个分位数。到目前为止,我使用循环解决了这个问题,但这使得我的代码非常长。最小示例:

1)一个分位数(0.5)工作正常

代码语言:javascript
复制
# 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)也可以

代码语言:javascript
复制
fit <- rq(mpg ~ disp, data = mtcars, tau = c(0.5, 0.6))
predict.rq(fit, 
           newdata = pred.df)

3)当超过一个分位数(0.5,0.75)和ci时,它不再起作用

代码语言:javascript
复制
fit <- rq(mpg ~ disp, data = mtcars, tau = c(0.5, 0.6))

predict.rq(fit, 
           newdata = pred.df, 
           interval = "confidence")

因此,我的问题是:是否可以仅使用predict.rq获得多个分位数回归的预测值和置信区间,并避免循环?

EN

回答 1

Stack Overflow用户

发布于 2017-01-14 22:15:25

您可以使用lapply(),它是一个循环,但它可以快速实现:

代码语言:javascript
复制
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()将此类函数的矢量化版本wrt的tau参数,以便在将来使用该函数,而无需实现循环。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41650656

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档