You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在R中构建含聚类Bootstrap的模型并传入sensemakr()

我希望有人能帮我关闭这个问题。该问题最初发布在Cross Validated,本应留在那里,因为答案更偏向统计问题而非编程问题,但在那边被关闭后,我被要求重新发布到此处。不过答案确实属于统计范畴,我会在此发布答案,若有人能帮忙关闭问题我将不胜感激。

聚类Bootstrap模型传入sensemakr()的求助

核心需求

我一直在尝试用R中的lm执行聚类Bootstrap,并将结果传入sensemakr()包。sensemakr()是Cinelli & Hazlett(2020)相关研究的实现,支持接收lm或feols类对象作为输入。

基础示例代码

library(palmerpenguins)
library(sensemakr)

penguin_dat <- penguins

model_lm <- lm(flipper_length_mm ~ sex + body_mass_g, data=penguin_dat)
summary(model_lm)

sensitivity1 <- sensemakr(model=model_lm, treatment="body_mass_g", benchmark_covariates="sexmale")
summary(sensitivity1)

问题难点

我需要找到方法,将带有复杂误差结构(尤其是聚类Bootstrap)的模型传入sensemakr()。已知开发版sensemakr()可接收fixest包的feols对象,但尚未尝试。

已尝试的方案

  • 使用simpleboot包的lm.boot()处理现有lm类对象,但该工具无聚类Bootstrap功能;
  • 尝试使用fwildclusterboot包的野生聚类Bootstrap,但该包因依赖问题已从CRAN移除,无法安装;
  • 考虑使用clusbootglm或lmeresampler等聚类Bootstrap包,再将结果转换为lm类对象,但这超出我的R能力范围。以下是使用lmtest的coeftest()和sandwich的vcovBS()的示例,但不知如何转换为lm对象:
library(palmerpenguins)
library(sandwich)
library(sensemakr)
library(lmtest)

penguin_dat <- penguins

model_lm <- lm(flipper_length_mm ~ sex + body_mass_g, data=penguin_dat)

clustered_bootstrap_model_lm <- coeftest(model_lm, vcov = vcovBS, cluster = penguin_dat$species, R = 1000)

Stata版本参考

sensemakr()的Stata实现中,聚类Bootstrap操作很简单:

sysuse auto2.dta
regress price mpg weight rep78, vce(bootstrap, reps(100)) cluster(foreign)
est sto m1

但Stata版本不支持传入已训练好的模型,必须在sensemakr内部运行回归,且不允许复杂误差结构。

请问有什么解决方法?感谢您的建议。

参考文献

  • Cinelli, C., & Hazlett, C. (2020). Making sense of sensitivity: Extending omitted variable bias. Journal of the Royal Statistical Society Series B: Statistical Methodology, 82(1), 39-67.
  • Cinelli, C., Ferwerda, J., & Hazlett, C. (2020). sensemakr: Sensitivity analysis tools for OLS in R and Stata. Available at SSRN.

内容的提问来源于stack exchange,提问作者J. Holiday

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.18 23:59:53