【问题标题】:Calculating 95% confidence intervals in quantile regression in R using rq function使用 rq 函数计算 R 中分位数回归的 95% 置信区间
【发布时间】:2016-11-01 13:23:09
【问题描述】:

我想获得分位数回归的回归系数的 95% 置信区间。您可以使用 R 中 quantreg 包的 rq 函数计算分位数回归(与 OLS 模型相比):

library(quantreg)
LM<-lm(mpg~disp, data = mtcars)
QR<-rq(mpg~disp, data = mtcars, tau=0.5)

我能够使用 confint 函数获得线性模型的 95% 置信区间:

confint(LM)

当我使用分位数回归时,我了解到以下代码会产生自举标准错误:

summary.rq(QR,se="boot")

但实际上我想要 95% 的置信区间。也就是说,可以解释为:“以 95% 的概率,区间 [...] 包括真实系数”。当我使用summary.lm() 计算标准误差时,我将乘以SE*1.96 并得到与confint() 相似的结果。但这使用自举标准错误是不可能的。 所以我的问题是如何获得分位数回归系数的 95% 置信区间?

【问题讨论】:

  • 以这种方式计算 95% CI 有多大的错误:估计 +- 1.96 * SE ?该软件会报告 SE 和 pvalue,因此推测 SE 也可用于形成 CI。

标签: r confidence-interval statistics-bootstrap quantreg


【解决方案1】:

您可以直接使用boot.rq 函数来引导系数:

x<-1:50
y<-c(x[1:48]+rnorm(48,0,5),rnorm(2,150,5))

QR <- rq(y~x, tau=0.5)
summary(QR, se='boot')

LM<-lm(y~x)

QR.b <- boot.rq(cbind(1,x),y,tau=0.5, R=10000)

t(apply(QR.b$B, 2, quantile, c(0.025,0.975)))
confint(LM)


plot(x,y)
abline(coefficients(LM),col="green")
abline(coefficients(QR),col="blue")

for(i in seq_len(nrow(QR.b$B))) {
  abline(QR.b$B[i,1], QR.b$B[i,2], col='#0000ff01')
}

您可能希望使用引导包来计算百分比间隔以外的间隔。

【讨论】:

  • 不错的答案。在 t(apply...) Error in QR.b$B : $ operator is invalid for atomic vectors.我认为 QR.b 没有列选择:t(apply(QR.b, 2, quantile, c(0.025,0.975)))?
【解决方案2】:

您也可以简单地从对象中检索 vcov,设置为 covariance=TRUE。这相当于在 CI 中使用增强的标准错误:

vcov.rq <- function(x, se = "iid") {
 vc <- summary.rq(x, se=se, cov=TRUE)$cov
 dimnames(vc) <- list(names(coef(x)), names(coef(x)))
 vc
}

confint(QR)

但是,更好的方法是使用学生化引导程序。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-02-17
    • 1970-01-01
    • 1970-01-01
    • 2021-07-16
    • 1970-01-01
    • 1970-01-01
    • 2018-03-05
    • 2014-04-09
    相关资源
    最近更新 更多