【问题标题】:quantreg package: predict.rq does only accept a single tauquantreg 包:predict.rq 只接受一个 tau
【发布时间】:2017-01-14 13:42:49
【问题描述】:

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

【问题讨论】:

    标签: r predict confidence-interval quantreg


    【解决方案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 参数中获得此类函数的矢量化版本,以便将来使用该函数而无需实现循环。

    【讨论】:

      猜你喜欢
      • 2022-01-02
      • 1970-01-01
      • 2020-11-02
      • 1970-01-01
      • 2012-12-29
      • 2014-09-27
      • 1970-01-01
      • 2021-05-05
      • 2013-12-25
      相关资源
      最近更新 更多