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
library(wooldridge)
modelo_precio<-lm(formula = price~lotsize+sqrft+bdrms, data=hprice1)
summary(modelo_precio)
##
## Call:
## lm(formula = price ~ lotsize + sqrft + bdrms, data = hprice1)
##
## Residuals:
## Min 1Q Median 3Q Max
## -120.026 -38.530 -6.555 32.323 209.376
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) -2.177e+01 2.948e+01 -0.739 0.46221
## lotsize 2.068e-03 6.421e-04 3.220 0.00182 **
## sqrft 1.228e-01 1.324e-02 9.275 1.66e-14 ***
## bdrms 1.385e+01 9.010e+00 1.537 0.12795
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 59.83 on 84 degrees of freedom
## Multiple R-squared: 0.6724, Adjusted R-squared: 0.6607
## F-statistic: 57.46 on 3 and 84 DF, p-value: < 2.2e-16
library(tseries)
## Registered S3 method overwritten by 'quantmod':
## method from
## as.zoo.data.frame zoo
jb<-jarque.bera.test(modelo_precio$residuals)
jb
##
## Jarque Bera Test
##
## data: modelo_precio$residuals
## X-squared = 32.278, df = 2, p-value = 9.794e-08
library(fastGraph) # Carga la biblioteca 'fastGraph', que proporciona funcionalidades para graficar distribuciones de probabilidad rápidamente.
sig_jb <- 0.05 # Establece el nivel de significancia para la prueba de Jarque-Bera.
JBC <- jb$statistic # Extrae la estadística de la prueba de Jarque-Bera.
gl1 <- jb$parameter # Extrae el número de grados de libertad del modelo.
VC1 <- qchisq(1 - JBC, gl1, lower.tail = TRUE) # Calcula el valor crítico para la prueba de Jarque-Bera.
## Warning in qchisq(1 - JBC, gl1, lower.tail = TRUE): NaNs produced
shadeDist(JBC, ddist = "dchisq", parm1 = gl1, lower.tail = FALSE, xmin = 0,
sub = paste("VC1", round(VC1, 2), " ", "JBC", round(JBC, 2))) # Grafica la distribución de la prueba de Jarque-Bera con sombreado del área crítica.

library(wooldridge) # Carga la biblioteca 'wooldridge', que contiene conjuntos de datos utilizados para ejemplos en libros de econometría.
library(dplyr) # Carga la biblioteca 'dplyr', que proporciona funciones para manipulación de datos.
##
## Attaching package: 'dplyr'
## The following objects are masked from 'package:stats':
##
## filter, lag
## The following objects are masked from 'package:base':
##
## intersect, setdiff, setequal, union
library(gt) # Carga la biblioteca 'gt', que permite crear tablas de presentación de datos.
library(gtExtras) # Carga la biblioteca 'gtExtras', que proporciona funciones adicionales para personalizar las tablas creadas con 'gt'.
modelo_precio <- lm(formula = price ~ lotsize + sqrft + bdrms, data = hprice1) # Ajusta un modelo de regresión lineal con 'price' como variable dependiente y 'lotsize', 'sqrft', y 'bdrms' como variables independientes utilizando los datos en 'hprice1'.
summary(modelo_precio) # Imprime un resumen del modelo ajustado.
##
## Call:
## lm(formula = price ~ lotsize + sqrft + bdrms, data = hprice1)
##
## Residuals:
## Min 1Q Median 3Q Max
## -120.026 -38.530 -6.555 32.323 209.376
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) -2.177e+01 2.948e+01 -0.739 0.46221
## lotsize 2.068e-03 6.421e-04 3.220 0.00182 **
## sqrft 1.228e-01 1.324e-02 9.275 1.66e-14 ***
## bdrms 1.385e+01 9.010e+00 1.537 0.12795
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 59.83 on 84 degrees of freedom
## Multiple R-squared: 0.6724, Adjusted R-squared: 0.6607
## F-statistic: 57.46 on 3 and 84 DF, p-value: < 2.2e-16
residuos <- modelo_precio$residuals # Extrae los residuos del modelo ajustado.
# Convierte los residuos en un tibble y realiza cálculos para la prueba de Kolmogorov-Smirnov.
residuos %>%
as_tibble() %>%
mutate(posicion = row_number()) %>% # Añade una columna 'posicion' que indica la posición de cada residuo.
arrange(value) %>% # Ordena los residuos de menor a mayor.
mutate(dist1 = row_number() / n()) %>% # Calcula la distancia acumulada normalizada para el primer conjunto de datos.
mutate(dist2 = (row_number() - 1) / n()) %>% # Calcula la distancia acumulada normalizada para el segundo conjunto de datos.
mutate(zi = as.vector(scale(value, center = TRUE))) %>% # Normaliza los residuos.
mutate(pi = pnorm(zi, lower.tail = TRUE)) %>% # Calcula las probabilidades acumuladas utilizando la función de distribución normal.
mutate(dif1 = abs(dist1 - pi)) %>% # Calcula la diferencia entre las distancias acumuladas y las probabilidades acumuladas para el primer conjunto de datos.
mutate(dif2 = abs(dist2 - pi)) %>% # Calcula la diferencia entre las distancias acumuladas y las probabilidades acumuladas para el segundo conjunto de datos.
rename(residuales = value) -> tabla_KS # Renombra la columna de residuos como 'residuales' y asigna el resultado a 'tabla_KS'.