首页 > 解决方案 > NeweyWest 应用于许多回归

问题描述

对不起,基本问题。我正在运行许多不同的回归,并使用 NeweyWest 程序纠正标准错误。我的问题是,与其对每个回归运行 NeweyWest 调整,我是否可以一步对所有回归运行它。

例如:我有以下回归

Reg1, Reg2, Reg3 etc 

我尝试了以下但没有任何成功。

 Reg_List = c("Reg1", "Reg2", "Reg3")
 coeftest(Reg_list, vcov=NeweyWest(Reg_list, lag = lag_length - 1, prewhite = FALSE, adjust = TRUE, sandwich = TRUE))

标签: r

解决方案


我们需要获取“Reg_List”的值。在listwith mgetand then uselapply中循环list并应用NeweyWest函数

library(sandwich)
library(lmtest)
lapply(mget(Reg_List), 
   function(x) coeftest(x, vcov = NeweyWest(x, lag = lag_length -1,  
       prewhite = FALSE, adjust = TRUE, sandwich = TRUE)))
#$Reg1

#t test of coefficients:

#              Estimate Std. Error t value  Pr(>|t|)    
#(Intercept) -12.533601  22.665383 -0.5530    0.5879    
#RealGNP       0.169136   0.020678  8.1793 4.154e-07 ***
#RealInt      -1.001438   3.664142 -0.2733    0.7881    
#---
#Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1


#$Reg2
# ..

在这里,我们假设lag_length已经在 OP 的环境中创建了一个对象


使用可重现的示例

library(sandwich)
data(Investment)
Reg1 <- lm(RealInv ~ RealGNP + RealInt, data = Investment)
Reg2 <- Reg1
Reg3 <- Reg1
lag_length <- 4
Reg_List = c("Reg1", "Reg2", "Reg3")

推荐阅读