Autocorrelación

library(wooldridge)
data(hprice1)
head(force(hprice1),n=6)
##     price assess bdrms lotsize sqrft colonial   lprice  lassess llotsize
## 1 300.000  349.1     4    6126  2438        1 5.703783 5.855359 8.720297
## 2 370.000  351.5     3    9903  2076        1 5.913503 5.862210 9.200593
## 3 191.000  217.7     3    5200  1374        0 5.252274 5.383118 8.556414
## 4 195.000  231.8     3    4600  1448        1 5.273000 5.445875 8.433811
## 5 373.000  319.1     4    6095  2514        1 5.921578 5.765504 8.715224
## 6 466.275  414.5     5    8566  2754        1 6.144775 6.027073 9.055556
##     lsqrft
## 1 7.798934
## 2 7.638198
## 3 7.225482
## 4 7.277938
## 5 7.829630
## 6 7.920810

1- Estime el modelo.

library(wooldridge)
library(equatiomatic)
data(hprice1)
modelo_lineal <- lm(formula = price ~ lotsize + sqrft + bdrms, data = hprice1)
equatiomatic::extract_eq(modelo_lineal)

\[ \operatorname{price} = \alpha + \beta_{1}(\operatorname{lotsize}) + \beta_{2}(\operatorname{sqrft}) + \beta_{3}(\operatorname{bdrms}) + \epsilon \]

library(stargazer)
modelo_lineal <- lm(formula = price ~ lotsize + sqrft + bdrms, data = hprice1)
stargazer(modelo_lineal, title = "Modelo lineal", type = "html", digits = 6)
Modelo lineal
Dependent variable:
price
lotsize 0.002068***
(0.000642)
sqrft 0.122778***
(0.013237)
bdrms 13.852520
(9.010145)
Constant -21.770310
(29.475040)
Observations 88
R2 0.672362
Adjusted R2 0.660661
Residual Std. Error 59.833480 (df = 84)
F Statistic 57.460230*** (df = 3; 84)
Note: p<0.1; p<0.05; p<0.01

Autocorrelación 1º orden. (Durbin – Watson.)

Usando libreria “lmtest”

library(lmtest)
dwtest(modelo_lineal,alternative = "two.sided",iterations = 1000)
## 
##  Durbin-Watson test
## 
## data:  modelo_lineal
## DW = 2.1098, p-value = 0.6218
## alternative hypothesis: true autocorrelation is not 0

No se rechaza la H0, ya que 0.06218 > 0.05, por lo que no evidencia de autocorrelación

Usando libreria “car”

library(car)
durbinWatsonTest(modelo_lineal,simulate=TRUE,reps=1000)
##  lag Autocorrelation D-W Statistic p-value
##    1     -0.05900522      2.109796    0.64
##  Alternative hypothesis: rho != 0

No se rechaza la H0, ya que p-value > 0.05, por lo que no evidencia de autocorrelación

Autocorrelación de Orden superior. (Prueba del Multiplicador de Lagrange)

1-Preparación de datos.

library(dplyr)
library(tidyr)
library(kableExtra)
u_i<-modelo_lineal$residuals
cbind(u_i,hprice1)%>%
  as.data.frame()%>%
  mutate(Lag_1=dplyr::lag(u_i,1),
         Lag_2=dplyr::lag(u_i,2))%>%
  replace_na(list(Lag_1=0,Lag_2=0))->data_prueba_BG
kable(head(data_prueba_BG,6))
u_i price assess bdrms lotsize sqrft colonial lprice lassess llotsize lsqrft Lag_1 Lag_2
-45.639765 300.000 349.1 4 6126 2438 1 5.703783 5.855359 8.720297 7.798934 0.000000 0.000000
74.848732 370.000 351.5 3 9903 2076 1 5.913503 5.862210 9.200593 7.638198 -45.639765 0.000000
-8.236558 191.000 217.7 3 5200 1374 0 5.252274 5.383118 8.556414 7.225481 74.848732 -45.639765
-12.081520 195.000 231.8 3 4600 1448 1 5.273000 5.445875 8.433811 7.277938 -8.236558 74.848732
18.093192 373.000 319.1 4 6095 2514 1 5.921578 5.765504 8.715224 7.829630 -12.081520 -8.236558
62.939597 466.275 414.5 5 8566 2754 1 6.144775 6.027073 9.055556 7.920810 18.093192 -12.081520

2- Calculando la regresión auxiliar y el estadistico LMBP

library(stargazer)
regresión_auxiliar_BG<-lm(u_i~lotsize+sqrft+bdrms+Lag_1+Lag_2,data = data_prueba_BG)
sumario_BG<-summary(regresión_auxiliar_BG)
R_2_BG<-sumario_BG$r.squared
n<-nrow(data_prueba_BG)
LM_BG<-n*R_2_BG
gl=2
p_value<-1-pchisq(q=LM_BG,df = gl)
VC<-qchisq(p = 0.95,df = gl)
salida_bg<-c(LM_BG,VC,p_value)
names(salida_bg)<-c("LMbg","Valor Critico","p value")
stargazer(salida_bg,title = "Resultados de la prueba de Breusch Godfrey",type = "html",digits = 6)
Resultados de la prueba de Breusch Godfrey
LMbg Valor Critico p value
3.033403 5.991465 0.219435

Como el p-value > 0.05 no se rechaza H0, por lo que se puede concluir que los residuos del modelo no siguen autocorrelación de orden “2”

Usando la libreria “lmtest”

library(lmtest)
bgtest(modelo_lineal,order=2)
## 
##  Breusch-Godfrey test for serial correlation of order up to 2
## 
## data:  modelo_lineal
## LM test = 3.0334, df = 2, p-value = 0.2194

Como el p-value > 0.05 no se rechaza H0, por lo que se puede concluir que los residuos del modelo no siguen autocorrelación de orden “2”

El test BG tambien se puede utilizar para verificar la utocorrelación de 1° orden.

library(lmtest)
bgtest(modelo_lineal,order=1)
## 
##  Breusch-Godfrey test for serial correlation of order up to 1
## 
## data:  modelo_lineal
## LM test = 0.39362, df = 1, p-value = 0.5304

Como el p-value > 0.05 no se rechaza H0, por lo que se puede concluir que los residuos del modelo no siguen autocorrelación de orden “1”