如何在 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,因此您的问题无法得到最终诊断。
如果我写错了,我深表歉意 - 这是我的第一个 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 asstats::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,因此您的问题无法得到最终诊断。