library(wooldridge) #Carga el paquete de datos
data(hprice1) #Carga el dataframe del paquete de datos
head(force(hprice1),n=5) #Muestra 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
Formula del modelo:
\[ price=\beta_0+\beta_1 (lotsize)+\beta_2 (sqrtft)+\beta_3 (bdrms)+ \varepsilon \]
options(scipen = 9999) # Establece la forma en que R muestra los números en notación científica.
modelo_normalidad <- lm(price ~ lotsize + sqrft + bdrms, data = hprice1) # Ajusta un modelo de regresión lineal donde 'price' es la variable dependiente y 'lotsize', 'sqrft' y 'bdrms'
stargazer(modelo_normalidad, title = "Modelo ejemplo", type = "text") # Genera una tabla de resumen del modelo 'modelo_normalidad' utilizando el paquete stargazer.##
## Modelo ejemplo
## ===============================================
## 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
Segun la estimacion del modelo se puede observar que dos de las 4 variables explicativas tienen una significancia del 0.01 y que el modelo en si es estadiscamente significativo al observar la prueba F hay evidencia para poder rechar la hipotesis nula y se concluye que hay una relacion lineal entre la variable a explicar y las variables explicativas.
La prueba Jarque Bera, utiliza un estadístico en prueba que involucra la curtosis y la asimetría
Regla de decisión:
| Rechazar Ho si | No rechazar Ho si |
|---|---|
| JB ≥ V.C. | JB < V.C. |
| p-value ≤ \(\alpha\) | p-value > \(\alpha\) |
library(tseries) # Carga el paquete 'tseries', que proporciona funciones para el análisis de series de tiempo.
prueba_JB <- jarque.bera.test(modelo_normalidad$residuals) # Realiza la prueba de Jarque-Bera sobre los residuos del modelo de regresión 'modelo_normalidad' y guarda los resultados en la variable 'prueba_JB'.
prueba_JB # Muestra los resultados de la prueba de Jarque-Bera.##
## Jarque Bera Test
##
## data: modelo_normalidad$residuals
## X-squared = 32.278, df = 2, p-value = 0.00000009794
Grafica de la prueba de normalidad de Jarque Bera
library(fastGraph) # Carga el paquete 'fastGraph', que proporciona funciones para la visualización rápida de gráficos.
alpha_sig <- 0.05 # Define el nivel de significancia alpha como 0.05.
JB <- prueba_JB$statistic # Extrae la estadística de prueba de la prueba de Jarque-Bera y la guarda en la variable 'JB'.
gl <- prueba_JB$parameter # Extrae los grados de libertad de la prueba de Jarque-Bera y los guarda en la variable 'gl'.
VC <- qchisq(1-alpha_sig, gl, lower.tail = TRUE) # Calcula el valor crítico para la distribución chi-cuadrado con los grados de libertad y el nivel de significancia especificados, y lo guarda en la variable 'VC'.
shadeDist(JB, ddist = "dchisq",
parm1 = gl,
sub = paste("VC:", round(VC, 2), " ", "JB:", round(JB, 2)),
main = "Prueba de Jarque Bera") # Genera un gráfico de la distribución chi-cuadrado con sombreado para resaltar el área crítica. Muestra la estadística de prueba 'JB', el valor crítico 'VC' y el título del gráfico como "Prueba de Jarque Bera".Interpretación: Se puede concluir con los datos de la prueba calculados que se rechaza la hipotesis nula ya que el valor crítico de 5.99 es menor al estadístico de JB de 32.28, además el p-value es menor que el nivel de significancia, por ello, se puede determinar que existe evidencia para decir que los residuos no tienen una distribucion normal.
Es una prueba general para verificar si una variable sigue una determinada distribución de probabilidad , de tal forma que permite verificar la hipótesis de normalidad.
En este punto se desarrolla la prueba de normalidad haciendo el calculo manual
Regla de decisión:
| Rechazar Ho si | No rechazar Ho si |
|---|---|
| D ≥ V.C. | D < V.C. |
| p-value ≤ \(\alpha\) | p-value > \(\alpha\) |
library(dplyr) # Carga la librería dplyr para manipulación de datos
library(gt) # Carga la librería gt para crear tablas de datos
library(gtExtras) # Carga la librería gtExtras para agregar funcionalidades a las tablas creadas con gt
residuos<-modelo_normalidad$residuals # Crea un vector con los residuos del modelo estimado
residuos %>% # Utiliza el operador %>% para encadenar las operaciones siguientes al vector residuos
as_tibble() %>% # Convierte el vector residuos en una tibble (tabla) de una columna
mutate(posicion=row_number()) %>% # Agrega una columna llamada "posicion" con el número de fila
arrange(value) %>% # Ordena la tabla por los valores de residuos en orden ascendente
mutate(dist1=row_number()/n()) %>% # Agrega una columna "dist1" con los percentiles según su posición en la tabla (usando la función row_number() y n() para obtener el número de filas)
mutate(dist2=(row_number()-1)/n()) %>% # Agrega una columna "dist2" con los percentiles según su posición en la tabla, pero ajustando en una unidad para evitar problemas con los extremos de la distribución
mutate(zi=as.vector(scale(value,center=TRUE))) %>% # Agrega una columna "zi" con los valores de residuos escalados para tener media cero y varianza uno
mutate(pi=pnorm(zi,lower.tail = TRUE)) %>% # Agrega una columna "pi" con los valores de la función de distribución acumulada (CDF) de una distribución normal estándar evaluada en los valores de zi
mutate(dif1=abs(dist1-pi)) %>% # Agrega una columna "dif1" con las diferencias absolutas entre los percentiles según la posición y los valores de pi
mutate(dif2=abs(dist2-pi)) %>% # Agrega una columna "dif2" con las diferencias absolutas entre los percentiles ajustados según la posición y los valores de pi
rename(residuales=value) -> tabla_KS # Renombra la columna "value" como "residuales" y asigna la tabla resultante a la variable tabla_KS
#Formato
tabla_KS %>% # Utiliza el operador %>% para encadenar las operaciones siguientes a la tabla tabla_KS
gt() %>% # Crea una tabla con la función gt()
tab_header("Tabla para calcular el Estadistico KS") %>% # Agrega un encabezado a la tabla
tab_source_note(source_note = "Fuente: Elaboración propia") %>% # Agrega una nota de fuente a la tabla
tab_style( # Cambia el estilo de algunas celdas de la tabla
style = list(
cell_fill(color = "#A569BD"), # Cambia el color de fondo de las celdas a un tono de morado
cell_text(style = "italic") # Cambia el estilo de texto de las celdas a itálico
),
locations = cells_body( # Aplica el estilo a las celdas del cuerpo de la tabla que cumplan las siguientes condiciones:
columns = dif1, # Que pertenezcan a la columna "dif1"
rows = dif1==max(dif1) # Que pertenezcan a la fila donde el valor de "dif1" es máximo
)) %>%
tab_style( # Cambia el estilo de algunas celdas de la tabla
style = list(
cell_fill(color = "#3498DB"), # Cambia el color de fondo de las celdas a un tono de azul
cell_text(style = "italic") # Cambia el estilo de texto de las celdas a itálico
),
locations = cells_body( # Aplica el estilo a las celdas del cuerpo de la tabla que cumplan las siguientes condiciones:
columns = dif2, # Que pertenezcan a la columna "dif2"
rows = dif2==max(dif2) # Que pertenezcan a la fila donde el valor de "dif2" es máximo
))| Tabla para calcular el Estadistico KS | |||||||
| residuales | posicion | dist1 | dist2 | zi | pi | dif1 | dif2 |
|---|---|---|---|---|---|---|---|
| -120.026447 | 81 | 0.01136364 | 0.00000000 | -2.041515459 | 0.02059981 | 0.0092361731 | 0.0205998094 |
| -115.508697 | 77 | 0.02272727 | 0.01136364 | -1.964673586 | 0.02472601 | 0.0019987418 | 0.0133623781 |
| -107.080889 | 24 | 0.03409091 | 0.02272727 | -1.821326006 | 0.03427866 | 0.0001877487 | 0.0115513850 |
| -91.243980 | 48 | 0.04545455 | 0.03409091 | -1.551957925 | 0.06033615 | 0.0148816002 | 0.0262452366 |
| -85.461169 | 12 | 0.05681818 | 0.04545455 | -1.453598781 | 0.07302879 | 0.0162106057 | 0.0275742421 |
| -77.172687 | 32 | 0.06818182 | 0.05681818 | -1.312620980 | 0.09465535 | 0.0264735301 | 0.0378371665 |
| -74.702719 | 54 | 0.07954545 | 0.06818182 | -1.270609602 | 0.10193378 | 0.0223883300 | 0.0337519664 |
| -65.502849 | 39 | 0.09090909 | 0.07954545 | -1.114130117 | 0.13261169 | 0.0417025941 | 0.0530662305 |
| -63.699108 | 69 | 0.10227273 | 0.09090909 | -1.083450505 | 0.13930425 | 0.0370315271 | 0.0483951634 |
| -62.566594 | 83 | 0.11363636 | 0.10227273 | -1.064187703 | 0.14362184 | 0.0299854747 | 0.0413491110 |
| -59.845223 | 36 | 0.12500000 | 0.11363636 | -1.017900230 | 0.15436269 | 0.0293626861 | 0.0407263225 |
| -54.466158 | 13 | 0.13636364 | 0.12500000 | -0.926408352 | 0.17711690 | 0.0407532663 | 0.0521169027 |
| -54.300415 | 14 | 0.14772727 | 0.13636364 | -0.923589260 | 0.17785010 | 0.0301228311 | 0.0414864675 |
| -52.129801 | 15 | 0.15909091 | 0.14772727 | -0.886669532 | 0.18762842 | 0.0285375141 | 0.0399011505 |
| -51.441108 | 17 | 0.17045455 | 0.15909091 | -0.874955638 | 0.19079902 | 0.0203444766 | 0.0317081129 |
| -48.704980 | 47 | 0.18181818 | 0.17045455 | -0.828417174 | 0.20371714 | 0.0218989601 | 0.0332625965 |
| -48.350295 | 29 | 0.19318182 | 0.18181818 | -0.822384375 | 0.20542908 | 0.0122472664 | 0.0236109028 |
| -47.855859 | 11 | 0.20454545 | 0.19318182 | -0.813974573 | 0.20782976 | 0.0032843043 | 0.0146479407 |
| -45.639765 | 1 | 0.21590909 | 0.20454545 | -0.776281294 | 0.21879146 | 0.0028823668 | 0.0142460032 |
| -43.142550 | 9 | 0.22727273 | 0.21590909 | -0.733806463 | 0.23153335 | 0.0042606233 | 0.0156242596 |
| -41.749618 | 57 | 0.23863636 | 0.22727273 | -0.710114247 | 0.23881665 | 0.0001802823 | 0.0115439187 |
| -40.869022 | 27 | 0.25000000 | 0.23863636 | -0.695136302 | 0.24348494 | 0.0065150566 | 0.0048485798 |
| -37.749811 | 34 | 0.26136364 | 0.25000000 | -0.642082009 | 0.26040997 | 0.0009536682 | 0.0104099682 |
| -36.663785 | 71 | 0.27272727 | 0.26136364 | -0.623609925 | 0.26644190 | 0.0062853771 | 0.0050782592 |
| -36.646568 | 79 | 0.28409091 | 0.27272727 | -0.623317083 | 0.26653809 | 0.0175528221 | 0.0061891857 |
| -33.801248 | 37 | 0.29545455 | 0.28409091 | -0.574921384 | 0.28267223 | 0.0127823120 | 0.0014186757 |
| -29.766931 | 16 | 0.30681818 | 0.29545455 | -0.506302171 | 0.30632227 | 0.0004959124 | 0.0108677240 |
| -26.696234 | 22 | 0.31818182 | 0.30681818 | -0.454073044 | 0.32488813 | 0.0067063089 | 0.0180699452 |
| -24.271531 | 23 | 0.32954545 | 0.31818182 | -0.412831567 | 0.33986501 | 0.0103195566 | 0.0216831929 |
| -23.651448 | 86 | 0.34090909 | 0.32954545 | -0.402284648 | 0.34373728 | 0.0028281851 | 0.0141918214 |
| -19.683427 | 88 | 0.35227273 | 0.34090909 | -0.334793052 | 0.36889060 | 0.0166178738 | 0.0279815102 |
| -17.817835 | 10 | 0.36363636 | 0.35227273 | -0.303061413 | 0.38092153 | 0.0172851663 | 0.0286488027 |
| -16.762094 | 60 | 0.37500000 | 0.36363636 | -0.285104441 | 0.38778206 | 0.0127820638 | 0.0241457002 |
| -16.596960 | 21 | 0.38636364 | 0.37500000 | -0.282295711 | 0.38885839 | 0.0024947507 | 0.0138583870 |
| -16.271207 | 58 | 0.39772727 | 0.38636364 | -0.276755010 | 0.39098411 | 0.0067431583 | 0.0046204781 |
| -13.815798 | 56 | 0.40909091 | 0.39772727 | -0.234991254 | 0.40710776 | 0.0019831485 | 0.0093804879 |
| -13.462160 | 75 | 0.42045455 | 0.40909091 | -0.228976273 | 0.40944368 | 0.0110108666 | 0.0003527698 |
| -12.081520 | 4 | 0.43181818 | 0.42045455 | -0.205493119 | 0.41859344 | 0.0132247451 | 0.0018611087 |
| -11.629207 | 51 | 0.44318182 | 0.43181818 | -0.197799788 | 0.42160086 | 0.0215809622 | 0.0102173258 |
| -11.312669 | 74 | 0.45454545 | 0.44318182 | -0.192415834 | 0.42370825 | 0.0308372092 | 0.0194735728 |
| -8.236558 | 3 | 0.46590909 | 0.45454545 | -0.140094626 | 0.44429261 | 0.0216164775 | 0.0102528411 |
| -7.662789 | 70 | 0.47727273 | 0.46590909 | -0.130335452 | 0.44815052 | 0.0291222111 | 0.0177585748 |
| -6.752801 | 67 | 0.48863636 | 0.47727273 | -0.114857588 | 0.45427900 | 0.0343573625 | 0.0229937262 |
| -6.707262 | 31 | 0.50000000 | 0.48863636 | -0.114083016 | 0.45458599 | 0.0454140074 | 0.0340503710 |
| -6.402439 | 85 | 0.51136364 | 0.50000000 | -0.108898313 | 0.45664157 | 0.0547220642 | 0.0433584278 |
| -5.446904 | 82 | 0.52272727 | 0.51136364 | -0.092645733 | 0.46309251 | 0.0596347676 | 0.0482711313 |
| -3.537785 | 43 | 0.53409091 | 0.52272727 | -0.060173762 | 0.47600862 | 0.0580822876 | 0.0467186512 |
| -2.824941 | 61 | 0.54545455 | 0.53409091 | -0.048049090 | 0.48083856 | 0.0646159857 | 0.0532523493 |
| -2.745208 | 68 | 0.55681818 | 0.54545455 | -0.046692922 | 0.48137899 | 0.0754391961 | 0.0640755598 |
| -0.195089 | 65 | 0.56818182 | 0.55681818 | -0.003318245 | 0.49867621 | 0.0695056040 | 0.0581419676 |
| 1.399296 | 55 | 0.57954545 | 0.56818182 | 0.023800450 | 0.50949411 | 0.0700513452 | 0.0586877088 |
| 5.363331 | 26 | 0.59090909 | 0.57954545 | 0.091224254 | 0.53634280 | 0.0545662924 | 0.0432026561 |
| 6.700640 | 53 | 0.60227273 | 0.59090909 | 0.113970383 | 0.54536936 | 0.0569033628 | 0.0455397265 |
| 7.386314 | 80 | 0.61363636 | 0.60227273 | 0.125632935 | 0.54998875 | 0.0636476093 | 0.0522839730 |
| 9.099900 | 41 | 0.62500000 | 0.61363636 | 0.154779103 | 0.56150227 | 0.0634977329 | 0.0521340965 |
| 12.433611 | 46 | 0.63636364 | 0.62500000 | 0.211481796 | 0.58374433 | 0.0526193043 | 0.0412556680 |
| 16.718018 | 62 | 0.64772727 | 0.63636364 | 0.284354766 | 0.61193074 | 0.0357965328 | 0.0244328965 |
| 18.093192 | 5 | 0.65909091 | 0.64772727 | 0.307744934 | 0.62086179 | 0.0382291219 | 0.0268654856 |
| 18.801816 | 38 | 0.67045455 | 0.65909091 | 0.319797835 | 0.62543921 | 0.0450153400 | 0.0336517036 |
| 19.168108 | 33 | 0.68181818 | 0.67045455 | 0.326028052 | 0.62779843 | 0.0540197476 | 0.0426561112 |
| 19.219211 | 72 | 0.69318182 | 0.68181818 | 0.326897255 | 0.62812720 | 0.0650546167 | 0.0536909803 |
| 20.334434 | 59 | 0.70454545 | 0.69318182 | 0.345865960 | 0.63527827 | 0.0692671805 | 0.0579035442 |
| 24.909926 | 78 | 0.71590909 | 0.70454545 | 0.423689939 | 0.66410402 | 0.0518050676 | 0.0404414312 |
| 26.236229 | 40 | 0.72727273 | 0.71590909 | 0.446248874 | 0.67229126 | 0.0549814685 | 0.0436178321 |
| 30.924022 | 25 | 0.73863636 | 0.72727273 | 0.525982978 | 0.70054998 | 0.0380863808 | 0.0267227444 |
| 32.253952 | 45 | 0.75000000 | 0.73863636 | 0.548603608 | 0.70836125 | 0.0416387548 | 0.0302751184 |
| 32.529367 | 49 | 0.76136364 | 0.75000000 | 0.553288104 | 0.70996693 | 0.0513967091 | 0.0400330727 |
| 32.675968 | 18 | 0.77272727 | 0.76136364 | 0.555781630 | 0.71081993 | 0.0619073452 | 0.0505437088 |
| 33.275839 | 20 | 0.78409091 | 0.77272727 | 0.565984762 | 0.71429793 | 0.0697929786 | 0.0584293423 |
| 36.031430 | 52 | 0.79545455 | 0.78409091 | 0.612854281 | 0.73001365 | 0.0654408934 | 0.0540772571 |
| 37.147186 | 84 | 0.80681818 | 0.79545455 | 0.631832029 | 0.73625168 | 0.0705665028 | 0.0592028664 |
| 40.320875 | 7 | 0.81818182 | 0.80681818 | 0.685812928 | 0.75358446 | 0.0645973596 | 0.0532337232 |
| 44.334467 | 30 | 0.82954545 | 0.81818182 | 0.754079634 | 0.77459930 | 0.0549461574 | 0.0435825211 |
| 46.907165 | 28 | 0.84090909 | 0.82954545 | 0.797838357 | 0.78751785 | 0.0533912405 | 0.0420276041 |
| 54.418366 | 87 | 0.85227273 | 0.84090909 | 0.925595465 | 0.82267187 | 0.0296008528 | 0.0182372164 |
| 55.091131 | 35 | 0.86363636 | 0.85227273 | 0.937038450 | 0.82563061 | 0.0380057535 | 0.0266421172 |
| 55.470305 | 44 | 0.87500000 | 0.86363636 | 0.943487765 | 0.82728426 | 0.0477157353 | 0.0363520989 |
| 62.939597 | 6 | 0.88636364 | 0.87500000 | 1.070532059 | 0.85781006 | 0.0285535797 | 0.0171899433 |
| 66.478628 | 50 | 0.89772727 | 0.88636364 | 1.130727018 | 0.87091500 | 0.0268122757 | 0.0154486394 |
| 67.426518 | 63 | 0.90909091 | 0.89772727 | 1.146849569 | 0.87427810 | 0.0348128083 | 0.0234491719 |
| 67.603959 | 19 | 0.92045455 | 0.90909091 | 1.149867648 | 0.87490081 | 0.0455537393 | 0.0341901029 |
| 69.707122 | 64 | 0.93181818 | 0.92045455 | 1.185640095 | 0.88211777 | 0.0497004123 | 0.0383367759 |
| 69.843246 | 8 | 0.94318182 | 0.93181818 | 1.187955411 | 0.88257451 | 0.0606073068 | 0.0492436705 |
| 74.848732 | 2 | 0.95454545 | 0.94318182 | 1.273093116 | 0.89850750 | 0.0560379553 | 0.0446743189 |
| 112.729191 | 66 | 0.96590909 | 0.95454545 | 1.917397313 | 0.97240626 | 0.0064971714 | 0.0178608078 |
| 163.795081 | 73 | 0.97727273 | 0.96590909 | 2.785970904 | 0.99733162 | 0.0200588896 | 0.0314225260 |
| 198.660139 | 42 | 0.98863636 | 0.97727273 | 3.378986513 | 0.99963623 | 0.0109998685 | 0.0223635048 |
| 209.375830 | 76 | 1.00000000 | 0.98863636 | 3.561248407 | 0.99981545 | 0.0001845478 | 0.0111790885 |
| Fuente: Elaboración propia | |||||||
Interpretacion:A través del resultado de la prueba se interpreta que el p-value es mayor al nivel de significancia, por lo que, se puede decir que hay evidencia para no rechazar la hipótesis nula y determinar que los residuos del modelo siguen una distribución normal.
En este punto se hara la prueba de Kolmogorov Smirnov solo que mediante el uso de la libreria para facilitar el calculo de la prueba.
Regla de decisión:
| Rechazar Ho si | No rechazar Ho si |
|---|---|
| D ≥ V.C. | D < V.C. |
| p-value ≤ \(\alpha\) | p-value > \(\alpha\) |
library(nortest) # Carga el paquete 'nortest', que proporciona funciones para realizar pruebas de normalidad.
prueba_KS <- lillie.test(modelo_normalidad$residuals) # Realiza la prueba de normalidad de Lilliefors sobre los residuos del modelo de regresión 'modelo_normalidad' y guarda los resultados en la variable 'prueba_KS'.
prueba_KS # Muestra los resultados de la prueba de normalidad de Lilliefors.##
## Lilliefors (Kolmogorov-Smirnov) normality test
##
## data: modelo_normalidad$residuals
## D = 0.075439, p-value = 0.2496
Interpretacion:A través del resultado de la prueba se interpreta que el p-value es mayor al nivel de significancia, por lo que, se puede decir que hay evidencia para no rechazar la hipótesis nula y determinar que los residuos del modelo siguen una distribución normal.
La prueba esta diseñada específicamente para realizar el contraste de normalidad para una variable.
Esta es una prueba de normalidad, a diferencia de la prueba KS, que puede ser usada para verificar otras distribuciones.
En este punto se desarrollara la prueba de normalidad pero haciendo el calculo de manera manual.
Regla de decisión:
| Rechazar Ho si | No rechazar Ho si |
|---|---|
| Wn ≥ V.C. | Wn < V.C. |
| p-value ≤ \(\alpha\) | p-value > \(\alpha\) |
library(dplyr) # Carga el paquete 'dplyr', que proporciona una gramática de manipulación de datos para facilitar el manejo de los datos.
library(gt) # Carga el paquete 'gt', que proporciona una forma flexible de crear tablas en R.
residuos <- modelo_normalidad$residuals # Extrae los residuos del modelo de regresión 'modelo_normalidad' y los guarda en la variable 'residuos'.
residuos %>%
as_tibble() %>%
rename(residuales = value) %>%
arrange(residuales) %>%
mutate(pi = (row_number() - 0.375) / (n() + 0.25)) %>%
mutate(mi = qnorm(pi, lower.tail = TRUE)) %>%
mutate(ai = 0) -> tabla_SW # Transforma los residuos en un tibble, renombra la columna 'value' como 'residuales', los ordena, calcula los cuantiles teóricos mi y los guarda en 'pi', calcula los valores críticos ai y los guarda en 'ai', y finalmente almacena todo en 'tabla_SW'.
m <- sum(tabla_SW$mi^2) # Calcula la suma de los cuadrados de los cuantiles teóricos mi y la guarda en 'm'.
n <- nrow(hprice1) # Calcula el número de filas en el conjunto de datos 'hprice1' y lo guarda en 'n'.
theta <- 1 / sqrt(n) # Calcula el valor de theta y lo guarda en 'theta'.
tabla_SW$ai[n] <- -2.706056 * theta^5 + 4.434685 * theta^4 - 2.071190 * theta^3 - 0.147981 * theta^2 + 0.2211570 * theta + tabla_SW$mi[n] / sqrt(m) # Calcula y asigna el valor del último valor crítico ai en 'tabla_SW'.
tabla_SW$ai[n - 1] <- -3.582633 * theta^5 + 5.682633 * theta^4 - 1.752461 * theta^3 - 0.293762 * theta^2 + 0.042981 * theta + tabla_SW$mi[n - 1] / sqrt(m) # Calcula y asigna el valor del penúltimo valor crítico ai en 'tabla_SW'.
tabla_SW$ai[1] <- -tabla_SW$ai[n] # Asigna el primer valor crítico ai como el negativo del último valor crítico en 'tabla_SW'.
tabla_SW$ai[2] <- -tabla_SW$ai[n - 1] # Asigna el segundo valor crítico ai como el negativo del penúltimo valor crítico en 'tabla_SW'.
omega <- (m - 2 * tabla_SW$mi[n]^2 - 2 * tabla_SW$mi[n - 1]^2) / (1 - 2 * tabla_SW$ai[n]^2 - 2 * tabla_SW$ai[n - 1]^2) # Calcula omega y lo guarda en 'omega'.
tabla_SW$ai[3:(n - 2)] <- tabla_SW$mi[3:(n - 2)] / sqrt(omega) # Calcula y asigna los valores críticos ai restantes en 'tabla_SW'.
tabla_SW %>%
mutate(ai_ui = ai * residuales, ui2 = residuales^2) -> tabla_SW # Calcula y añade dos nuevas columnas 'ai_ui' y 'ui2' a 'tabla_SW'.
tabla_SW %>%
gt() %>% tab_header("Tabla para calcular el Estadístico W") %>%
tab_source_note(source_note = "Fuente: Elaboración propia") # Crea una tabla con el paquete 'gt', añade un encabezado y una nota de fuente.| Tabla para calcular el Estadístico W | |||||
| residuales | pi | mi | ai | ai_ui | ui2 |
|---|---|---|---|---|---|
| -120.026447 | 0.007082153 | -2.45306927 | -0.286093929 | 34.338837782 | 14406.34799223 |
| -115.508697 | 0.018413598 | -2.08767462 | -0.226331231 | 26.143225495 | 13342.25903657 |
| -107.080889 | 0.029745042 | -1.88455395 | -0.201511408 | 21.578020632 | 11466.31670225 |
| -91.243980 | 0.041076487 | -1.73832835 | -0.185875811 | 16.960048752 | 8325.46388922 |
| -85.461169 | 0.052407932 | -1.62194155 | -0.173430814 | 14.821600075 | 7303.61136157 |
| -77.172687 | 0.063739377 | -1.52411994 | -0.162970954 | 12.576906330 | 5955.62354189 |
| -74.702719 | 0.075070822 | -1.43903134 | -0.153872609 | 11.494702279 | 5580.49626206 |
| -65.502849 | 0.086402266 | -1.36324747 | -0.145769197 | 9.548297773 | 4290.62326804 |
| -63.699108 | 0.097733711 | -1.29457343 | -0.138426027 | 8.817614500 | 4057.57641853 |
| -62.566594 | 0.109065156 | -1.23151500 | -0.131683320 | 8.238976839 | 3914.57869135 |
| -59.845223 | 0.120396601 | -1.17300649 | -0.125427129 | 7.506214499 | 3581.45072682 |
| -54.466158 | 0.131728045 | -1.11825971 | -0.119573169 | 6.512691096 | 2966.56233834 |
| -54.300415 | 0.143059490 | -1.06667420 | -0.114057239 | 6.193355472 | 2948.53511008 |
| -52.129801 | 0.154390935 | -1.01778137 | -0.108829231 | 5.673246083 | 2717.51610406 |
| -51.441108 | 0.165722380 | -0.97120790 | -0.103849228 | 5.342119306 | 2646.18755812 |
| -48.704980 | 0.177053824 | -0.92665123 | -0.099084876 | 4.825926905 | 2372.17509746 |
| -48.350295 | 0.188385269 | -0.88386232 | -0.094509548 | 4.569564512 | 2337.75102457 |
| -47.855859 | 0.199716714 | -0.84263354 | -0.090101040 | 4.311862673 | 2290.18324033 |
| -45.639765 | 0.211048159 | -0.80278966 | -0.085840618 | 3.917745629 | 2082.98814155 |
| -43.142550 | 0.222379603 | -0.76418130 | -0.081712307 | 3.525277277 | 1861.27961161 |
| -41.749618 | 0.233711048 | -0.72667986 | -0.077702356 | 3.244043648 | 1743.03058469 |
| -40.869022 | 0.245042493 | -0.69017366 | -0.073798824 | 3.016085791 | 1670.27697055 |
| -37.749811 | 0.256373938 | -0.65456498 | -0.069991263 | 2.642156946 | 1425.04821452 |
| -36.663785 | 0.267705382 | -0.61976766 | -0.066270458 | 2.429725818 | 1344.23312095 |
| -36.646568 | 0.279036827 | -0.58570518 | -0.062628228 | 2.295109622 | 1342.97093753 |
| -33.801248 | 0.290368272 | -0.55230918 | -0.059057264 | 1.996209250 | 1142.52439130 |
| -29.766931 | 0.301699717 | -0.51951819 | -0.055550992 | 1.653582575 | 886.07020942 |
| -26.696234 | 0.313031161 | -0.48727661 | -0.052103467 | 1.390966354 | 712.68890388 |
| -24.271531 | 0.324362606 | -0.45553386 | -0.048709282 | 1.182248861 | 589.10722688 |
| -23.651448 | 0.335694051 | -0.42424369 | -0.045363489 | 1.072912217 | 559.39099788 |
| -19.683427 | 0.347025496 | -0.39336354 | -0.042061540 | 0.827915257 | 387.43729851 |
| -17.817835 | 0.358356941 | -0.36285409 | -0.038799229 | 0.691318234 | 317.47522771 |
| -16.762094 | 0.369688385 | -0.33267878 | -0.035572645 | 0.596272007 | 280.96778010 |
| -16.596960 | 0.381019830 | -0.30280344 | -0.032378138 | 0.537378676 | 275.45909399 |
| -16.271207 | 0.392351275 | -0.27319601 | -0.029212277 | 0.475319006 | 264.75217651 |
| -13.815798 | 0.403682720 | -0.24382619 | -0.026071824 | 0.360203050 | 190.87627634 |
| -13.462160 | 0.415014164 | -0.21466524 | -0.022953704 | 0.309006447 | 181.22976154 |
| -12.081520 | 0.426345609 | -0.18568573 | -0.019854987 | 0.239878409 | 145.96311543 |
| -11.629207 | 0.437677054 | -0.15686137 | -0.016772858 | 0.195055032 | 135.23845458 |
| -11.312669 | 0.449008499 | -0.12816677 | -0.013704604 | 0.155035654 | 127.97648221 |
| -8.236558 | 0.460339943 | -0.09957734 | -0.010647596 | 0.087699542 | 67.84088513 |
| -7.662789 | 0.471671388 | -0.07106908 | -0.007599268 | 0.058231584 | 58.71832836 |
| -6.752801 | 0.483002833 | -0.04261848 | -0.004557105 | 0.030773222 | 45.60032533 |
| -6.707262 | 0.494334278 | -0.01420234 | -0.001518626 | 0.010185824 | 44.98736398 |
| -6.402439 | 0.505665722 | 0.01420234 | 0.001518626 | -0.009722911 | 40.99122172 |
| -5.446904 | 0.516997167 | 0.04261848 | 0.004557105 | -0.024822110 | 29.66876028 |
| -3.537785 | 0.528328612 | 0.07106908 | 0.007599268 | -0.026884576 | 12.51592288 |
| -2.824941 | 0.539660057 | 0.09957734 | 0.010647596 | -0.030078835 | 7.98029397 |
| -2.745208 | 0.550991501 | 0.12816677 | 0.013704604 | -0.037621996 | 7.53616965 |
| -0.195089 | 0.562322946 | 0.15686137 | 0.016772858 | -0.003272200 | 0.03805971 |
| 1.399296 | 0.573654391 | 0.18568573 | 0.019854987 | 0.027782994 | 1.95802794 |
| 5.363331 | 0.584985836 | 0.21466524 | 0.022953704 | 0.123108313 | 28.76531940 |
| 6.700640 | 0.596317280 | 0.24382619 | 0.026071824 | 0.174697904 | 44.89857663 |
| 7.386314 | 0.607648725 | 0.27319601 | 0.029212277 | 0.215771059 | 54.55763860 |
| 9.099900 | 0.618980170 | 0.30280344 | 0.032378138 | 0.294637808 | 82.80817401 |
| 12.433611 | 0.630311615 | 0.33267878 | 0.035572645 | 0.442296424 | 154.59467612 |
| 16.718018 | 0.641643059 | 0.36285409 | 0.038799229 | 0.648646203 | 279.49212715 |
| 18.093192 | 0.652974504 | 0.39336354 | 0.042061540 | 0.761027520 | 327.36359375 |
| 18.801816 | 0.664305949 | 0.42424369 | 0.045363489 | 0.852915978 | 353.50828232 |
| 19.168108 | 0.675637394 | 0.45553386 | 0.048709282 | 0.933664777 | 367.41636183 |
| 19.219211 | 0.686968839 | 0.48727661 | 0.052103467 | 1.001387528 | 369.37806665 |
| 20.334434 | 0.698300283 | 0.51951819 | 0.055550992 | 1.129598008 | 413.48922446 |
| 24.909926 | 0.709631728 | 0.55230918 | 0.059057264 | 1.471112049 | 620.50439009 |
| 26.236229 | 0.720963173 | 0.58570518 | 0.062628228 | 1.643128534 | 688.33970624 |
| 30.924022 | 0.732294618 | 0.61976766 | 0.066270458 | 2.049349072 | 956.29510728 |
| 32.253952 | 0.743626062 | 0.65456498 | 0.069991263 | 2.257494854 | 1040.31742689 |
| 32.529367 | 0.754957507 | 0.69017366 | 0.073798824 | 2.400629035 | 1058.15970869 |
| 32.675968 | 0.766288952 | 0.72667986 | 0.077702356 | 2.538999708 | 1067.71890359 |
| 33.275839 | 0.777620397 | 0.76418130 | 0.081712307 | 2.719045583 | 1107.28147309 |
| 36.031430 | 0.788951841 | 0.80278966 | 0.085840618 | 3.092960242 | 1298.26396526 |
| 37.147186 | 0.800283286 | 0.84263354 | 0.090101040 | 3.347000059 | 1379.91339592 |
| 40.320875 | 0.811614731 | 0.88386232 | 0.094509548 | 3.810707636 | 1625.77293960 |
| 44.334467 | 0.822946176 | 0.92665123 | 0.099084876 | 4.392875123 | 1965.54494196 |
| 46.907165 | 0.834277620 | 0.97120790 | 0.103849228 | 4.871272904 | 2200.28216686 |
| 54.418366 | 0.845609065 | 1.01778137 | 0.108829231 | 5.922308882 | 2961.35853839 |
| 55.091131 | 0.856940510 | 1.06667420 | 0.114057239 | 6.283542333 | 3035.03273452 |
| 55.470305 | 0.868271955 | 1.11825971 | 0.119573169 | 6.632760113 | 3076.95468678 |
| 62.939597 | 0.879603399 | 1.17300649 | 0.125427129 | 7.894332885 | 3961.39282116 |
| 66.478628 | 0.890934844 | 1.23151500 | 0.131683320 | 8.754126443 | 4419.40796540 |
| 67.426518 | 0.902266289 | 1.29457343 | 0.138426027 | 9.333585010 | 4546.33534619 |
| 67.603959 | 0.913597734 | 1.36324747 | 0.145769197 | 9.854574914 | 4570.29533539 |
| 69.707122 | 0.924929178 | 1.43903134 | 0.153872609 | 10.726016772 | 4859.08292257 |
| 69.843246 | 0.936260623 | 1.52411994 | 0.162970954 | 11.382420482 | 4878.07906512 |
| 74.848732 | 0.947592068 | 1.62194155 | 0.173430814 | 12.981076532 | 5602.33268291 |
| 112.729191 | 0.958923513 | 1.73832835 | 0.185875811 | 20.953629849 | 12707.87061041 |
| 163.795081 | 0.970254958 | 1.88455395 | 0.201511408 | 33.006577315 | 26828.82842547 |
| 198.660139 | 0.981586402 | 2.08767462 | 0.226331231 | 44.962993843 | 39465.85101402 |
| 209.375830 | 0.992917847 | 2.45306927 | 0.286093929 | 59.901153719 | 43838.23810785 |
| Fuente: Elaboración propia | |||||
Cálculo del Estadistico W
W <- (sum(tabla_SW$ai_ui)^2) / sum(tabla_SW$ui2) # Calcula el estadístico W utilizando la fórmula correspondiente y lo guarda en 'W'.
print(W) # Imprime el valor del estadístico W en la consola.## [1] 0.9413208
Cálculo del Wn y su p value
mu <- 0.0038915 * log(n)^3 - 0.083751 * log(n)^2 - 0.31082 * log(n) - 1.5861 # Calcula el valor esperado (mu) utilizando la fórmula correspondiente y lo guarda en 'mu'.
sigma <- exp(0.0030302 * log(n)^2 - 0.082676 * log(n) - 0.4803) # Calcula la desviación estándar (sigma) utilizando la fórmula correspondiente y lo guarda en 'sigma'.
Wn <- (log(1 - W) - mu) / sigma # Calcula el valor normalizado de W (Wn) utilizando la fórmula correspondiente y lo guarda en 'Wn'.
print(Wn) # Imprime el valor normalizado de W en la consola.## [1] 3.241867
p.value <- pnorm(Wn, lower.tail = FALSE) # Calcula el valor p utilizando la función de distribución acumulada de la distribución normal estándar y lo guarda en 'p.value'.
print(p.value) # Imprime el valor p en la consola.## [1] 0.0005937472
Grafica de la prueba de normalidad Shapiro-Wilk
library(fastGraph) # Carga el paquete 'fastGraph', que proporciona funciones para la visualización rápida de gráficos.
VC_SW <- 1.644854 # Define el valor crítico para la prueba de Shapiro-Wilk y lo guarda en 'VC_SW'.
shadeDist(xshade = VC_SW,
ddist = "dnorm",
parm1 = 0,
lower.tail = FALSE,
sub = paste("Wn:", 3.241867,
"VC:", 1.6449),
col = c("black", "red"),
main = "Prueba de Shapiro Wilk (SW)",# Genera un gráfico de la distribución normal estándar con sombreado en el área crítica para la prueba de Shapiro-Wilk.
xtic = c(3.241867, 1.6449, 0)) # Se especifican los parámetros para el sombreado, el texto de la leyenda, los colores, el título y las marcas en el eje x.Interpretacion: Según la regla de decisión se puede decir que hay evidencia para rechazar la hipótesis nula,entonces los residuos no tienen una distribución normal, ya que, el Wn es mayor al valor crítico, a la vez que el p-value resulta ser menor que el nivel de significancia.
En este punto se desarrolla la prueba de normalidad SW usando la liberia que facilita el calculo de la prueba.
Regla de decisión:
| Rechazar Ho si | No rechazar Ho si |
|---|---|
| Wn ≥ V.C. | Wn < V.C. |
| p-value ≤ \(\alpha\) | p-value > \(\alpha\) |
salida_SW <- shapiro.test(modelo_normalidad$residuals) # Realiza la prueba de Shapiro-Wilk sobre los residuos del modelo de regresión 'modelo_normalidad' y guarda los resultados en 'salida_SW'.
print(salida_SW) # Imprime los resultados de la prueba de Shapiro-Wilk en la consola.##
## Shapiro-Wilk normality test
##
## data: modelo_normalidad$residuals
## W = 0.94132, p-value = 0.0005937
# Cálculo del estadístico Wn (W normalizado)
Wn_salida <- qnorm(salida_SW$p.value, lower.tail = FALSE) # Calcula el valor normalizado de W utilizando el valor p obtenido de la salida de la prueba de Shapiro-Wilk y lo guarda en 'Wn_salida'.
print(Wn_salida) # Imprime el valor normalizado de W en la consola.## [1] 3.241867
Grafica de la prueba de normalidad Shapiro-Wilk
library(fastGraph) # Carga el paquete 'fastGraph', que proporciona funciones para la visualización rápida de gráficos.
VC_SW <- 1.644854 # Define el valor crítico para la prueba de Shapiro-Wilk y lo guarda en 'VC_SW'.
shadeDist(xshade = VC_SW,
ddist = "dnorm",
parm1 = 0,
lower.tail = FALSE,
sub = paste("Wn:", 3.241867,
"VC:", 1.6449),
col = c("black", "red"),
main = "Prueba de Shapiro Wilk (SW)",# Genera un gráfico de la distribución normal estándar con sombreado en el área crítica para la prueba de Shapiro-Wilk.
xtic = c(3.241867, 1.6449, 0)) # Se especifican los parámetros para el sombreado, el texto de la leyenda, los colores, el título y las marcas en el eje x.Interpretacion: Según la regla de decisión se puede decir que hay evidencia para rechazar la hipótesis nula,entonces los residuos no tienen una distribución normal, ya que, el Wn es mayor al valor crítico, a la vez que el p-value resulta ser menor que el nivel de significancia.
```