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)
