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