Carga de datos

library(wooldridge)
data(hprice1)
head(force(hprice1),n=5) #mostrar las primeras 5 observaciones
##   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

Estime el siguiente modelo,

price = ˆα + ˆα1(lotsize) + ˆα2(sqrft) + ˆα3(bdrms) + e

library(readr)
library(stargazer)
ejemplo_regresion <- hprice1
modelo_estimado<-lm(formula = price ~ lotsize + sqrft + bdrms, data = hprice1)
options(scipen = 9999)
stargazer(modelo_estimado, title = "Modelo estimado del precio", type = "html", digits = 5)
Modelo estimado del precio
Dependent variable:
price
lotsize 0.00207***
(0.00064)
sqrft 0.12278***
(0.01324)
bdrms 13.85252
(9.01015)
Constant -21.77031
(29.47504)
Observations 88
R2 0.67236
Adjusted R2 0.66066
Residual Std. Error 59.83348 (df = 84)
F Statistic 57.46023*** (df = 3; 84)
Note: p<0.1; p<0.05; p<0.01

Verifique si los residuos del modelo son independientes entre sí (no autocorrelación), a través de:

Prueba de Durbin Watson.

Usando libreria “lmtest”

library(lmtest)
## Loading required package: zoo
## 
## Attaching package: 'zoo'
## The following objects are masked from 'package:base':
## 
##     as.Date, as.Date.numeric
dwtest(modelo_estimado,alternative = "two.sided",iterations = 1000)
## 
##  Durbin-Watson test
## 
## data:  modelo_estimado
## DW = 2.1098, p-value = 0.6218
## alternative hypothesis: true autocorrelation is not 0

Teniendo en cuenta que existe 88 observaciones, 3 varibles explicativas y un nivel de significancia del 5%.

De acuerdo ala esquema de la tabla, el DW calculado, cae en la zona de no Rechazo de H0, por lo tanto no hay presencia de autocorrelación lineal.

Usando libreria “car”

library(car)
## Loading required package: carData
durbinWatsonTest(modelo_estimado,simulate = TRUE,reps = 1000)
##  lag Autocorrelation D-W Statistic p-value
##    1     -0.05900522      2.109796   0.614
##  Alternative hypothesis: rho != 0

En los dos casos, se puede rechazar la presencia de autocorrelación de primer orden, en los residuos del modelo y (No se rechaza la H0), ya que el pvalue de la prueba DW es 0.642>0.05

Prueba del Multiplicador de Lagrange (verifique autocorrelación de primer y segundo orden).

Preparacion de Datos

library(stargazer)
u_i<-modelo_estimado$residuals
data_prueba_BG<-as.data.frame(cbind(u_i,ejemplo_regresion))
library(dplyr)
library(tidyr)
library(kableExtra)
cbind(u_i,ejemplo_regresion) %>% 
  as.data.frame() %>% 
  mutate(Lag_1=dplyr::lag(u_i,1),
         Lag_2=dplyr::lag(u_i,2),
         Lag_3=dplyr::lag(u_i,3)) %>% 
  replace_na(list(Lag_1=0,Lag_2=0,Lag_3=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 Lag_3
-45.639765 300.000 349.1 4 6126 2438 1 5.703783 5.855359 8.720297 7.798934 0.000000 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 0.000000
-8.236558 191.000 217.7 3 5200 1374 0 5.252274 5.383118 8.556414 7.225481 74.848732 -45.639765 0.000000
-12.081520 195.000 231.8 3 4600 1448 1 5.273000 5.445875 8.433811 7.277938 -8.236558 74.848732 -45.639765
18.093192 373.000 319.1 4 6095 2514 1 5.921578 5.765504 8.715224 7.829630 -12.081520 -8.236558 74.848732
62.939597 466.275 414.5 5 8566 2754 1 6.144775 6.027073 9.055556 7.920810 18.093192 -12.081520 -8.236558

Calculando la regresión auxiliar y el estadístico LMBP

regresion_auxiliar_BG<-lm(u_i~lotsize+sqrft+bdrms+Lag_1+Lag_2+Lag_3,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 Crítico","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 Crítico p value
3.989284 5.991465 0.136062

Como pvalue es de 0.136062>0.05 No se rechazara la H0, por lo tanto puede concluirse que los residuos del modelo, no siguen autocorrelación de orden “2”.

Test BG puede usarse también para verificar la autocorrelación de 1° orden:

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

Como pvalue es de 0.5304>0.05 , No se rechazara la H0, por lo tanto se puede concluir que los residuos del modelo, no siguen autocorrelación de orden “2”, respaldando asi la comprobacion del calculo manual de la regresión auxiliar y el estadístico LMBP, donde de igual manera No se rechazara la H0.

Tes BG de 2° Orden:

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

Como pvalue es de 0.2194>0.05 ,No se rechaza H0, por lo tanto puede concluirse que los residuos del modelo, no siguen autocorrelación de 1° orden.