library(wooldridge)
library(tseries)
## Registered S3 method overwritten by 'quantmod':
## method from
## as.zoo.data.frame zoo
library(lmtest)
## Cargando paquete requerido: zoo
##
## Adjuntando el paquete: 'zoo'
## The following objects are masked from 'package:base':
##
## as.Date, as.Date.numeric
library(car)
## Cargando paquete requerido: carData
library(olsrr)
##
## Adjuntando el paquete: 'olsrr'
## The following object is masked from 'package:wooldridge':
##
## cement
## The following object is masked from 'package:datasets':
##
## rivers
datos_parcial <- wooldridge::hprice2
modelo <- lm(log(price) ~ log(nox) + log(dist) + rooms + stratio,
data = datos_parcial)
summary(modelo)
##
## Call:
## lm(formula = log(price) ~ log(nox) + log(dist) + rooms + stratio,
## data = datos_parcial)
##
## Residuals:
## Min 1Q Median 3Q Max
## -1.05890 -0.12427 0.02128 0.12882 1.32531
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 11.083861 0.318111 34.843 < 2e-16 ***
## log(nox) -0.953539 0.116742 -8.168 2.57e-15 ***
## log(dist) -0.134339 0.043103 -3.117 0.00193 **
## rooms 0.254527 0.018530 13.736 < 2e-16 ***
## stratio -0.052451 0.005897 -8.894 < 2e-16 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 0.265 on 501 degrees of freedom
## Multiple R-squared: 0.584, Adjusted R-squared: 0.5807
## F-statistic: 175.9 on 4 and 501 DF, p-value: < 2.2e-16
El coeficiente de determinación R^2=0.584 indica que el 58.4% de la variabilidad del precio de las viviendas es explicada por las variables independientes incluidas en el modelo. El R^ajusrado de 0.5807 confirma un ajuste aceptable
residuos <- residuals(modelo)
jarque.bera.test(residuos)
##
## Jarque Bera Test
##
## data: residuos
## X-squared = 480.14, df = 2, p-value < 2.2e-16
EstadÃstico JB = 480.14 p-value < 2.2e-16 Como el p-value es menor a 0.05, se rechaza la hipótesis nula de normalidad. Por tanto, existe evidencia estadÃstica de que los residuos no siguen una distribución normal
ks.test(residuos,
"pnorm",
mean(residuos),
sd(residuos))
##
## Asymptotic one-sample Kolmogorov-Smirnov test
##
## data: residuos
## D = 0.082888, p-value = 0.001912
## alternative hypothesis: two-sided
Como el p-value es menor a 0.05, se rechaza la hipótesis nula. Por lo tanto, existe evidencia estadÃstica de que los residuos no siguen una distribución normal. La prueba KS confirma el resultado obtenido en la prueba Jarque-Bera, indicando incumplimiento del supuesto de normalidad.
shapiro.test(residuos)
##
## Shapiro-Wilk normality test
##
## data: residuos
## W = 0.91733, p-value = 5.123e-16
Como el p-valor es menor a 0.05, se rechaza la hipótesis nula de normalidad. Por lo tanto, existe evidencia estadÃstica suficiente para concluir que los residuos no siguen una distribución normal. La prueba Shapiro-Wilk coincide con las pruebas Jarque-Bera y Kolmogorov-Smirnov, confirmando que el supuesto de normalidad no se cumple en el modelo.
vif(modelo)
## log(nox) log(dist) rooms stratio
## 3.975625 3.888603 1.218893 1.173037
Todos los valores son menores a 10, por lo que no existe evidencia de multicolinealidad severa entre los regresores del modelo. Además, los valores cercanos a 1 en las variables rooms y stratio indican muy baja correlación lineal con las demás variables explicativas.
ols_eigen_cindex(modelo)
## Eigenvalue Condition Index intercept log(nox) log(dist) rooms
## 1 4.809944153 1.000000 5.902249e-05 1.470187e-04 0.00165221 0.0004323598
## 2 0.167087373 5.365352 1.628759e-04 3.282579e-03 0.20205044 0.0002769576
## 3 0.015707918 17.498898 1.410708e-04 2.790183e-05 0.03094985 0.3380194089
## 4 0.006253606 27.733505 9.830919e-03 2.370110e-01 0.17474479 0.3827047264
## 5 0.001006949 69.114031 9.898061e-01 7.595315e-01 0.59060270 0.2785665473
## stratio
## 1 0.0004907696
## 2 0.0034330618
## 3 0.3397852676
## 4 0.4996029087
## 5 0.1566879923
CI=69.11 Como el Ãndice de condición supera ampliamente el valor crÃtico de 30, existe evidencia de multicolinealidad severa en el modelo. Además, las variables log(nox) y log(dist) presentan proporciones elevadas de varianza en los componentes asociados a Ãndices altos, lo que sugiere que dichas variables están altamente relacionadas linealmente. Sin embargo, aunque existe evidencia de colinealidad según el Ãndice de condición, los valores VIF obtenidos anteriormente no superan 10, por lo que la multicolinealidad no parece afectar gravemente la estabilidad global del modelo.
cor(datos_parcial[,c("nox","dist","rooms","stratio")])
## nox dist rooms stratio
## nox 1.0000000 -0.7702225 -0.3028280 0.1868634
## dist -0.7702225 1.0000000 0.2054095 -0.2292694
## rooms -0.3028280 0.2054095 1.0000000 -0.3540075
## stratio 0.1868634 -0.2292694 -0.3540075 1.0000000
La correlación entre nox y dist es de −0.7702, indicando una relación negativa relativamente alta. La correlación entre rooms y stratio es de −0.3540, mostrando una relación negativa moderada. Las demás correlaciones presentan magnitudes bajas o moderadas.
bptest(modelo)
##
## studentized Breusch-Pagan test
##
## data: modelo
## BP = 69.871, df = 4, p-value = 2.417e-14
bptest(modelo,
~ fitted(modelo) + I(fitted(modelo)^2))
##
## studentized Breusch-Pagan test
##
## data: modelo
## BP = 62.269, df = 2, p-value = 3.009e-14
Ambas pruebas indican incumplimiento del supuesto de homocedasticidad, ya que los errores presentan varianza no constante. Esto implica que los estimadores MCO siguen siendo insesgados, pero dejan de ser eficientes y las inferencias estadÃsticas podrÃan verse afectadas.
bgtest(modelo, order = 1)
##
## Breusch-Godfrey test for serial correlation of order up to 1
##
## data: modelo
## LM test = 220.04, df = 1, p-value < 2.2e-16
bgtest(modelo, order = 2)
##
## Breusch-Godfrey test for serial correlation of order up to 2
##
## data: modelo
## LM test = 227.03, df = 2, p-value < 2.2e-16
Como el p-value es menor a 0.05, se rechaza la hipótesis nula. Por lo tanto, existe evidencia estadÃstica de autocorrelación de primer orden en los residuos del modelo. Como el p-value es menor a 0.05, se rechaza la hipótesis nula. Por lo tanto, existe evidencia estadÃstica de autocorrelación de segundo orden.
hist(residuos,
main = "Histograma de residuos",
col = "skyblue")
qqnorm(residuos)
qqline(residuos, col = "red")
plot(fitted(modelo), residuos)
abline(h = 0, col = "red")