Carga de datos.

library(wooldridge)
data("hprice1")

# Mostrar las primeras 5 observaciones

head(force(hprice1),n=5) 
##   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

Estimacion del modelo

library(stargazer)
regresion<- lm(formula = price~lotsize+sqrft+bdrms, data = hprice1)
stargazer(regresion,title = 'modelo estimado', type = 'html')
modelo estimado
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

Pruebas de normalidad de los residuos.

library(fitdistrplus)
ajuste_normal<- fitdist(data = regresion$residuals, distr = 'norm')
plot(ajuste_normal)

A) Prueba de Jarque - Bera (JB)

options(scipen = 999999)
library(normtest)
Prueba_JB<- jb.norm.test(regresion$residuals)
print(Prueba_JB)
## 
##  Jarque-Bera test for normality
## 
## data:  regresion$residuals
## JB = 32.278, p-value = 0.0015

Grafico de prueba JB

JB<- 32.278
gl<-2
VC<- 5.9915
options(scipen = 999999)
library(fastGraph)
shadeDist(xshade= Prueba_JB$statistic,ddist = 'dchisq',parm1 = gl,lower.tail = FALSE,sub=paste('VC:',VC))

Como el JB es mayor que el valor critico, de igual forma el p-value es inferior al nivel de significancia del 5%, se rechaza la hipotesis nula, los residuos no siguen una distribución normal.

B) Prueba de Kolmogorov - Smirnov (KS - lilliefors)

library(nortest)
lillie.test(regresion$residuals)
## 
##  Lilliefors (Kolmogorov-Smirnov) normality test
## 
## data:  regresion$residuals
## D = 0.075439, p-value = 0.2496
VC_KS<- (0.875897)/(sqrt(88))
print(VC_KS)
## [1] 0.09337093

Como el valor D es menor que el Valor critico y de igual manera el p-value es mayor que el nivel de significancia, no se rechaza la hipotesis nula, por lo que los residuos del modelo siguen una distribución normal.

Prueba de Shapiro Wilk

Prueba_SW<- shapiro.test(regresion$residuals)
print(Prueba_SW)
## 
##  Shapiro-Wilk normality test
## 
## data:  regresion$residuals
## W = 0.94132, p-value = 0.0005937
u<-0.0038915*(log(88))^3 - 0.08751*(log(88))^2 - 0.31082*log(88) - 1.5861
sigma<- exp(0.0030302*(log(88))^2 - 0.082676*log(88) - 0.4803)
Wn<- (log(1-0.94132) - u)/(sigma)
VC_SW<- 1.644854
media_res<- ajuste_normal$estimate[1]

Grafico de prueba shapiro wilk

library(fastGraph)
shadeDist(VC_SW, ddist = "dnorm",parm1 = media_res,lower.tail = FALSE,sub=paste('Wn:',Wn,'VC_SW:',VC_SW))

El p-value es más bajo que el nivel de significancia del 5% de igual manera el Wn es mayor que el Valor critico, por lo tanto se rechaza la hipotesis nula y los residuos no siguen una distribución normal