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

R中fixest与sandwich包兼容性问题:feols使用vcovBS()计算自助法标准误报错

R中fixest与sandwich包兼容性问题:feols使用vcovBS()计算自助法标准误报错

嘿,我来聊聊你遇到的这个fixest和sandwich包搭配的问题哈。先给你理理背景:

fixest的官方文档明确说明它和sandwich包兼容,feols、feglm、fepois这类模型都能调用sandwich里的方差-协方差矩阵函数,比如官方示例里就有这样用vcovHC计算异方差稳健标准误的写法:

library(fixest)
library(sandwich)
data(base_did)
feols(y ~ x1 | id, base_did, vcov = function(x) sandwich::vcovHC(x, type = "HC1"))

但实际用的时候,你会发现sandwich里的vcovBS()(用于计算自助法标准误的函数),在传入某些type参数值时会触发报错。比如用mtcars数据集做的这个测试案例:

data(mtcars)
fit1 <- feols(mpg ~ wt | am, data = mtcars,
            vcov = function(x) sandwich::vcovBS(x, type = "你测试时用的报错类型"))

出现这个问题的核心原因,大概率是vcovBS()的部分type参数对应的计算逻辑,和fixest模型对象的结构适配性不好——毕竟自助法的计算逻辑和异方差稳健标准误差异很大,vcovHC能顺畅处理的fixest对象,换到vcovBS的某些计算分支就出了问题。

给你提个可行的 workaround 思路:别把vcovBS直接作为参数传入feols,而是分两步走:先拟合基础模型,再单独计算自助法标准误,最后把结果替换到模型对象里。代码示例如下:

# 第一步:拟合不带自定义标准误的基础模型
fit1 <- feols(mpg ~ wt | am, data = mtcars)
# 第二步:用sandwich单独计算自助法标准误
bs_vcov <- sandwich::vcovBS(fit1, type = "你需要的合法类型")
# 第三步:替换模型的方差-协方差矩阵
vcov(fit1) <- bs_vcov
# 查看更新后的模型结果
summary(fit1)

另外也别忘了检查下你用的type参数值是不是vcovBS支持的合法选项,比如"mammen"、"webb"、"wild"这些,要是传了不合法的类型也会触发报错哦。

备注:内容来源于stack exchange,提问作者jlp

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.15 11:14:53