R Survey 包如何计算引导置信区间?

Lea*_*ple 3 r survey sampling confidence-interval statistics-bootstrap

我想知道如何使用复制权重和调查包的限制实现来构建引导置信区间/标准误差。

\n

看看survey包的confint 实现,它似乎只是简单地采用了标准错误theta复制后生成的列表的标准误差,并将其乘以与给定 alpha 范围相对应的统计数据。

\n

但这并不真正符合我所知道的任何引导程序实现。通常,您会使用 theta 分布的百分位数来获取样本均值分布的置信区间。T 和 BCa 间隔是另一回事。

\n

这是我的 R 代码。我没有使用提供的权重,而是让repweights权重以相同的概率生成为“具有替换的样本”权重。

\n
data(api)\nd <- apiclus1 %>% select(fpc, dnum,api99)\ndclus1<-svydesign(id=~dnum, data=d, fpc=~fpc)\nrclus1<-as.svrepdesign(dclus1,type="bootstrap", replicates=100)\n
Run Code Online (Sandbox Code Playgroud)\n

为了测试置信区间,我们可以使用:

\n
test_mean <- svymean(~api99, rclus1)\nconfint(test_mean, df=degf(rclus1))\nconfint(test_mean, df=degf(rclus1)) - mean(d$api99)\n
Run Code Online (Sandbox Code Playgroud)\n

哪些结果:

\n
         2.5 %   97.5 %\napi99 554.2971 659.6592\n          2.5 %   97.5 %\napi99 -52.68107 52.68107\n
Run Code Online (Sandbox Code Playgroud)\n

很明显,该区间是对称的,这违背了使用引导程序的一些目的。

\n

那么让我们试试这个:

\n
test_bs <- withReplicates(rclus1, function(w, data) weighted.mean(data$api99, w), return.replicates=T)\n
Run Code Online (Sandbox Code Playgroud)\n

这将引导重复,其中权重是重复权重(我假设是替换权重)。以下是在复制中使用 BCa 间隔的间隔:

\n
bca(test$replicates) - mean(d$api99)\n-43.2878  49.1148\n
Run Code Online (Sandbox Code Playgroud)\n

显然不对称。

\n

使用百分位数间隔:

\n
c(quantile(test$replicates, 0.025),quantile(test$replicates, 0.975))  - mean(d$api99)\n     2.5%     97.5% \n-45.50944  48.06085 \n
Run Code Online (Sandbox Code Playgroud)\n

Valliant 以这种方式实现百分位间隔,这应该相当于我的百分位间隔:

\n
 smho.boot.a <- as.svrepdesign(design = smho.dsgn,\n                              type = "subbootstrap",\n                              replicates = 500)\n         # total & CI for EOYCNT based on RW bootstrap\n a1 <- svytotal( \xcc\x83EOYCNT, design = smho.boot.a,\n                 na.rm=TRUE,\n                 return.replicates = TRUE)\n              # Compute CI based on bootstrap percentile method.\n ta1 <- quantile(a1$replicates, c(0.025, 0.975))\n
Run Code Online (Sandbox Code Playgroud)\n

我正在寻找有关的澄清

\n

A。如何使用调查包构建引导 CI 以获取感兴趣的统计数据\nb。如果我的withReplication引导程序的实现是正确的

\n

Tho*_*ley 6

百分位的东西实际上不适用于多阶段调查数据(或者,至少,不知道它是否有效(或者,至少,不知道它是否有效))。调查引导程序只是估计方差。通过这种方式,您无法获得平滑函数的更高阶精度,但您确实可以渐近地获得正确的方差。为了获得不对称的间隔,您需要引导参数的一些合适的函数,就像svycipropsvyquantile(在某种意义上svyglm)所做的那样。

如果您假设简单的随机抽样并替换集群,那么您可以使百分位引导程序和扩展起作用,但这不是现实世界调查的常见结构(并且它并不真正需要调查包)

我确信,如果有人向他指出合适的参考,该包的维护者会很乐意实现一个提供更好的不对称间隔并适用于多阶段样本的引导程序。

  • [广义引导](https://bschneidr.github.io/svrep/articles/bootstrap-replicates.html#generalized-survey-bootstrap) 基于 [Bertail 和 Combris (1997)] 对百分位数方法有一些令人鼓舞的模拟结果)](https://ideas.repec.org/a/adr/anecst/y1997i46p49-83.html) 和 [Beaumont &amp; Patak (2012)](https://onlinelibrary.wiley.com/doi/abs/10.1111 /j.1751-5823.2011.00166.x),尽管后者只考虑泊松采样。 (2认同)