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

wild cluster bootstrap sandwich与lmtest coeftest小样本校正问题咨询

问题解答

对coeftest小样本校正机制的判断结论

你的判断完全正确。lmtest::coeftest()本身仅负责基于传入的协方差矩阵计算标准误、检验统计量与对应p值,没有内置独立的小样本校正逻辑:

  • 未指定协方差矩阵时,它直接调用回归模型自带的协方差矩阵输出结果,默认使用正态分布计算p值
  • 所有和聚类、小样本相关的校正规则,完全由你传入的协方差矩阵(如sandwich包的各类vcov函数)决定,coeftest本身不会额外施加校正。

wild cluster bootstrap与coeftest搭配的小样本校正实现

完全可以实现,常用方案有两种:

方案1:调用vcovBS内置校正后传入coeftest

sandwich::vcovBS()本身就支持wild cluster bootstrap的小样本校正配置,你可以先在校准协方差矩阵时完成校正设置,再直接传给coeftest即可:

library(sandwich)
library(lmtest)
library(dplyr) # 仅用于示例中的n_distinct函数,可替换为其他计算聚类数的方法

# fit为你的线性回归模型对象,cluster_id为聚类变量
vcov_wild_corrected <- vcovBS(
  fit, 
  cluster = ~cluster_id, 
  type = "wild", 
  # 开启小样本校正,自动施加聚类数、参数个数调整因子
  adjust = TRUE, 
  # 小样本场景下建议选Rademacher分布作为bootstrap权重
  wild = "rademacher",
  nboot = 9999
)

# 传入校正后的协方差矩阵,同时指定自由度为「聚类数-1」,用t分布替代正态分布完成进一步校正
coeftest(fit, vcov = vcov_wild_corrected, df = n_distinct(cluster_id) - 1)

注:adjust=TRUE触发的默认小样本校正因子为 $\frac{G}{G-1} \times \frac{n-1}{n-k}$,其中G为聚类数、n为总样本量、k为模型参数个数,是聚类标准误场景下通用的小样本校正规则。

方案2:自定义bootstrap检验结果合并

如果需要更灵活的小样本校正逻辑(比如逐系数的bootstrap检验p值校正),可以先单独跑wild cluster bootstrap得到校正后的统计量,再替换到coeftest的输出中:

# 1. 运行自定义wild cluster bootstrap,得到校正后的标准误与p值
wild_boot_output <- custom_wild_cluster_bootstrap(fit, cluster = ~cluster_id, nboot = 9999)
# 2. 得到coeftest基础输出
coef_table <- coeftest(fit, vcov = vcov_wild_corrected)
# 3. 替换为bootstrap校正后的结果
coef_table[, 2] <- wild_boot_output$corrected_se
coef_table[, 4] <- wild_boot_output$corrected_pval

内容的提问来源于stack exchange,提问作者A.Fischer

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 21:42:03