Carga

library(wooldridge)
data(hprice1)
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

Estimación

library(stargazer)
modelo_hrpice <- lm(formula = price ~ lotsize + sqrft + bdrms, data = hprice1)
stargazer(modelo_hrpice, title = "precios", type = "text", digits = 5)
## 
## precios
## ===============================================
##                         Dependent variable:    
##                     ---------------------------
##                                price           
## -----------------------------------------------
## lotsize                     0.00207***         
##                              (0.00064)         
##                                                
## sqrft                       0.12278***         
##                              (0.01324)         
##                                                
## bdrms                        13.85252          
##                              (9.01015)         
##                                                
## Constant                     -21.77031         
##                             (29.47504)         
##                                                
## -----------------------------------------------
## Observations                    88             
## R2                            0.67236          
## Adjusted R2                   0.66066          
## Residual Std. Error     59.83348 (df = 84)     
## F Statistic          57.46023*** (df = 3; 84)  
## ===============================================
## Note:               *p<0.1; **p<0.05; ***p<0.01

Prueba JB

library(dplyr)
library(moments)
residuos_JB <- residuals(modelo_hrpice)
# Cálculo de la asimetría
asimetria_JB <- skewness(residuos_JB)
# Cálculo de la curtosis
curtosis_JB <- kurtosis(residuos_JB)
# Cálculo de la Prueba de Jarque-Bera
n_JB <- length(residuos_JB)
prueba_JB <- n_JB*(asimetria_JB^2)/6 + (curtosis_JB-3)^2/24
# Cálculo del p-value
p_value_JB <- 1 - pchisq(prueba_JB, df = 2)
# Tabla de Jarque-Bera
tabla_JB <- data.frame(Estadístico = c("Asimetria", "Curtosis", "Jarque-Bera", "p-value"),
                         Valor = c(asimetria_JB, curtosis_JB, prueba_JB, p_value_JB))
print(tabla_JB)
##   Estadístico        Valor
## 1   Asimetria  0.960683306
## 2    Curtosis  5.260844320
## 3 Jarque-Bera 13.749024443
## 4     p-value  0.001033802

Prueba JB Gráfico

library(fastGraph)
# Calcula los residuos estandarizados
residuos_JB_graph <- scale(modelo_hrpice$residuals)
# Gráfico de la distribución de los residuos
hist(residuos_JB_graph, freq = FALSE, main = "Distribucion de los residuos estandarizados", xlab = "Residuos estandarizados")
# Añade una curva de la distribución normal para comparar
curve(dnorm(x, mean=mean(residuos_JB_graph), sd=sd(residuos_JB_graph)), add=TRUE, col="blue", lwd=2)

Prueba KS

library(dplyr)
library(ks)
residuos_KS <- residuals(modelo_hrpice)
# Calculamos la prueba Kolmogorov - Smirnov
prueba_KS <- ks.test(residuos_KS, "pnorm", mean(residuos_KS), sd(residuos_KS))
# Creación de la tabla
tabla_KS <- tibble('Estadístico de prueba' = prueba_KS$statistic, 'Valor p' = prueba_KS$p.value)
print(tabla_KS)
## # A tibble: 1 × 2
##   `Estadístico de prueba` `Valor p`
##                     <dbl>     <dbl>
## 1                  0.0754     0.670

Prueba SW

library(dplyr)
# Calculamos los residuos
residuos_SW <- residuals(modelo_hrpice)
# Cálculo de la Prueba de Shapiro-Wilk
prueba_SW <- shapiro.test(residuos_SW)
# Creación de la tabla
tabla_SW <- tibble('Estadístico de prueba' = prueba_SW$statistic, 'Valor p' = prueba_SW$p.value)
print(tabla_SW)
## # A tibble: 1 × 2
##   `Estadístico de prueba` `Valor p`
##                     <dbl>     <dbl>
## 1                   0.941  0.000594

Prueba SW Gráfico

library(fastGraph)
# Calcula los residuos estandarizados
residuos_SW_graph <- scale(modelo_hrpice$residuals)
# Gráfico de la distribución de los residuos
hist(residuos_SW_graph, freq = FALSE, main = "Distribucion de los residuos estandarizados", xlab = "Residuos estandarizados")
# Añade una curva de la distribución normal para comparar
curve(dnorm(x, mean=mean(residuos_SW_graph), sd=sd(residuos_SW_graph)), add=TRUE, col="blue", lwd=2)