在 R 中引导集群

机器算法验证 r 引导程序 聚集标准错误
2022-03-18 08:44:14

我正在对全国每个县(约 3k 个县)的诊所计数进行负二项式回归。我想通过以“集群”方式引导置信区间来至少部分解释邻近县的非独立性——例如一次绘制整个州(总共 50 个州)的数据。无论好坏,这已成为计量经济学文献中的标准做法。

我可以自己编写代码来执行此操作,但该boot程序包似乎应该能够以某种方式执行此操作,而且通常我更喜欢经过测试的通用解决方案,而不是一次性黑客攻击。有没有办法强制boot软件包进行集群引导?

我尝试了这个strata论点,但它分层内随机化,而不是随机化哪个集群被采用,正如以下代码所证实的那样:

dat <- data.frame( cluster=rep(letters[1:5],each=10), x=runif(5*10), stringsAsFactors=TRUE )
boot.stat <- function(dat,idx) {
    print(dat[idx,]$cluster)
    	print(table(dat[idx,]$cluster))
    mean(dat[idx,]$x)
    }
    boot( 
    	data=dat, 
    	statistic=boot.stat, 
    	strata=dat$cluster, 
    stype="i", 
    R=5 
)
1个回答

如果我理解正确,您想估计每个州的统计数据以及该统计数据的平均值,以获得对整体统计数据的自举估计。

分层抽样做了一些不同的事情。它确保标签是每个样本中具有代表性的样本。我不认为那是你想要做的。

您可以手动执行此操作而不会hacky使用来自tidyversedplyr的,tidyrpurrr包,这将成为透明和干净的代码。

library(tidyr)
library(dplyr)
library(purrr)

dat <- data.frame(cluster=rep(letters[1:5],each=10),
  x=runif(5*10), stringsAsFactors=TRUE)

boot.stat2 <- function(df) {
  mean(df$x)
}

dat %>%
  nest(x) %>%
  mutate(stat = map_dbl(data, boot.stat2))

更多信息