library(wooldridge)
data(hprice1)
head(force(hprice1), n=5)
## price assess bdrms lotsize sqrft colonial lprice lassess llotsize lsqrft
## 1 300 349.1 4 6126 2438 1 5.703783 5.855359 8.720297 7.798934
## 2 370 351.5 3 9903 2076 1 5.913503 5.862210 9.200593 7.638198
## 3 191 217.7 3 5200 1374 0 5.252274 5.383118 8.556414 7.225482
## 4 195 231.8 3 4600 1448 1 5.273000 5.445875 8.433811 7.277938
## 5 373 319.1 4 6095 2514 1 5.921578 5.765504 8.715224 7.829630
Ejercicio 1: Estimar el modelo.
library(stargazer)
Autest_HP1<-lm(formula = price~lotsize+sqrft+bdrms, data = hprice1)
stargazer(Autest_HP1, title = "Estimador del modelo autocorreccion HP1", type = "html")
Estimador del modelo autocorreccion HP1
|
|
|
|
Dependent variable:
|
|
|
|
|
|
price
|
|
|
|
lotsize
|
0.002***
|
|
|
(0.001)
|
|
|
|
|
sqrft
|
0.123***
|
|
|
(0.013)
|
|
|
|
|
bdrms
|
13.853
|
|
|
(9.010)
|
|
|
|
|
Constant
|
-21.770
|
|
|
(29.475)
|
|
|
|
|
|
|
Observations
|
88
|
|
R2
|
0.672
|
|
Adjusted R2
|
0.661
|
|
Residual Std. Error
|
59.833 (df = 84)
|
|
F Statistic
|
57.460*** (df = 3; 84)
|
|
|
|
Note:
|
p<0.1; p<0.05;
p<0.01
|
Ejercicio 2: Verifique si los residuos del modelo son independientes
entre sí (no autocorrelación), a través de:
2.1 Prueba de Durbin Watson.
2.1.1 Usando libreria “lmtest”
library(lmtest)
dwtest(Autest_HP1, alternative = "two.sided", iterations = 1000)
##
## Durbin-Watson test
##
## data: Autest_HP1
## DW = 2.1098, p-value = 0.6218
## alternative hypothesis: true autocorrelation is not 0
2.1.1 Usando libreria “car”
library(car)
durbinWatsonTest(Autest_HP1, simulate = TRUE, reps = 1000)
## lag Autocorrelation D-W Statistic p-value
## 1 -0.05900522 2.109796 0.606
## Alternative hypothesis: rho != 0
Interpretacion:
En ambos caso se puede rechazar la autocorrelacion ya que el pvalue
es superior a 0.05.
En el caso de el uso de la libreria “lmtest”, 0.6218>0.05
En el caso de el uso de la libreria “car”, 0.572>0.05.
2.2 Prueba del Multiplicador de Lagrange
library(dplyr)
library(tidyr)
library(kableExtra)
u_i<-Autest_HP1$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
|
# Calculando la regresión auxiliar y el estadístico LMBP
regresion_auxiliar_BG<-lm(u_i~lotsize+sqrft+bdrms+lag_1+lag_2, data = data_prueba_BG)
sumario_BG<-summary(regresion_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
|
|
|
2.2.1 Usando la librería “lmtest”
library(lmtest)
bgtest(Autest_HP1, order = 2)
##
## Breusch-Godfrey test for serial correlation of order up to 2
##
## data: Autest_HP1
## LM test = 3.0334, df = 2, p-value = 0.2194
Como pvalue>0.05 (0.2194>0.05) No se rechaza H0, por lo tanto
puede concluirse que los residuos del modelo, no siguen autocorrelación
de orden “2”
El test BG puede usarse también para verificar la autocorrelación de
1° orden:
library(lmtest)
bgtest(Autest_HP1, order = 1)
##
## Breusch-Godfrey test for serial correlation of order up to 1
##
## data: Autest_HP1
## LM test = 0.39362, df = 1, p-value = 0.5304
Como pvalue>0.05 (0.5304>0.05) No se rechaza H0 , por lo tanto
puede concluirse que los residuos del modelo, no siguen autocorrelación
de orden “1”