NeweyWest применяется ко многим регрессам - PullRequest
1 голос
/ 14 февраля 2020

Извините за базовый c вопрос. Я использую много разных регрессий и исправляю стандартные ошибки, используя процедуру 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))

1 Ответ

1 голос
/ 14 февраля 2020

Нам нужно получить значения 'Reg_List'. в list с mget, а затем используйте lapply для l oop над 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 уже объект возражения, созданный в среде ОП


Используя воспроизводимый пример

library(sandwich)
data(Investment)
Reg1 <- lm(RealInv ~ RealGNP + RealInt, data = Investment)
Reg2 <- Reg1
Reg3 <- Reg1
lag_length <- 4
Reg_List = c("Reg1", "Reg2", "Reg3")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...