如何在 R 的 modelplot() 中使用 Newey-West 标准误差?

How can I use Newey-West Standard Errors in modelplot(), in R?

如果我写错了,我深表歉意 - 这是我的第一个 post。 我正在对不同国家的房价的不同决定因素进行一些时间序列回归,并想使用 modelplot() 来展示所有国家的一个变量的不同系数。这是容易的部分,我已经完成了。 但是,当我尝试 运行 此代码以尝试包含 Newey-West 标准时。错误:

modelplot(mods_TS_graph,
      coef_map= varnames,
      vcov = c(vcovAUS, vcovBEL, vcovEST, vcovFIN, vcovFRA, vcovGER, vcovGRE, vcovIRE, vcovITA, vcovLAT, vcovLIT, vcovLUX, vcovNET, vcovPOR, vcovSLK, vcovSLE, vcovSPA),
      coef_omit="[^ECB]",
      draw=T, size=1)

vcovAUS 参数等只是 sandwich::NeweyWest(OLS_AUS) 等 我收到以下错误:

Error in get_vcov.default(model, vcov = vcov, conf_level = conf_level, : Unable to extract a variance-covariance matrix from model of class lm. The variance-covariance matrix is required to adjust the standard errors. The vcov argument accepts a variance-covariance matrix, a vector of standard errors, or a function that returns one of these, such as stats::vcov.

我对早期的 modelsummary() 使用了几乎相同的方法,它可以毫无问题地计算 Newey-West 标准误差。 我做错了什么吗?我还尝试在 modelplot() 的 vcov() 参数中只使用“NeweyWest”,就像我在 modelsummary() 中所做的那样。很困惑。 感谢阅读,希望有人能提供帮助。

The modelplot documentation 指出 vcov 参数可以是函数列表、矩阵列表或字符串向量。这意味着这两个命令都应该起作用:

library(modelsummary)
library(sandwich)

mod <- lm(mpg ~ hp, mtcars)

modelplot(mod, vcov = c("HC3", "NeweyWest"))

或者,

modelplot(mod, vcov = list(vcovHC, NeweyWest))
modelplot(mod, vcov = list(vcovHC(mod), NeweyWest(mod)))

您收到的错误消息表明 sandwich 软件包不支持您尝试汇总的特定模型。您可以通过调用来检查是否支持它:

sandwich::NeweyWest(mod)
#>             (Intercept)           hp
#> (Intercept)  5.93124548 -0.032929737
#> hp          -0.03292974  0.000221307

在我的示例中,mod 是一个 lm 模型,但您没有提供 MINIMAL REPRODUCIBLE EXAMPLE,因此您的问题无法得到最终诊断。