Ejercicio de pruebas de Normalidad

Importación de datos

library(wooldridge)
data(hprice1)
head(force(hprice1),n=5) #Se muestran las primeras 5 observaciones
##   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

Estimación del modelo

library(stargazer)
modelo_price<-lm(formula = price~lotsize+sqrft+bdrms,data = hprice1)
stargazer(modelo_price,title = "Modelo Price",type = "html")
Modelo Price
Dependent variable:
price
lotsize 0.002***
(0.001)
sqrft 0.123***
(0.013)
bdrms 13.853
(9.010)
Constant -21.770
(29.475)
Observations 88
R2 0.672
Adjusted R2 0.661
Residual Std. Error 59.833 (df = 84)
F Statistic 57.460*** (df = 3; 84)
Note: p<0.1; p<0.05; p<0.01

Verificando supuesto de normalidad con pruebas JB, KS, SW

library(fitdistrplus)
library(fastGraph)
library(normtest)
library(nortest)
options(scipen = 999999)
ajuste_normal<-fitdist(data = modelo_price$residuals, distr = "norm")
plot(ajuste_normal)

summary(ajuste_normal)
## Fitting of the distribution ' norm ' by maximum likelihood 
## Parameters : 
##                       estimate Std. Error
## mean  0.0000000000000009992007   6.231624
## sd   58.4578135693031910591344   4.406424
## Loglikelihood:  -482.8775   AIC:  969.7549   BIC:  974.7096 
## Correlation matrix:
##      mean sd
## mean    1  0
## sd      0  1

Prueba Jarque-Bera

jb.norm.test(modelo_price$residuals)
## 
##  Jarque-Bera test for normality
## 
## data:  modelo_price$residuals
## JB = 32.278, p-value = 0.0005
#Interpretación: Debido a que el p-value es menor que 0.05 hay evidencia para rechazar la hipótesis nula deduciendo que los residuos no siguen una distribución normal.

qqnorm(modelo_price$residuals)
qqline(modelo_price$residuals)

JB-Usando FastGraph

jb.norm.test(modelo_price$residuals)->Prueba_JB
print(Prueba_JB)
## 
##  Jarque-Bera test for normality
## 
## data:  modelo_price$residuals
## JB = 32.278, p-value = 0.001
Mat_X<-model.matrix(modelo_price)
m<-ncol(Mat_X)
gl<-2
VC<-qchisq(0.05,gl,lower.tail = FALSE)
PV<-0.05
JB<-Prueba_JB$statistic
pv<-Prueba_JB$p.value
shadeDist(xshade = JB , ddist = "dchisq", parm1 = gl,lower.tail = FALSE, sub=paste("VC:",VC, "JB:", JB))

shadeDist(xshade = pv , ddist = "dchisq", parm1 = gl,lower.tail = TRUE, sub=paste("PV:",PV, "pv:", pv))

Prueba Kolmogorov-Smirnov

lillie.test(modelo_price$residuals)
## 
##  Lilliefors (Kolmogorov-Smirnov) normality test
## 
## data:  modelo_price$residuals
## D = 0.075439, p-value = 0.2496
#Interpretación: Debido a que el p-value es mayor que 0.05 hay evidencia que los residuos siguen una distribución normal, por lo tanto no se rechaza la hipótesis nula.

Prueba Shapiro-Wilk

shapiro.test(modelo_price$residuals)
## 
##  Shapiro-Wilk normality test
## 
## data:  modelo_price$residuals
## W = 0.94132, p-value = 0.0005937
#Interpretación: A pesar que el estadistico de prueba "W" es menor que el V.C, bajo el enfoque del p-value, este es menor que 0.05, por lo tanto hay evidencia que los residuos no siguen una distribución normal, rechazando la hipotesis nula.

SW-Usando FastGraph

shapiro.test(modelo_price$residuals)->Prueba_SW
print(Prueba_SW)
## 
##  Shapiro-Wilk normality test
## 
## data:  modelo_price$residuals
## W = 0.94132, p-value = 0.0005937
gl<-2
VC_SW<-1.644854 #Tomado de presentación teórica de la prueba SW
W<-Prueba_SW$statistic
pv<-Prueba_JB$p.value
shadeDist(xshade = W , ddist = "dnorm", parm1 = gl,lower.tail = FALSE, sub=paste("VC_SW:",VC_SW, "W:", W))