默认情况下,如何通过引导分位数回归获得置信区间

时间:2012-04-17 06:15:10

标签: r regression confidence-interval quantreg

在我的统计课程中,我们使用Stata,因为我是R用户,我想在R中做同样的事情。我得到了正确的结果,但似乎有点尴尬的方式来获得像信心一样简单的东西间隔。

这是我的原始解决方案:

library(quantreg)
na = round(runif(100, min=127, max=144))
f <- rq(na~1, tau=.5, data=ds)
s <- summary.rq(f, se="boot", R=1000)
coef(s)[1]
coef(s)[1]+ c(-1,1)*1.96*coef(s)[2]

我还在启动程序包中进行了一些实验,但我还没有让它工作:

library(boot)
b <- boot(na, function(w, i){ 
        rand_bootstrap_sample = w[i]
        f <- rq(rand_bootstrap_sample~1, tau=.5)
        return(coef(f)) 
        }, R=100)
boot.ci(b)

给出错误:

  

bca.ci中的错误(boot.out,conf,index [1L],L = L,t = t.o,t0 = t0.o ,:     估计调整'a'是NA

我的问题:

  • 如果有另一种获得置信区间的更好方法,我还不知道。
  • 为什么引导代码在抱怨?

1 个答案:

答案 0 :(得分:4)

您的示例没有为我提供错误消息(Windows 7/64,R 2.14.2),因此可能是随机种子的问题。因此,如果您使用一些随机方法发布示例,最好添加一行set.seed;见例子。

请注意,错误消息是指boot.ci的bca类型;因为这个经常抱怨,通过明确地给出类型来取消选择它。

我不知道为什么你在bootstrap中使用相当复杂的rq。如果您真的想要描述rq,请忘记下面的简单示例,但请提供更多详细信息。

library(boot)
set.seed(4711)
na = round(runif(100, min=127, max=144))

b <- boot(na, function(w, i) median(w[i]), R=1000)
boot.ci(b,type=c("norm","basic","perc"))