Guia 3: Pruebas de Normalidad para los Residuos

Bárbara Elizabeth Mejía González

27 de Abril de 2019

Especificaciones.

library(readr)
library(dplyr)
library(fitdistrplus)
library(stargazer)
library(normtest) #Carga los comandos para las pruebas de nomalidad.
library(nortest) #Carga los comandos para las pruebas de normalidad.

Ejercicio 1:

ejem_regre <- read.csv("F:/DESCARGAS/2ejercicio.csv")
head(ejem_regre,6)
##     X1   X2    Y
## 1 3.92 7298 0.75
## 2 3.61 6855 0.71
## 3 3.32 6636 0.66
## 4 3.07 6506 0.61
## 5 3.06 6450 0.70
## 6 3.11 6402 0.72

Estimando el modelo

options(scipen = 9999)
modelo_lineal <- lm(formula = Y~X1+X2, data = ejem_regre)
stargazer(modelo_lineal, title = "Ejemplo de Regresión Múltiple", type = "text", digits = 8)
## 
## Ejemplo de Regresión Múltiple
## ===============================================
##                         Dependent variable:    
##                     ---------------------------
##                                  Y             
## -----------------------------------------------
## X1                         0.23936760***       
##                            (0.05609960)        
##                                                
## X2                        -0.00025112***       
##                            (0.00003236)        
##                                                
## Constant                   1.57048800***       
##                            (0.08016799)        
##                                                
## -----------------------------------------------
## Observations                    25             
## R2                          0.86475760         
## Adjusted R2                 0.85246280         
## Residual Std. Error    0.05382050 (df = 22)    
## F Statistic         70.33543000*** (df = 2; 22)
## ===============================================
## Note:               *p<0.1; **p<0.05; ***p<0.01

Ajuste de los residuos.

Verificando el ajuste de los residuos a la distribución normal.

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

summary(fit_normal)
## Fitting of the distribution ' norm ' by maximum likelihood 
## Parameters : 
##                        estimate  Std. Error
## mean 0.000000000000000005828942 0.010097621
## sd   0.050488107070404200649172 0.007127496
## Loglikelihood:  39.17697   AIC:  -74.35395   BIC:  -71.9162 
## Correlation matrix:
##                       mean                    sd
## mean 1.0000000000000000000 0.0000000000001278457
## sd   0.0000000000001278457 1.0000000000000000000

Prueba de Normalidad de Jarque-Bera.

jb.norm.test(modelo_lineal$residuals) #Ejecuta la prueba de Jarque-Bera.
## 
##  Jarque-Bera test for normality
## 
## data:  modelo_lineal$residuals
## JB = 0.97355, p-value = 0.4735

Nomal Q-Q Plot.

qqnorm(modelo_lineal$residuals)
qqline(modelo_lineal$residuals)

Histograma de los Residuos.

hist(modelo_lineal$residuals,main = "Histograma de los residuos",xlab = "Residuos", ylab = "Frecuencia")

Prueba de Normalidad Kolmogorov-Smirnov.

lillie.test(modelo_lineal$residuals) #Ejecuta la prueba KS, con la correción de Lilliefors.
## 
##  Lilliefors (Kolmogorov-Smirnov) normality test
## 
## data:  modelo_lineal$residuals
## D = 0.084059, p-value = 0.9201

Nomal Q-Q Plot.

qqnorm(modelo_lineal$residuals)
qqline(modelo_lineal$residuals)

Histograma de los Residuos.

hist(modelo_lineal$residuals,main = "Histograma de los residuos",xlab = "Residuos",ylab = "frecuencia") 

Prueba de Normalidad de Shapiro-Wilk.

shapiro.test(modelo_lineal$residuals)
## 
##  Shapiro-Wilk normality test
## 
## data:  modelo_lineal$residuals
## W = 0.96686, p-value = 0.5669

Ejercicio 2:

ejem_regre <- read_csv("F:/DESCARGAS/Ejercicio_tarea.csv")
## Parsed with column specification:
## cols(
##   Y = col_double(),
##   X1 = col_double(),
##   X2 = col_double()
## )
head(ejem_regre, 6)
## # A tibble: 6 x 3
##       Y    X1    X2
##   <dbl> <dbl> <dbl>
## 1   320    50   7.4
## 2   450    53   5.1
## 3   370    60   4.2
## 4   470    63   3.9
## 5   420    69   1.4
## 6   500    82   2.2

Estimando el modelo

options(scipen = 9999)
modelo_lineal <- lm(formula = Y~X1+X2+(X1*X2), data = ejem_regre)
stargazer(modelo_lineal, title = "Ejemplo de Regresión Múltiple", type = "text", digits = 8)
## 
## Ejemplo de Regresión Múltiple
## ================================================
##                         Dependent variable:     
##                     ----------------------------
##                                  Y              
## ------------------------------------------------
## X1                         2.32927500***        
##                             (0.47698220)        
##                                                 
## X2                         -25.07113000**       
##                            (11.48487000)        
##                                                 
## X1:X2                      0.28616860***        
##                             (0.07681293)        
##                                                 
## Constant                  303.50400000***       
##                            (71.54695000)        
##                                                 
## ------------------------------------------------
## Observations                     20             
## R2                           0.96341370         
## Adjusted R2                  0.95655370         
## Residual Std. Error    67.67775000 (df = 16)    
## F Statistic         140.44060000*** (df = 3; 16)
## ================================================
## Note:                *p<0.1; **p<0.05; ***p<0.01

Ajuste de los residuos.

Verificando el ajuste de los residuos a la distribución normal.

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

summary(fit_normal)
## Fitting of the distribution ' norm ' by maximum likelihood 
## Parameters : 
##                       estimate Std. Error
## mean -0.0000000000000004440892  13.535551
## sd   60.5328216633827125292555   9.571082
## Loglikelihood:  -110.4425   AIC:  224.885   BIC:  226.8764 
## Correlation matrix:
##      mean sd
## mean    1  0
## sd      0  1

Prueba de Normalidad de Jarque-Bera.

jb.norm.test(modelo_lineal$residuals) #Ejecuta la prueba de Jarque-Bera.
## 
##  Jarque-Bera test for normality
## 
## data:  modelo_lineal$residuals
## JB = 0.58681, p-value = 0.6695

Nomal Q-Q Plot.

qqnorm(modelo_lineal$residuals)
qqline(modelo_lineal$residuals)

Histograma de los Residuos.

hist(modelo_lineal$residuals,main = "Histograma de los residuos",xlab = "Residuos", ylab = "Frecuencia")

Prueba de Normalidad Kolmogorov-Smirnov.

lillie.test(modelo_lineal$residuals) #Ejecuta la prueba KS, con la correción de Lilliefors.
## 
##  Lilliefors (Kolmogorov-Smirnov) normality test
## 
## data:  modelo_lineal$residuals
## D = 0.14222, p-value = 0.3594

Nomal Q-Q Plot.

qqnorm(modelo_lineal$residuals)
qqline(modelo_lineal$residuals)

Histograma de los Residuos.

hist(modelo_lineal$residuals,main = "Histograma de los residuos",xlab = "Residuos",ylab = "frecuencia") 

Prueba de Normalidad de Shapiro-Wilk.

shapiro.test(modelo_lineal$residuals)
## 
##  Shapiro-Wilk normality test
## 
## data:  modelo_lineal$residuals
## W = 0.95957, p-value = 0.5352