Carga de datos
library(wooldridge) #Más específicamente, la función library(wooldridge) carga la librería "wooldridge" en la sesión actual de R, lo que permite que las funciones y datos contenidos en esa librería estén disponibles para su uso
## Warning: package 'wooldridge' was built under R version 4.2.3
data(hprice1)#La función data(hprice1) carga el conjunto de datos "hprice1" en la sesión de R
head(force(hprice1),n=5) #Finalmente, la función head(force(hprice1), n = 5) muestra las primeras cinco filas de los datos "hprice1"
## 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 del modelo
modelo_estimado<-lm(formula = price~lotsize+sqrft+bdrms,data = hprice1) #Más específicamente, el comando lm(formula = price~lotsize+sqrft+bdrms,data = hprice1) ajusta un modelo de regresión lineal múltiple en R, donde la variable de respuesta es "price" y las variables predictoras son "lotsize", "sqrft" y "bdrms". El resultado del modelo se guarda en el objeto "modelo_estimado"
library(stargazer) #La función library(stargazer) carga la librería "stargazer" en la sesión actual de R, lo que permite que la función "stargazer()" esté disponible para su uso
##
## Please cite as:
## Hlavac, Marek (2022). stargazer: Well-Formatted Regression and Summary Statistics Tables.
## R package version 5.2.3. https://CRAN.R-project.org/package=stargazer
stargazer(modelo_estimado,title = "Modelo Estimado",type = "text") #La función stargazer(modelo_estimado, title = "Modelo Estimado", type = "text") muestra la salida del modelo de regresión ajustado utilizando la función "stargazer()" en formato de tabla
##
## 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
library(fitdistrplus) #la función library(fitdistrplus) carga la librería "fitdistrplus" en la sesión actual de R, lo que permite que las funciones contenidas en esa librería estén disponibles para su uso
fit_normal<-fitdist(data = modelo_estimado$residuals,distr = "norm") #ajusta una distribución normal a los residuos del modelo de regresión lineal múltiple almacenados en el objeto "modelo_estimado". La función "fitdist()" es una función de la librería "fitdistrplus" que ajusta diferentes distribuciones de probabilidad a un vector de datos y devuelve un objeto que contiene los parámetros estimados de la distribución ajustada
plot(fit_normal) #muestra una visualización de los resultados del ajuste de la distribución normal a los residuos utilizando la función "plot()" de R. El argumento "fit_normal" indica que se debe mostrar la gráfica correspondiente al objeto que contiene los resultados del ajuste de la distribución normal a los residuos
summary(fit_normal) # incluirá estadísticas como el valor del logaritmo de verosimilitud negativa (log-likelihood), los parámetros estimados de la distribución normal (media y desviación estándar), los errores estándar y los valores p de los parámetros estimados, y una prueba de bondad de ajuste para evaluar qué tan bien se ajusta la distribución normal a los datos de los residuos del modelo
## Fitting of the distribution ' norm ' by maximum likelihood
## Parameters :
## estimate Std. Error
## mean 9.992007e-16 6.231624
## sd 5.845781e+01 4.406424
## Loglikelihood: -482.8775 AIC: 969.7549 BIC: 974.7096
## Correlation matrix:
## mean sd
## mean 1 0
## sd 0 1
Verificando supuestos de normalidad Prueba de Jarque Bera Usando tseries
library(tseries) #La función library(tseries) carga la librería "tseries" en la sesión actual de R, lo que permite que la función jarque.bera.test() esté disponible para su uso
## Warning: package 'tseries' was built under R version 4.2.3
prueba_JB<-jarque.bera.test(modelo_estimado$residuals) #realiza una prueba de bondad de ajuste de Jarque-Bera sobre los residuos del modelo de regresión lineal múltiple almacenados en el objeto "modelo_estimado". La prueba de Jarque-Bera es una prueba de normalidad que se basa en la asimetría y la curtosis de los datos
prueba_JB #La salida del comando prueba_JB incluirá la estadística de prueba de Jarque-Bera, su valor p y un indicador de si se rechaza o no la hipótesis nula de normalidad de los residuos del modelo
##
## Jarque Bera Test
##
## data: modelo_estimado$residuals
## X-squared = 32.278, df = 2, p-value = 9.794e-08
library(fastGraph) #El comando library(fastGraph) carga la librería "fastGraph" en la sesión actual de R, lo que permite que las funciones contenidas en esa librería estén disponibles para su uso
alpha_sig<-0.05 #El código define el nivel de significancia alpha_sig como 0.05. A continuación, se extraen la estadística de prueba y los grados de libertad del objeto "prueba_JB" creado anteriormente
JB<-prueba_JB$statistic
gl<-prueba_JB$parameter
Valor_Critico<-qchisq(1-alpha_sig,gl,lower.tail = TRUE) #El siguiente comando qchisq(1-alpha_sig, gl, lower.tail = TRUE) calcula el valor crítico de la distribución chi-cuadrado con los grados de libertad gl correspondientes y nivel de significancia alpha_sig
shadeDist(JB,ddist = "dchisq", # La función "shadeDist()" se utiliza para sombrear áreas debajo o sobre una distribución, en este caso, debajo de la distribución chi-cuadrado
parm1=gl,
lower.tail = FALSE,xmin=0,
sub=paste("Valor Critico:",round(Valor_Critico,2),"","JB:",round(JB,2))) #la distribución que se utilizará (ddist = "dchisq"), los parámetros de la distribución chi-cuadrado (parm1=gl), el nivel de cola a la derecha (lower.tail = FALSE), el valor mínimo de x a partir del cual se sombreará la distribución (xmin=0), y un título que muestra el valor crítico y la estadística de prueba de Jarque-Bera
como el JB se encuentra en la zona del nivel de significancia se procede
a rechazar la hipotesis nula
Prueba de Kolmogorov Smirnov - Lilliefors Calculo Manual
library(dplyr) #Carga la libreria de dplyr para manipulación de datos
library(gt) #Carga la libreria de gt para crear tablas de datos
library(gtExtras)#Carga la libreria de gtExtras para agregar funcionalidades a las tablas creadas con gt
Residuos<-modelo_estimado$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 un 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 sus 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 estandar evaluada en los valores zi
mutate(dif1=abs(dist1-1)) %>% #Agrega una columna "dif1" con las diferencia absolutas entre los percentiles según la posición y los valores pi
mutate(dif2=abs(dist2-1)) %>% #Agrega una columna "dif2" con la diferencia absoluta de percentiles ajustados según la posición y los valores pi
rename(Residuos=value)->Tabla_KolmogorovSmirnov #Renombra la columna "value" como "Residuos" y asigna la tabla resultante a la variable Tabla_KolmogorovSmirnov
#Formato
Tabla_KolmogorovSmirnov %>% #Utiliza el operador %>% para encadenar las operaciones siguientes en la tabla Tabla_KolmogorovSmirnov
gt() %>% #Crear 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 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 pertenezca a la columna "dif1"
rows=dif1==max(dif1) #Que pertenezca 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 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 pertenezca a la columna "dif2"
rows=dif2==max(dif2) #Que pertenezca a la fila donde el valor de "dif2" es máximo
)
)
Tabla para calcular el estadistico KS | |||||||
Residuos | posicion | dist1 | dist2 | zi | pi | dif1 | dif2 |
---|---|---|---|---|---|---|---|
-120.026447 | 81 | 0.01136364 | 0.00000000 | -2.041515459 | 0.02059981 | 0.98863636 | 1.00000000 |
-115.508697 | 77 | 0.02272727 | 0.01136364 | -1.964673586 | 0.02472601 | 0.97727273 | 0.98863636 |
-107.080889 | 24 | 0.03409091 | 0.02272727 | -1.821326006 | 0.03427866 | 0.96590909 | 0.97727273 |
-91.243980 | 48 | 0.04545455 | 0.03409091 | -1.551957925 | 0.06033615 | 0.95454545 | 0.96590909 |
-85.461169 | 12 | 0.05681818 | 0.04545455 | -1.453598781 | 0.07302879 | 0.94318182 | 0.95454545 |
-77.172687 | 32 | 0.06818182 | 0.05681818 | -1.312620980 | 0.09465535 | 0.93181818 | 0.94318182 |
-74.702719 | 54 | 0.07954545 | 0.06818182 | -1.270609602 | 0.10193378 | 0.92045455 | 0.93181818 |
-65.502849 | 39 | 0.09090909 | 0.07954545 | -1.114130117 | 0.13261169 | 0.90909091 | 0.92045455 |
-63.699108 | 69 | 0.10227273 | 0.09090909 | -1.083450505 | 0.13930425 | 0.89772727 | 0.90909091 |
-62.566594 | 83 | 0.11363636 | 0.10227273 | -1.064187703 | 0.14362184 | 0.88636364 | 0.89772727 |
-59.845223 | 36 | 0.12500000 | 0.11363636 | -1.017900230 | 0.15436269 | 0.87500000 | 0.88636364 |
-54.466158 | 13 | 0.13636364 | 0.12500000 | -0.926408352 | 0.17711690 | 0.86363636 | 0.87500000 |
-54.300415 | 14 | 0.14772727 | 0.13636364 | -0.923589260 | 0.17785010 | 0.85227273 | 0.86363636 |
-52.129801 | 15 | 0.15909091 | 0.14772727 | -0.886669532 | 0.18762842 | 0.84090909 | 0.85227273 |
-51.441108 | 17 | 0.17045455 | 0.15909091 | -0.874955638 | 0.19079902 | 0.82954545 | 0.84090909 |
-48.704980 | 47 | 0.18181818 | 0.17045455 | -0.828417174 | 0.20371714 | 0.81818182 | 0.82954545 |
-48.350295 | 29 | 0.19318182 | 0.18181818 | -0.822384375 | 0.20542908 | 0.80681818 | 0.81818182 |
-47.855859 | 11 | 0.20454545 | 0.19318182 | -0.813974573 | 0.20782976 | 0.79545455 | 0.80681818 |
-45.639765 | 1 | 0.21590909 | 0.20454545 | -0.776281294 | 0.21879146 | 0.78409091 | 0.79545455 |
-43.142550 | 9 | 0.22727273 | 0.21590909 | -0.733806463 | 0.23153335 | 0.77272727 | 0.78409091 |
-41.749618 | 57 | 0.23863636 | 0.22727273 | -0.710114247 | 0.23881665 | 0.76136364 | 0.77272727 |
-40.869022 | 27 | 0.25000000 | 0.23863636 | -0.695136302 | 0.24348494 | 0.75000000 | 0.76136364 |
-37.749811 | 34 | 0.26136364 | 0.25000000 | -0.642082009 | 0.26040997 | 0.73863636 | 0.75000000 |
-36.663785 | 71 | 0.27272727 | 0.26136364 | -0.623609925 | 0.26644190 | 0.72727273 | 0.73863636 |
-36.646568 | 79 | 0.28409091 | 0.27272727 | -0.623317083 | 0.26653809 | 0.71590909 | 0.72727273 |
-33.801248 | 37 | 0.29545455 | 0.28409091 | -0.574921384 | 0.28267223 | 0.70454545 | 0.71590909 |
-29.766931 | 16 | 0.30681818 | 0.29545455 | -0.506302171 | 0.30632227 | 0.69318182 | 0.70454545 |
-26.696234 | 22 | 0.31818182 | 0.30681818 | -0.454073044 | 0.32488813 | 0.68181818 | 0.69318182 |
-24.271531 | 23 | 0.32954545 | 0.31818182 | -0.412831567 | 0.33986501 | 0.67045455 | 0.68181818 |
-23.651448 | 86 | 0.34090909 | 0.32954545 | -0.402284648 | 0.34373728 | 0.65909091 | 0.67045455 |
-19.683427 | 88 | 0.35227273 | 0.34090909 | -0.334793052 | 0.36889060 | 0.64772727 | 0.65909091 |
-17.817835 | 10 | 0.36363636 | 0.35227273 | -0.303061413 | 0.38092153 | 0.63636364 | 0.64772727 |
-16.762094 | 60 | 0.37500000 | 0.36363636 | -0.285104441 | 0.38778206 | 0.62500000 | 0.63636364 |
-16.596960 | 21 | 0.38636364 | 0.37500000 | -0.282295711 | 0.38885839 | 0.61363636 | 0.62500000 |
-16.271207 | 58 | 0.39772727 | 0.38636364 | -0.276755010 | 0.39098411 | 0.60227273 | 0.61363636 |
-13.815798 | 56 | 0.40909091 | 0.39772727 | -0.234991254 | 0.40710776 | 0.59090909 | 0.60227273 |
-13.462160 | 75 | 0.42045455 | 0.40909091 | -0.228976273 | 0.40944368 | 0.57954545 | 0.59090909 |
-12.081520 | 4 | 0.43181818 | 0.42045455 | -0.205493119 | 0.41859344 | 0.56818182 | 0.57954545 |
-11.629207 | 51 | 0.44318182 | 0.43181818 | -0.197799788 | 0.42160086 | 0.55681818 | 0.56818182 |
-11.312669 | 74 | 0.45454545 | 0.44318182 | -0.192415834 | 0.42370825 | 0.54545455 | 0.55681818 |
-8.236558 | 3 | 0.46590909 | 0.45454545 | -0.140094626 | 0.44429261 | 0.53409091 | 0.54545455 |
-7.662789 | 70 | 0.47727273 | 0.46590909 | -0.130335452 | 0.44815052 | 0.52272727 | 0.53409091 |
-6.752801 | 67 | 0.48863636 | 0.47727273 | -0.114857588 | 0.45427900 | 0.51136364 | 0.52272727 |
-6.707262 | 31 | 0.50000000 | 0.48863636 | -0.114083016 | 0.45458599 | 0.50000000 | 0.51136364 |
-6.402439 | 85 | 0.51136364 | 0.50000000 | -0.108898313 | 0.45664157 | 0.48863636 | 0.50000000 |
-5.446904 | 82 | 0.52272727 | 0.51136364 | -0.092645733 | 0.46309251 | 0.47727273 | 0.48863636 |
-3.537785 | 43 | 0.53409091 | 0.52272727 | -0.060173762 | 0.47600862 | 0.46590909 | 0.47727273 |
-2.824941 | 61 | 0.54545455 | 0.53409091 | -0.048049090 | 0.48083856 | 0.45454545 | 0.46590909 |
-2.745208 | 68 | 0.55681818 | 0.54545455 | -0.046692922 | 0.48137899 | 0.44318182 | 0.45454545 |
-0.195089 | 65 | 0.56818182 | 0.55681818 | -0.003318245 | 0.49867621 | 0.43181818 | 0.44318182 |
1.399296 | 55 | 0.57954545 | 0.56818182 | 0.023800450 | 0.50949411 | 0.42045455 | 0.43181818 |
5.363331 | 26 | 0.59090909 | 0.57954545 | 0.091224254 | 0.53634280 | 0.40909091 | 0.42045455 |
6.700640 | 53 | 0.60227273 | 0.59090909 | 0.113970383 | 0.54536936 | 0.39772727 | 0.40909091 |
7.386314 | 80 | 0.61363636 | 0.60227273 | 0.125632935 | 0.54998875 | 0.38636364 | 0.39772727 |
9.099900 | 41 | 0.62500000 | 0.61363636 | 0.154779103 | 0.56150227 | 0.37500000 | 0.38636364 |
12.433611 | 46 | 0.63636364 | 0.62500000 | 0.211481796 | 0.58374433 | 0.36363636 | 0.37500000 |
16.718018 | 62 | 0.64772727 | 0.63636364 | 0.284354766 | 0.61193074 | 0.35227273 | 0.36363636 |
18.093192 | 5 | 0.65909091 | 0.64772727 | 0.307744934 | 0.62086179 | 0.34090909 | 0.35227273 |
18.801816 | 38 | 0.67045455 | 0.65909091 | 0.319797835 | 0.62543921 | 0.32954545 | 0.34090909 |
19.168108 | 33 | 0.68181818 | 0.67045455 | 0.326028052 | 0.62779843 | 0.31818182 | 0.32954545 |
19.219211 | 72 | 0.69318182 | 0.68181818 | 0.326897255 | 0.62812720 | 0.30681818 | 0.31818182 |
20.334434 | 59 | 0.70454545 | 0.69318182 | 0.345865960 | 0.63527827 | 0.29545455 | 0.30681818 |
24.909926 | 78 | 0.71590909 | 0.70454545 | 0.423689939 | 0.66410402 | 0.28409091 | 0.29545455 |
26.236229 | 40 | 0.72727273 | 0.71590909 | 0.446248874 | 0.67229126 | 0.27272727 | 0.28409091 |
30.924022 | 25 | 0.73863636 | 0.72727273 | 0.525982978 | 0.70054998 | 0.26136364 | 0.27272727 |
32.253952 | 45 | 0.75000000 | 0.73863636 | 0.548603608 | 0.70836125 | 0.25000000 | 0.26136364 |
32.529367 | 49 | 0.76136364 | 0.75000000 | 0.553288104 | 0.70996693 | 0.23863636 | 0.25000000 |
32.675968 | 18 | 0.77272727 | 0.76136364 | 0.555781630 | 0.71081993 | 0.22727273 | 0.23863636 |
33.275839 | 20 | 0.78409091 | 0.77272727 | 0.565984762 | 0.71429793 | 0.21590909 | 0.22727273 |
36.031430 | 52 | 0.79545455 | 0.78409091 | 0.612854281 | 0.73001365 | 0.20454545 | 0.21590909 |
37.147186 | 84 | 0.80681818 | 0.79545455 | 0.631832029 | 0.73625168 | 0.19318182 | 0.20454545 |
40.320875 | 7 | 0.81818182 | 0.80681818 | 0.685812928 | 0.75358446 | 0.18181818 | 0.19318182 |
44.334467 | 30 | 0.82954545 | 0.81818182 | 0.754079634 | 0.77459930 | 0.17045455 | 0.18181818 |
46.907165 | 28 | 0.84090909 | 0.82954545 | 0.797838357 | 0.78751785 | 0.15909091 | 0.17045455 |
54.418366 | 87 | 0.85227273 | 0.84090909 | 0.925595465 | 0.82267187 | 0.14772727 | 0.15909091 |
55.091131 | 35 | 0.86363636 | 0.85227273 | 0.937038450 | 0.82563061 | 0.13636364 | 0.14772727 |
55.470305 | 44 | 0.87500000 | 0.86363636 | 0.943487765 | 0.82728426 | 0.12500000 | 0.13636364 |
62.939597 | 6 | 0.88636364 | 0.87500000 | 1.070532059 | 0.85781006 | 0.11363636 | 0.12500000 |
66.478628 | 50 | 0.89772727 | 0.88636364 | 1.130727018 | 0.87091500 | 0.10227273 | 0.11363636 |
67.426518 | 63 | 0.90909091 | 0.89772727 | 1.146849569 | 0.87427810 | 0.09090909 | 0.10227273 |
67.603959 | 19 | 0.92045455 | 0.90909091 | 1.149867648 | 0.87490081 | 0.07954545 | 0.09090909 |
69.707122 | 64 | 0.93181818 | 0.92045455 | 1.185640095 | 0.88211777 | 0.06818182 | 0.07954545 |
69.843246 | 8 | 0.94318182 | 0.93181818 | 1.187955411 | 0.88257451 | 0.05681818 | 0.06818182 |
74.848732 | 2 | 0.95454545 | 0.94318182 | 1.273093116 | 0.89850750 | 0.04545455 | 0.05681818 |
112.729191 | 66 | 0.96590909 | 0.95454545 | 1.917397313 | 0.97240626 | 0.03409091 | 0.04545455 |
163.795081 | 73 | 0.97727273 | 0.96590909 | 2.785970904 | 0.99733162 | 0.02272727 | 0.03409091 |
198.660139 | 42 | 0.98863636 | 0.97727273 | 3.378986513 | 0.99963623 | 0.01136364 | 0.02272727 |
209.375830 | 76 | 1.00000000 | 0.98863636 | 3.561248407 | 0.99981545 | 0.00000000 | 0.01136364 |
Fuente: Elaboración Propia |
Cálculo del estadístico D:
D<-max(max(Tabla_KolmogorovSmirnov$dif1),max(Tabla_KolmogorovSmirnov$dif2)) #El comando max(Tabla_KolmogorovSmirnov$dif1) calcula la máxima diferencia absoluta entre los valores de la ECDF y la distribución teórica para la variable de respuesta (price), mientras que max(Tabla_KolmogorovSmirnov$dif2) calcula la máxima diferencia absoluta para la variable explicativa (lotsize). El estadístico de prueba de Kolmogorov-Smirnov se define como la máxima diferencia entre estas dos diferencias máximas
print(D)
## [1] 1
Usando Nortest
library(nortest) #El comando library(nortest) carga la librería "nortest" en la sesión actual de R, lo que permite que las funciones contenidas en esa librería estén disponibles para su uso
prueba_KolmogorovSmirnov<-lillie.test(modelo_estimado$residuals) #en los residuos del modelo de regresión lineal múltiple ajustado. El resultado se almacena en el objeto "prueba_KolmogorovSmirnov". El comando prueba_KolmogorovSmirnov muestra en la consola el resultado de la prueba de normalidad, que incluye la estadística de prueba, el valor p y el mensaje de resultado
prueba_KolmogorovSmirnov
##
## Lilliefors (Kolmogorov-Smirnov) normality test
##
## data: modelo_estimado$residuals
## D = 0.075439, p-value = 0.2496
p.value<-prueba_KolmogorovSmirnov$p.value #extrae el valor p de la prueba de normalidad y lo almacena en la variable "p.value". Esto permitirá utilizar este valor en futuros análisis o comparaciones con otros valores p
Prueba Shapiro - Wilk Calculo Manual
library(dplyr) #El comando library(dplyr) carga la librería "dplyr" en la sesión actual de R, lo que permite utilizar las funciones contenidas en esa librería para manipular datos
library(gt) #El comando library(gt) carga la librería "gt" en la sesión actual de R, que proporciona una forma fácil de crear tablas de datos elegantes y personalizables
residuos<-modelo_estimado$residuals #se almacenan los residuos del modelo de regresión lineal múltiple ajustado en el objeto "residuos" utilizando la función modelo_estimado$residuals
residuos %>% #El siguiente comando utiliza el operador %>% (pipe) de "dplyr" para pasar el objeto "residuos" a la siguiente línea de código. El operador pipe permite encadenar múltiples operaciones de manipulación de datos de manera eficiente
as_tibble() %>% # Este código toma los residuos del modelo de regresión lineal múltiple ajustado, los convierte en un tibble utilizando la función as_tibble()
rename(residuales=value) %>% #los renombra a "residuales" utilizando la función rename(),
arrange(residuales) %>% # los ordena de menor a mayor utilizando la función arrange()
mutate(pi=(row_number()-0.375)/(n()+0.25)) %>% #la función mutate() de la librería "dplyr" para crear tres nuevas columnas en el tibble Tabla_ShapiroWilk
mutate(mi=qnorm(pi,lower.tail = TRUE)) %>% #la función mutate() crea una nueva columna llamada "pi" que almacena los valores de la distribución de probabilidad normal estándar correspondientes a los cuantiles de los residuos ordenados
mutate(ai=0)->Tabla_ShapiroWilk #la función mutate() crea una nueva columna llamada "ai" que almacena el valor constante "0
#Formato
m<-sum(Tabla_ShapiroWilk$mi^2) #la función de distribución acumulativa normal almacenados en la columna "mi" del tibble Tabla_ShapiroWilk. Esto se almacena en la variable m
n<-nrow(hprice1) #almacena el número de observaciones en la variable n
theta<-1/sqrt(n) # calcula la variable de escala theta como el inverso de la raíz cuadrada del número de observaciones n
Tabla_ShapiroWilk$ai[n]<--2.706056*theta^5+4.434685*theta^4-2.071190*theta^3-0.147981*theta^2+0.2211570*theta+Tabla_ShapiroWilk$mi[n]/sqrt(m) #se calcula el valor crítico de la estadística de prueba para el nivel de significancia del 0.05% para la observación más grande. Este valor crítico se almacena en la última fila de la columna "ai" en Tabla_ShapiroWilk
Tabla_ShapiroWilk$ai[n-1]<--3.582633*theta^5+5.682633*theta^4-1.752461*theta^3-0.293762*theta^2+0.042981*theta+Tabla_ShapiroWilk$mi[n-1]/sqrt(m) #se calcula el valor crítico de la estadística de prueba para el nivel de significancia del 0.05% para la segunda observación más grande. Este valor crítico se almacena en la penúltima fila de la columna "ai" en Tabla_ShapiroWilk
Tabla_ShapiroWilk$ai[1]<- -Tabla_ShapiroWilk$ai[n] # El primer valor asignado es el negativo del último elemento de "ai"
Tabla_ShapiroWilk$ai[2]<- -Tabla_ShapiroWilk$ai[n-1] #el segundo valor asignado es el negativo del penúltimo elemento de "ai"
omega<-(m-2*Tabla_ShapiroWilk$mi[n]^2-2*Tabla_ShapiroWilk$mi[n-1]^2)/(1-2*Tabla_ShapiroWilk$ai[n]^2-2*Tabla_ShapiroWilk$ai[n-1]^2) #utilizando los valores de "mi" y "ai" de los últimos dos elementos de "Tabla_ShapiroWilk". El valor de "omega" se utiliza en el siguiente paso para calcular el valor p de la prueba de Shapiro-Wilk
Tabla_ShapiroWilk$ai[3:(n-2)]<-Tabla_ShapiroWilk$mi[3:(n-2)]/sqrt(omega)
Tabla_ShapiroWilk %>%
mutate(ai_ui=ai*residuos,ui2=residuos^2)->Tabla_ShapiroWilk
Tabla_ShapiroWilk %>%
gt() %>% tab_header("Tabla para calcular el estadístico W") %>%
tab_source_note(source_note = "Fuente: Elaboración propia")
Tabla para calcular el estadístico W | |||||
residuales | pi | mi | ai | ai_ui | ui2 |
---|---|---|---|---|---|
-120.026447 | 0.007082153 | -2.45306927 | -0.286093929 | 13.05725965 | 2.082988e+03 |
-115.508697 | 0.018413598 | -2.08767462 | -0.226331231 | -16.94060563 | 5.602333e+03 |
-107.080889 | 0.029745042 | -1.88455395 | -0.201511408 | 1.65976037 | 6.784089e+01 |
-91.243980 | 0.041076487 | -1.73832835 | -0.185875811 | 2.24566225 | 1.459631e+02 |
-85.461169 | 0.052407932 | -1.62194155 | -0.173430814 | -3.13791701 | 3.273636e+02 |
-77.172687 | 0.063739377 | -1.52411994 | -0.162970954 | -10.25732609 | 3.961393e+03 |
-74.702719 | 0.075070822 | -1.43903134 | -0.153872609 | -6.20427818 | 1.625773e+03 |
-65.502849 | 0.086402266 | -1.36324747 | -0.145769197 | -10.18099397 | 4.878079e+03 |
-63.699108 | 0.097733711 | -1.29457343 | -0.138426027 | 5.97205177 | 1.861280e+03 |
-62.566594 | 0.109065156 | -1.23151500 | -0.131683320 | 2.34631161 | 3.174752e+02 |
-59.845223 | 0.120396601 | -1.17300649 | -0.125427129 | 6.00242299 | 2.290183e+03 |
-54.466158 | 0.131728045 | -1.11825971 | -0.119573169 | 10.21886279 | 7.303611e+03 |
-54.300415 | 0.143059490 | -1.06667420 | -0.114057239 | 6.21225959 | 2.966562e+03 |
-52.129801 | 0.154390935 | -1.01778137 | -0.108829231 | 5.90947243 | 2.948535e+03 |
-51.441108 | 0.165722380 | -0.97120790 | -0.103849228 | 5.41363953 | 2.717516e+03 |
-48.704980 | 0.177053824 | -0.92665123 | -0.099084876 | 2.94945270 | 8.860702e+02 |
-48.350295 | 0.188385269 | -0.88386232 | -0.094509548 | 4.86167582 | 2.646188e+03 |
-47.855859 | 0.199716714 | -0.84263354 | -0.090101040 | -2.94413873 | 1.067719e+03 |
-45.639765 | 0.211048159 | -0.80278966 | -0.085840618 | -5.80316566 | 4.570295e+03 |
-43.142550 | 0.222379603 | -0.76418130 | -0.081712307 | -2.71904558 | 1.107281e+03 |
-41.749618 | 0.233711048 | -0.72667986 | -0.077702356 | 1.28962292 | 2.754591e+02 |
-40.869022 | 0.245042493 | -0.69017366 | -0.073798824 | 1.97015068 | 7.126889e+02 |
-37.749811 | 0.256373938 | -0.65456498 | -0.069991263 | 1.69879513 | 5.891072e+02 |
-36.663785 | 0.267705382 | -0.61976766 | -0.066270458 | 7.09629954 | 1.146632e+04 |
-36.646568 | 0.279036827 | -0.58570518 | -0.062628228 | -1.93671668 | 9.562951e+02 |
-33.801248 | 0.290368272 | -0.55230918 | -0.059057264 | -0.31674365 | 2.876532e+01 |
-29.766931 | 0.301699717 | -0.51951819 | -0.055550992 | 2.27031473 | 1.670277e+03 |
-26.696234 | 0.313031161 | -0.48727661 | -0.052103467 | -2.44402597 | 2.200282e+03 |
-24.271531 | 0.324362606 | -0.45553386 | -0.048709282 | 2.35510816 | 2.337751e+03 |
-23.651448 | 0.335694051 | -0.42424369 | -0.045363489 | -2.01116611 | 1.965545e+03 |
-19.683427 | 0.347025496 | -0.39336354 | -0.042061540 | 0.28211777 | 4.498736e+01 |
-17.817835 | 0.358356941 | -0.36285409 | -0.038799229 | 2.99424070 | 5.955624e+03 |
-16.762094 | 0.369688385 | -0.33267878 | -0.035572645 | -0.68186030 | 3.674164e+02 |
-16.596960 | 0.381019830 | -0.30280344 | -0.032378138 | 1.22226859 | 1.425048e+03 |
-16.271207 | 0.392351275 | -0.27319601 | -0.029212277 | -1.60933739 | 3.035033e+03 |
-13.815798 | 0.403682720 | -0.24382619 | -0.026071824 | 1.56027410 | 3.581451e+03 |
-13.462160 | 0.415014164 | -0.21466524 | -0.022953704 | 0.77586386 | 1.142524e+03 |
-12.081520 | 0.426345609 | -0.18568573 | -0.019854987 | -0.37330980 | 3.535083e+02 |
-11.629207 | 0.437677054 | -0.15686137 | -0.016772858 | 1.09866996 | 4.290623e+03 |
-11.312669 | 0.449008499 | -0.12816677 | -0.013704604 | -0.35955714 | 6.883397e+02 |
-8.236558 | 0.460339943 | -0.09957734 | -0.010647596 | -0.09689206 | 8.280817e+01 |
-7.662789 | 0.471671388 | -0.07106908 | -0.007599268 | -1.50967164 | 3.946585e+04 |
-6.752801 | 0.483002833 | -0.04261848 | -0.004557105 | 0.01612206 | 1.251592e+01 |
-6.707262 | 0.494334278 | -0.01420234 | -0.001518626 | -0.08423866 | 3.076955e+03 |
-6.402439 | 0.505665722 | 0.01420234 | 0.001518626 | 0.04898170 | 1.040317e+03 |
-5.446904 | 0.516997167 | 0.04261848 | 0.004557105 | 0.05666126 | 1.545947e+02 |
-3.537785 | 0.528328612 | 0.07106908 | 0.007599268 | -0.37012220 | 2.372175e+03 |
-2.824941 | 0.539660057 | 0.09957734 | 0.010647596 | -0.97152905 | 8.325464e+03 |
-2.745208 | 0.550991501 | 0.12816677 | 0.013704604 | 0.44580210 | 1.058160e+03 |
-0.195089 | 0.562322946 | 0.15686137 | 0.016772858 | 1.11503656 | 4.419408e+03 |
1.399296 | 0.573654391 | 0.18568573 | 0.019854987 | -0.23089775 | 1.352385e+02 |
5.363331 | 0.584985836 | 0.21466524 | 0.022953704 | 0.82705479 | 1.298264e+03 |
6.700640 | 0.596317280 | 0.24382619 | 0.026071824 | 0.17469790 | 4.489858e+01 |
7.386314 | 0.607648725 | 0.27319601 | 0.029212277 | -2.18223653 | 5.580496e+03 |
9.099900 | 0.618980170 | 0.30280344 | 0.032378138 | 0.04530658 | 1.958028e+00 |
12.433611 | 0.630311615 | 0.33267878 | 0.035572645 | -0.49146448 | 1.908763e+02 |
16.718018 | 0.641643059 | 0.36285409 | 0.038799229 | -1.61985296 | 1.743031e+03 |
18.093192 | 0.652974504 | 0.39336354 | 0.042061540 | -0.68439203 | 2.647522e+02 |
18.801816 | 0.664305949 | 0.42424369 | 0.045363489 | 0.92244090 | 4.134892e+02 |
19.168108 | 0.675637394 | 0.45553386 | 0.048709282 | -0.81646954 | 2.809678e+02 |
19.219211 | 0.686968839 | 0.48727661 | 0.052103467 | -0.14718924 | 7.980294e+00 |
20.334434 | 0.698300283 | 0.51951819 | 0.055550992 | 0.92870249 | 2.794921e+02 |
24.909926 | 0.709631728 | 0.55230918 | 0.059057264 | 3.98202568 | 4.546335e+03 |
26.236229 | 0.720963173 | 0.58570518 | 0.062628228 | 4.36563358 | 4.859083e+03 |
30.924022 | 0.732294618 | 0.61976766 | 0.066270458 | -0.01292864 | 3.805971e-02 |
32.253952 | 0.743626062 | 0.65456498 | 0.069991263 | 7.89005852 | 1.270787e+04 |
32.529367 | 0.754957507 | 0.69017366 | 0.073798824 | -0.49834880 | 4.560033e+01 |
32.675968 | 0.766288952 | 0.72667986 | 0.077702356 | -0.21330917 | 7.536170e+00 |
33.275839 | 0.777620397 | 0.76418130 | 0.081712307 | -5.20500110 | 4.057576e+03 |
36.031430 | 0.788951841 | 0.80278966 | 0.085840618 | -0.65777851 | 5.871833e+01 |
37.147186 | 0.800283286 | 0.84263354 | 0.090101040 | -3.30344515 | 1.344233e+03 |
40.320875 | 0.811614731 | 0.88386232 | 0.094509548 | 1.81639893 | 3.693781e+02 |
44.334467 | 0.822946176 | 0.92665123 | 0.099084876 | 16.22961518 | 2.682883e+04 |
46.907165 | 0.834277620 | 0.97120790 | 0.103849228 | -1.17481195 | 1.279765e+02 |
54.418366 | 0.845609065 | 1.01778137 | 0.108829231 | -1.46507655 | 1.812298e+02 |
55.091131 | 0.856940510 | 1.06667420 | 0.114057239 | 23.88082913 | 4.383824e+04 |
55.470305 | 0.868271955 | 1.11825971 | 0.119573169 | -13.81174095 | 1.334226e+04 |
62.939597 | 0.879603399 | 1.17300649 | 0.125427129 | 3.12438044 | 6.205044e+02 |
66.478628 | 0.890934844 | 1.23151500 | 0.131683320 | -4.82574173 | 1.342971e+03 |
67.426518 | 0.902266289 | 1.29457343 | 0.138426027 | 1.02245814 | 5.455764e+01 |
67.603959 | 0.913597734 | 1.36324747 | 0.145769197 | -17.49615886 | 1.440635e+04 |
69.707122 | 0.924929178 | 1.43903134 | 0.153872609 | -0.83812929 | 2.966876e+01 |
69.843246 | 0.936260623 | 1.52411994 | 0.162970954 | -10.19653751 | 3.914579e+03 |
74.848732 | 0.947592068 | 1.62194155 | 0.173430814 | 6.44246664 | 1.379913e+03 |
112.729191 | 0.958923513 | 1.73832835 | 0.185875811 | -1.19005849 | 4.099122e+01 |
163.795081 | 0.970254958 | 1.88455395 | 0.201511408 | -4.76603661 | 5.593910e+02 |
198.660139 | 0.981586402 | 2.08767462 | 0.226331231 | 12.31657570 | 2.961359e+03 |
209.375830 | 0.992917847 | 2.45306927 | 0.286093929 | -5.63130896 | 3.874373e+02 |
Fuente: Elaboración propia |
Cálculo del estadístico W
W<-(sum(Tabla_ShapiroWilk$ai_ui)^2)/sum(Tabla_ShapiroWilk$ui2) #calcula el estadístico de prueba W como la suma de los cuadrados de los valores ajustados divididos por la suma de los cuadrados de los residuos
print(W)
## [1] 0.002739454
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
sigma<-exp(0.0030302*log(n)^2-0.082676*log(n)-0.4803)
Wn<-(log(1-W)-mu)/sigma
print(Wn)
## [1] 9.482201
P.value<-pnorm(Wn,lower.tail = FALSE)
print(P.value)
## [1] 1.244875e-21
library(fastGraph)
shadeDist(Wn,ddist = "dnorm",lower.tail = FALSE)
Usando la librería stats
Prueba_ShapiroWilk<-shapiro.test(modelo_estimado$residuals)
print(Prueba_ShapiroWilk)
##
## Shapiro-Wilk normality test
##
## data: modelo_estimado$residuals
## W = 0.94132, p-value = 0.0005937
Wn_salida<-qnorm(prueba_KolmogorovSmirnov$p.value,lower.tail = FALSE)
print(Wn_salida)
## [1] 0.675615