Librerias.

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.

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

Modelo matemático.

Modelo econométrico.

Estimación de modelo econométrico y sus resultados en formato APA.

Verificar multicolinealidad.

** 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

Reestimación del modelo.

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” de los residuos.

fit_normal <- fitdist(data = modelo_estimado2$residuals, distr = "norm")
plot(fit_normal)

Verificar Normalidad.

** 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

Verificar supuestos relacionados a la matriz de covarianza (Autocorrelación).

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\)).

Estimación Robusta.

#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.