我在 R 中复制负二项式回归模型。在计算稳健标准误差时,输出与标准误差的 Stata 输出不匹配。
原始的Stata代码是
nbreg displaced eei lcostofwar cfughh roadskm lpopdensity ltkilled, robust nolog
我尝试过手动计算和vcovHC
从sandwich
. 但是,两者都不会产生相同的结果。
我的回归模型如下:
mod1 <- glm.nb(displaced ~ eei + costofwar_log + cfughh + roadskm + popdensity_log + tkilled_log, data = mod1_df)
我vcovHC
已经尝试了从HC0
到 的所有选项HC5
。尝试1:
cov_m1 <- vcovHC(mod1, type = "HC0", sandwich = T)
se <- sqrt(diag(cov_m1))
尝试2:
mod1_rob <- coeftest(mod1, vcovHC = vcov(mod1, type = "HC0"))
最成功的是HC0
,vcov = sandwich
但没有一个 SE 是正确的。
有什么建议么?
编辑
我的输出如下(使用HC0
):
Estimate Std. Error z value Pr(>|z|)
(Intercept) 1.3281183 1.5441312 0.8601 0.389730
eei -0.0435529 0.0183359 -2.3753 0.017536 *
costofwar_log 0.2984376 0.1350518 2.2098 0.027119 *
cfughh -0.0380690 0.0130254 -2.9227 0.003470 **
roadskm 0.0020812 0.0010864 1.9156 0.055421 .
popdensity_log -0.4661079 0.1748682 -2.6655 0.007688 **
tkilled_log 1.0949084 0.2159161 5.0710 3.958e-07 ***
我试图复制的 Stata 输出是:
Estimate Std. Error
(Intercept) 1.328 1.272
eei -0.044 0.015
costofwar_log 0.298 0.123
cfughh -0.038 0.018
roadskm 0.002 0.0001
popdensity_log -0.466 0.208
tkilled_log 1.095 0.209
数据集位于此处,重新编码的变量为:
mod1_df <- table %>%
select(displaced, eei_01, costofwar, cfughh, roadskm, popdensity,
tkilled)
mod1_df$popdensity_log <- log(mod1_df$popdensity + 1)
mod1_df$tkilled_log <- log(mod1_df$tkilled + 1)
mod1_df$costofwar_log <- log(mod1_df$costofwar + 1)
mod1_df$eei <- mod1_df$eei_01*100