library(stargazer)
library(readr)
library(dplyr)
#Pruebas de normalidad.
library(fitdistrplus) #Ajuste de residuos a distribución normal.
library(normtest) #Ejecuta prueba J-B.
library(nortest) #Ejecuta prueba KS.
#Para H y A.
library(lmtest) #Para Prueba de White, y DW.
library(car) #Para prueba DW.
library(tidyr) #Para prueba BG.
library(foreign)
library(sandwich)
datos <- read.dta("F:/DESCARGAS/crime.dta")
modelo_estimado <-lm(crime~pctmetro+pctwhite+pcths+poverty+single,data=datos)
print(modelo_estimado)
##
## Call:
## lm(formula = crime ~ pctmetro + pctwhite + pcths + poverty +
## single, data = datos)
##
## Coefficients:
## (Intercept) pctmetro pctwhite pcths poverty
## -1796.322 7.609 -4.486 8.658 26.250
## single
## 109.452
** Obtener Valores VIF’s con librerias “car” y “mctest”. ** - Con libraria “car”.
library(car)
VIFs_car<-vif(modelo_estimado)
print(VIFs_car)
## pctmetro pctwhite pcths poverty single
## 1.245694 2.088436 2.950683 3.976075 2.872296
modelo_estimado2 <-lm(crime~pctmetro+pctwhite+single,data=datos)
print(modelo_estimado2)
##
## Call:
## lm(formula = crime ~ pctmetro + pctwhite + single, data = datos)
##
## Coefficients:
## (Intercept) pctmetro pctwhite single
## -1055.676 6.571 -4.209 139.484
fit_normal <- fitdist(data = modelo_estimado2$residuals, distr = "norm")
plot(fit_normal)
** Prueba Jarque-Bera con modelo estimado. **
#Ejecutar prueba JB con el comando jb.norm.test()
jb.norm.test(modelo_estimado$residuals)
##
## Jarque-Bera test for normality
##
## data: modelo_estimado$residuals
## JB = 2.2973, p-value = 0.1865
-Interpretación: La prueba de Jarque-Bera utiliza un estadístico de prueba que involucra la curtosis y la asimetría. Intenta resolver si “Los residuos tienen una distribución normal”, esta \(H_{0}\) se rechaza si \(p \leq \alpha\), o \(JB \geq VC\), de lo contrario \(H_{0}\) no se rechaza. (VC de 5%=5.9915) -Respuesta: En este caso \(P_{value}>0.05\) y \(2.2973 < 5.9915\), por lo que los residuos tienen una distribución normal.
** Prueba Jarque-Bera con modelo re-estimado. **
#Ejecutar prueba JB con el comando jb.norm.test()
jb.norm.test(modelo_estimado2$residuals)
##
## Jarque-Bera test for normality
##
## data: modelo_estimado2$residuals
## JB = 0.66848, p-value = 0.671
-Interpretación: La prueba de Jarque-Bera utiliza un estadístico de prueba que involucra la curtosis y la asimetría. Intenta resolver si “Los residuos tienen una distribución normal”, esta \(H_{0}\) se rechaza si \(p \leq \alpha\), o \(JB \geq VC\), de lo contrario \(H_{0}\) no se rechaza. (VC de 5%=5.9915) -Respuesta: En este caso \(P_{value}>0.05\) y \(0.66848 < 5.9915\), por lo que los residuos tienen una distribución normal.
** Prueba de Kolmogorov-Smirnov con modelo estimado. **
#Ejecutar prueba K-S con la corrección de Lilliefors, con el comando lillie.test
lillie.test(modelo_estimado$residuals)
##
## Lilliefors (Kolmogorov-Smirnov) normality test
##
## data: modelo_estimado$residuals
## D = 0.065404, p-value = 0.8468
-Interpretación: En la prueba K-S, la estadística de prueba es la máxima diferencia absoluta entre la función de distribución acumulativa empírica e hipotética. K-S permite verificar la hipótesis de normalidad, si “Los residuos tienen una distribución normal”, esta \(H_{0}\) se rechaza si \(p \leq \alpha\), o \(D \geq VC\), de lo contrario \(H_{0}\) no se rechaza. -Respuesta: En este caso \(P_{value}>0.05\), los residuos si tienen una distribución normal.
** Prueba de Kolmogorov-Smirnov con modelo re-estimado. **
#Ejecutar prueba K-S con la corrección de Lilliefors, con el comando lillie.test
lillie.test(modelo_estimado2$residuals)
##
## Lilliefors (Kolmogorov-Smirnov) normality test
##
## data: modelo_estimado2$residuals
## D = 0.077713, p-value = 0.6185
-Interpretación: En la prueba K-S, la estadística de prueba es la máxima diferencia absoluta entre la función de distribución acumulativa empírica e hipotética. K-S permite verificar la hipótesis de normalidad, si “Los residuos tienen una distribución normal”, esta \(H_{0}\) se rechaza si \(p \leq \alpha\), o \(D \geq VC\), de lo contrario \(H_{0}\) no se rechaza. -Respuesta: En este caso \(P_{value}>0.05\), los residuos si tienen una distribución normal.
** Prueba de Shapiro-Wilk con modelo estimado.**
shapiro.test(modelo_estimado$residuals)
##
## Shapiro-Wilk normality test
##
## data: modelo_estimado$residuals
## W = 0.98127, p-value = 0.594
** Prueba de Shapiro-Wilk con modelo re-estimado.**
shapiro.test(modelo_estimado2$residuals)
##
## Shapiro-Wilk normality test
##
## data: modelo_estimado2$residuals
## W = 0.97997, p-value = 0.5374
Respuesta: En este caso \(P_{value}>0.05\), los residuos si tienen una distribución normal.
Los residuos de las tres pruebas anteriores no se contradicen entre sí, y muestra que el modelo estimado sigue una distribución normal.
Se verificarán los supuestos relacionados para determinar si la matriz de covarinzas del modelo es escalar.
** Prueba de Breusch-Godfrey con libreria “lmtest”. ** - Verificando autocorrelación de orden 2:
bgtest(modelo_estimado, order = 2)
##
## Breusch-Godfrey test for serial correlation of order up to 2
##
## data: modelo_estimado
## LM test = 2.8363, df = 2, p-value = 0.2422
Como \(P_{value}>0.05\) No se rechaza \(H_0\), por lo tanto puede concluirse que los residuos del modelo, no siguen autocorrelación de orden “2”.
bgtest(modelo_estimado, order = 1)
##
## Breusch-Godfrey test for serial correlation of order up to 1
##
## data: modelo_estimado
## LM test = 0.35035, df = 1, p-value = 0.5539
Como \(P_{value}>0.05\) No se rechaza \(H_0\), por lo tanto puede concluirse que los residuos del modelo, no siguen autocorrelación de 1° orden.
Prueba de Breusch Pagan (White):
prueba_white<-bptest(modelo_estimado,~I(pctmetro^2)+I(pctwhite^2)+I(single^2)+pctmetro*pctwhite*single, data=datos)
print(prueba_white)
##
## studentized Breusch-Pagan test
##
## data: modelo_estimado
## BP = 33.463, df = 10, p-value = 0.0002276
Podemos decir que hay evidencia de heterocedasticidad ya que (\(P_{value} < 0.05\)).
#Se usará las librerias "lmtest" y "sandwich".
#Sin corregir:
coeftest(modelo_estimado)
##
## t test of coefficients:
##
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) -1796.3220 668.6139 -2.6866 0.01008 *
## pctmetro 7.6087 1.2951 5.8750 4.786e-07 ***
## pctwhite -4.4865 2.7771 -1.6155 0.11319
## pcths 8.6575 7.8264 1.1062 0.27452
## poverty 26.2497 11.0825 2.3686 0.02221 *
## single 109.4519 20.3540 5.3774 2.594e-06 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
#Corregido:
estimacion_omega<-vcovHC(modelo_estimado2,type = "HC1")
coeftest(modelo_estimado2,vcov. = estimacion_omega)
##
## t test of coefficients:
##
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) -1055.6756 520.3027 -2.0290 0.0481476 *
## pctmetro 6.5709 1.6460 3.9920 0.0002285 ***
## pctwhite -4.2087 3.6531 -1.1521 0.2551093
## single 139.4837 24.0152 5.8081 5.247e-07 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
Los resultados no son estadísticamente significativos.