library(wooldridge)
## Warning: package 'wooldridge' was built under R version 4.5.3
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
library(wooldridge)
data(hprice1)
modelo <- lm(price ~ lotsize + sqrft + bdrms, data = hprice1)
summary(modelo)
##
## Call:
## lm(formula = price ~ lotsize + sqrft + bdrms, data = hprice1)
##
## Residuals:
## Min 1Q Median 3Q Max
## -120.026 -38.530 -6.555 32.323 209.376
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) -2.177e+01 2.948e+01 -0.739 0.46221
## lotsize 2.068e-03 6.421e-04 3.220 0.00182 **
## sqrft 1.228e-01 1.324e-02 9.275 1.66e-14 ***
## bdrms 1.385e+01 9.010e+00 1.537 0.12795
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 59.83 on 84 degrees of freedom
## Multiple R-squared: 0.6724, Adjusted R-squared: 0.6607
## F-statistic: 57.46 on 3 and 84 DF, p-value: < 2.2e-16
library(lmtest)
## Cargando paquete requerido: zoo
##
## Adjuntando el paquete: 'zoo'
## The following objects are masked from 'package:base':
##
## as.Date, as.Date.numeric
dwtest(modelo, alternative = "two.sided", iterations = 1000)
##
## Durbin-Watson test
##
## data: modelo
## DW = 2.1098, p-value = 0.6218
## alternative hypothesis: true autocorrelation is not 0
library(car)
## Cargando paquete requerido: carData
durbinWatsonTest(modelo, simulate = TRUE, reps = 1000)
## lag Autocorrelation D-W Statistic p-value
## 1 -0.05900522 2.109796 0.584
## Alternative hypothesis: rho != 0
El estadístico de Durbin-Watson es 2.1098, valor cercano a 2, y el p-value es 0.6218, el cual es mayor que 0.05. Por lo tanto, no se rechaza la hipótesis nula de no autocorrelación, concluyendo que no existe evidencia de autocorrelación de primer orden en los residuos del modelo.
library(dplyr)
library(tidyr)
library(stargazer)
library(kableExtra)
data(hprice1)
data_prueba_BG <- hprice1 %>%
mutate(
resid = residuals(modelo),
Lag_1 = lag(resid, 1),
Lag_2 = lag(resid, 2)
) %>%
replace_na(list(Lag_1 = 0, Lag_2 = 0))
kable(head(data_prueba_BG %>%
select(price, lotsize, sqrft, bdrms, resid, Lag_1, Lag_2), 6))
| price | lotsize | sqrft | bdrms | resid | Lag_1 | Lag_2 |
|---|---|---|---|---|---|---|
| 300.000 | 6126 | 2438 | 4 | -45.639765 | 0.000000 | 0.000000 |
| 370.000 | 9903 | 2076 | 3 | 74.848732 | -45.639765 | 0.000000 |
| 191.000 | 5200 | 1374 | 3 | -8.236558 | 74.848732 | -45.639765 |
| 195.000 | 4600 | 1448 | 3 | -12.081520 | -8.236558 | 74.848732 |
| 373.000 | 6095 | 2514 | 4 | 18.093192 | -12.081520 | -8.236558 |
| 466.275 | 8566 | 2754 | 5 | 62.939597 | 18.093192 | -12.081520 |
reg_aux_BG <- lm(resid ~ lotsize + sqrft + bdrms + Lag_1 + Lag_2,
data = data_prueba_BG)
resumen_BG <- summary(reg_aux_BG)
n <- nrow(hprice1)
gl <- 2
R2_BG <- resumen_BG$r.squared
LM_BG <- n * R2_BG
VC <- qchisq(p = 0.05, lower.tail = FALSE, df = gl)
p_value_BG <- pchisq(q = LM_BG, lower.tail = FALSE, df = gl)
salida_BG <- c(LM_BG, VC, p_value_BG)
names(salida_BG) <- c("LM BG", "Valor Crítico", "Valor P")
stargazer(salida_BG, title = "Prueba de Breusch-Godfrey", type = "html", digits = 6)
| LM BG | Valor Crítico | Valor P |
| 3.033403 | 5.991465 | 0.219435 |
El estadístico LM es 3.033403, el cual es menor que el valor crítico de 5.991465, y el p-value es 0.219435, mayor que 0.05. En consecuencia, no se rechaza la hipótesis nula de no autocorrelación, indicando que no existe evidencia de autocorrelación de orden superior (hasta orden 2) en los residuos del modelo.
library(lmtest)
bgtest(modelo,order = 2)
##
## Breusch-Godfrey test for serial correlation of order up to 2
##
## data: modelo
## LM test = 3.0334, df = 2, p-value = 0.2194
La prueba de Breusch-Godfrey arroja un p-value de 0.2194, mayor que 0.05, por lo que no se rechaza la hipótesis nula de no autocorrelación, confirmando que no existe autocorrelación de orden 2 en los residuos.