基于bootstrap的分位数回归置信区间

基于bootstrap的分位数回归置信区间,r,confidence-interval,quantile,statistics-bootstrap,R,Confidence Interval,Quantile,Statistics Bootstrap,我试图得到线性回归和分位数回归的五种bootstrap区间。我能够使用Boot fromcar和Boot.ci fromBoot为线性回归找到5个bootstrap区间(分位数、正常、基本、学生化和BCa)。当我尝试使用来自量子的rq对分位数回归做同样的操作时,它抛出了一个错误。下面是示例代码 创建模型 引导线性和分位数回归 如何获取引导的其他CI(普通、基本、学生化、BCa) 3) 另外,用于线性回归的boot.ci命令会产生此警告 Warning message: In sqrt(tv[,

我试图得到线性回归和分位数回归的五种bootstrap区间。我能够使用Boot fromcar和Boot.ci fromBoot为线性回归找到5个bootstrap区间(分位数、正常、基本、学生化和BCa)。当我尝试使用来自量子的rq对分位数回归做同样的操作时,它抛出了一个错误。下面是示例代码

创建模型 引导线性和分位数回归 如何获取引导的其他CI(普通、基本、学生化、BCa)

3) 另外,用于线性回归的boot.ci命令会产生此警告

Warning message:
In sqrt(tv[, 2L]) : NaNs produced

这意味着什么?

使用
summary.rq
可以计算模型系数的boostrap标准误差
有五种bootstrap方法(
bsmethods
)可用(请参见
?boot.rq

要计算引导置信区间,可以使用以下技巧:

mod1.boot <- Boot(mod1, R=999)
set.seed(1234)
boot.ci(mod1.boot, level = .95, type = "all")

dat2 <- newdata[5:7]
set.seed(1234)
mod2.boot <- boot.rq(cbind(1,dat2),newdata$income,tau=0.5, R=10000)

# Create an object with the same structure of mod1.boot
# but with boostrap replicates given by boot.rq
mod3.boot <- mod1.boot
mod3.boot$R <- 10000
mod3.boot$t0 <- coef(mod2)
mod3.boot$t <- mod2.boot$B
boot.ci(mod3.boot, level = .95, type = "all")

# BOOTSTRAP CONFIDENCE INTERVAL CALCULATIONS
# Based on 10000 bootstrap replicates
# 
# CALL : 
# boot.ci(boot.out = mod3.boot, type = "all", level = 0.95)
# 
# Intervals : 
# Level      Normal              Basic             Studentized     
# 95%   (6293, 6838 )   (6313, 6827 )   (6289, 6941 )  
# 
# Level     Percentile            BCa          
# 95%   (6258, 6772 )   (6275, 6801 )  

mod1.boot谢谢大家的帮助。我自己也能想出解决办法。我运行了一个循环,计算分位数回归的系数,然后分别使用boot和boot.ci。这是密码

仅引导命令,根据问题创建模型
mod3感谢您的解决方案,但我已经找到了一个更通用的解决方案来计算所有变量的CI。再次感谢!
t(apply(mod2.boot$B, 2, quantile, c(0.025,0.975)))
Warning message:
In sqrt(tv[, 2L]) : NaNs produced
summary(mod2, se = "boot", bsmethod= "xy")

# Call: rq(formula = income ~ education.c + prestige.c + women.c, data = newdata)
# 
# tau: [1] 0.5
#  
# Coefficients:
#             Value      Std. Error t value    Pr(>|t|)  
# (Intercept) 6542.83599  139.54002   46.88860    0.00000
# education.c  291.57468  117.03314    2.49139    0.01440
# prestige.c    89.68050   22.03406    4.07009    0.00010
# women.c      -48.94856    5.79470   -8.44712    0.00000
mod1.boot <- Boot(mod1, R=999)
set.seed(1234)
boot.ci(mod1.boot, level = .95, type = "all")

dat2 <- newdata[5:7]
set.seed(1234)
mod2.boot <- boot.rq(cbind(1,dat2),newdata$income,tau=0.5, R=10000)

# Create an object with the same structure of mod1.boot
# but with boostrap replicates given by boot.rq
mod3.boot <- mod1.boot
mod3.boot$R <- 10000
mod3.boot$t0 <- coef(mod2)
mod3.boot$t <- mod2.boot$B
boot.ci(mod3.boot, level = .95, type = "all")

# BOOTSTRAP CONFIDENCE INTERVAL CALCULATIONS
# Based on 10000 bootstrap replicates
# 
# CALL : 
# boot.ci(boot.out = mod3.boot, type = "all", level = 0.95)
# 
# Intervals : 
# Level      Normal              Basic             Studentized     
# 95%   (6293, 6838 )   (6313, 6827 )   (6289, 6941 )  
# 
# Level     Percentile            BCa          
# 95%   (6258, 6772 )   (6275, 6801 )  
mod3 <- formula(income ~ education.c + prestige.c + women.c)
coefsf <- function(data,ind){
rq(mod3, data=newdata[ind,])$coef
}
boot.mod <- boot(newdata,coefsf,R=10000)
myboot.ci <- list()
for (i in 1:ncol(boot.mod$t)){
myboot.ci[[i]] <- boot.ci(boot.mod, level = .95, type = 
c("norm","basic","perc", "bca"),index = i)
  }