首页 文章

使用rq函数计算R中分位数回归的95%置信区间

提问于
浏览
6

我想获得分位数回归的回归系数的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%置信区间?

2 回答

  • 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')
    }
    

    您可能希望使用引导程序包来计算百分位数间隔以外的间隔 .

  • 5

    您也可以从对象中检索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)
    

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

相关问题