#Modelar el modelo
library(mctest)
library(stargazer)
##
## 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
data(mtcars)
modelo_combustible <- lm(data = mtcars, formula = mpg~disp+hp+wt+qsec)
stargazer(modelo_combustible, type = "text")
##
## ===============================================
## Dependent variable:
## ---------------------------
## mpg
## -----------------------------------------------
## disp 0.003
## (0.011)
##
## hp -0.019
## (0.016)
##
## wt -4.609***
## (1.266)
##
## qsec 0.544
## (0.466)
##
## Constant 27.330***
## (8.639)
##
## -----------------------------------------------
## Observations 32
## R2 0.835
## Adjusted R2 0.811
## Residual Std. Error 2.622 (df = 27)
## F Statistic 34.195*** (df = 4; 27)
## ===============================================
## Note: *p<0.1; **p<0.05; ***p<0.01
matriz_x <- model.matrix(modelo_combustible)
matriz_xx <-t(matriz_x)%*%matriz_x
options(scipen = 999)
Sn<-solve(diag(sqrt(diag(matriz_xx))))
stargazer(Sn,type = "text")
##
## =============================
## 0.177 0 0 0 0
## 0 0.001 0 0 0
## 0 0 0.001 0 0
## 0 0 0 0.053 0
## 0 0 0 0 0.010
## -----------------------------
# Normalizar
matriz_xx_norm <- (Sn%*%matriz_xx)%*%Sn
# autovalores
autovalores <- eigen(matriz_xx_norm, symmetric = TRUE)
print(autovalores$values)
## [1] 4.721487187 0.216562203 0.050416837 0.010104757 0.001429017
#Calculo de Kapa
kapa <- sqrt(max(autovalores$values)/min(autovalores$values))
print(kapa)
## [1] 57.48052
mctest(modelo_combustible)
##
## Call:
## omcdiag(mod = mod, Inter = TRUE, detr = detr, red = red, conf = conf,
## theil = theil, cn = cn)
##
##
## Overall Multicollinearity Diagnostics
##
## MC Results detection
## Determinant |X'X|: 0.0247 0
## Farrar Chi-Square: 106.7504 1
## Red Indicator: 0.6542 1
## Sum of Lambda Inverse: 23.2023 1
## Theil's Method: 0.7121 1
## Condition Number: 57.4805 1
##
## 1 --> COLLINEARITY is detected by the test
## 0 --> COLLINEARITY is not detected by the test
Conclusión de la prueba de indice de condición. Como el valor de Kapa () es mayor que 30, se considera que la multicolinealidad es severa.
Zn<-scale(matriz_x[,-1])
n2<-nrow(Zn)
R<-(t(Zn)%*%Zn)*(1/(n2-1))
stargazer(R, type ="text")
##
## ================================
## disp hp wt qsec
## --------------------------------
## disp 1 0.791 0.888 -0.434
## hp 0.791 1 0.659 -0.708
## wt 0.888 0.659 1 -0.175
## qsec -0.434 -0.708 -0.175 1
## --------------------------------
determinante_R <- det(R)
print(determinante_R)
## [1] 0.02466606
# Calculo del estadistico de prueba
m<-ncol(matriz_x[,-1])
n<-nrow(matriz_x[,-1])
chi_farrar<--(n-1-(2*m+5)/6)*log(determinante_R)
print(chi_farrar)
## [1] 106.7504
# Calculo del Valor Critico
gl = m*(m-1)/2
VC <- qchisq(p=0.95, df=gl)
print(VC)
## [1] 12.59159
# Prueba
resultado1 <- ifelse(chi_farrar>VC, "Rechazar prueba nula","No rechazar prueba nula")
print(resultado1)
## [1] "Rechazar prueba nula"
library(psych)
## Warning: package 'psych' was built under R version 4.5.3
FG_test <- cortest.bartlett(matriz_x[,-1])
## R was not square, finding R from data
print(FG_test)
## $chisq
## [1] 106.7504
##
## $p.value
## [1] 0.000000000000000000009757936
##
## $df
## [1] 6
Conclusión de la prueba de Farrar GLaubar El p.value nos dios 0.0000000000000000000097, y con un nivel de significancia del 5%, comparando 0.0000000000000000000097< 0.05 se concluye que se rechaza la hipotesis nula ppor lo tanto hay evidencia de colinealidad en los regresores
inversa_R <- solve(R)
VIFs <- diag(inversa_R)
print(VIFs)
## disp hp wt qsec
## 7.985439 5.166758 6.916942 3.133119
library(performance)
## Warning: package 'performance' was built under R version 4.5.3
VIfs_resultado <- multicollinearity(x=modelo_combustible, verbose=FALSE)
VIfs_resultado
## # Check for Multicollinearity
##
## Low Correlation
##
## Term VIF VIF 95% CI adj. VIF Tolerance Tolerance 95% CI
## qsec 3.13 [2.10, 5.15] 1.77 0.32 [0.19, 0.48]
##
## Moderate Correlation
##
## Term VIF VIF 95% CI adj. VIF Tolerance Tolerance 95% CI
## disp 7.99 [4.92, 13.44] 2.83 0.13 [0.07, 0.20]
## hp 5.17 [3.28, 8.62] 2.27 0.19 [0.12, 0.30]
## wt 6.92 [4.30, 11.61] 2.63 0.14 [0.09, 0.23]
library(mctest)
mc.plot(mod = modelo_combustible,vif = 5)
Realiza las pruebas de Colinealidad vistas en clase. Preguntas de reflexión:
Si el valor de VIF es mayor a 5 o 10, ¿qué implica esto para la interpretación de los coeficientes? Un valor de VIF superior a 5 o 10 indica la presencia de multicolinealidad severa en las variables del modelo. Para la interpretación de los coeficientes, esto implica que las estimaciones de los parámetros se vuelven inestables y sus errores estándar se inflan artificialmente.
Observando los resultados: ¿Existe alguna variable en este modelo que parezca estar “robándole” significancia a las demás? Justifica basándote en su correlación técnica (ej. desplazamiento vs. potencia). En este modelo, las variables desplazamiento (disp) y potencia (hp) muestran una correlación técnica muy alta entre sí. La variable desplazamiento parece estar “robándole” significancia a la potencia (o viceversa), debido a que ambas miden aspectos muy similares del motor
¿Qué indica el Indice de condición en este modelo? En este model el Índice de Condición es superior a 30, indica que existe una multicolinealidad severa. Esto confirma que los resultados del modelo podrían estar sesgados y que la inferencia estadística sobre los coeficientes individuales no es totalmente confiable debido a la fuerte interdependencia entre las variables independientes. Ya que pequeños cambios en la matriz de información generan grandes cambios en nuestros parámetros.
library(fitdistrplus)
## Warning: package 'fitdistrplus' was built under R version 4.5.3
## Cargando paquete requerido: MASS
## Cargando paquete requerido: survival
library(fitdistrplus)
fit_normal<-fitdist(data = modelo_combustible$residuals,distr = "norm")
plot(fit_normal)
library(tseries)
## Registered S3 method overwritten by 'quantmod':
## method from
## as.zoo.data.frame zoo
salida_JB <- jarque.bera.test(modelo_combustible$residuals)
salida_JB
##
## Jarque Bera Test
##
## data: modelo_combustible$residuals
## X-squared = 3.316, df = 2, p-value = 0.1905
library(fastGraph)
## Warning: package 'fastGraph' was built under R version 4.5.3
alpha_sig<-0.05
JB<-salida_JB$statistic
gl<-salida_JB$parameter
VC<-qchisq(1-alpha_sig,gl,lower.tail = TRUE)
shadeDist(JB,ddist = "dchisq",
parm1 = gl,
lower.tail = FALSE,xmin=0,
sub=paste("VC:",round(VC,2)," ","JB:",round(JB,2)))
# Cargar las librerías necesarias para la manipulación de datos y visualización de tablas
library(dplyr)
##
## Adjuntando el paquete: 'dplyr'
## The following object is masked from 'package:MASS':
##
## select
## The following objects are masked from 'package:stats':
##
## filter, lag
## The following objects are masked from 'package:base':
##
## intersect, setdiff, setequal, union
library(gt)
## Warning: package 'gt' was built under R version 4.5.3
# 1. Preparación de los datos básicos
# Extraemos el número total de observaciones (n) de los residuos del modelo
n_obs <- length(modelo_combustible$residuals)
# Guardamos los residuales (u_i) en un vector para facilitar su manejo
residuos2 <- modelo_combustible$residuals
# 2. Cálculo manual de los momentos estadísticos (Páginas 5 y 6 del documento)
tabla_JB_referencia <- data.frame(u = residuos2) %>%
summarise(
# n: Tamaño de la muestra
n = n(),
# sigma: Desviación estándar calculada como la raíz cuadrada de la varianza muestral (sum u^2 / n)
sigma = (sum(u^2)/n)^(1/2),
# mu3: Tercer momento central (usado para medir la asimetría)
mu3 = sum(u^3)/n,
# mu4: Cuarto momento central (usado para medir la curtosis)
mu4 = sum(u^4)/n
) %>%
mutate(
# asimetria (alpha3): Mide la falta de simetría de los residuos. En una normal debe ser 0.
asimetria = mu3 / (sigma^3),
# curtosis (alpha4): Mide qué tan "puntiaguda" es la distribución. En una normal debe ser 3.
curtosis = mu4 / (sigma^4),
# Cálculo del estadístico JB (Fórmula de la pág. 6):
# JB = (n/6)*(S^2) + (n/24)*(K-3)^2
# Donde S es asimetría y K es curtosis.
JB = (n/6)*(asimetria^2) + (n/24)*((curtosis - 3)^2)
)
# 3. Presentación de resultados en formato de tabla profesional
tabla_JB_referencia %>%
gt() %>%
# Añade el título principal a la tabla
tab_header(title = "Cálculo Manual de Jarque-Bera (Referencia Documento)") %>%
# Da formato numérico a todas las columnas, limitando a 4 decimales para mayor claridad
fmt_number(columns = everything(), decimals = 4)
| Cálculo Manual de Jarque-Bera (Referencia Documento) | ||||||
| n | sigma | mu3 | mu4 | asimetria | curtosis | JB |
|---|---|---|---|---|---|---|
| 32.0000 | 2.4085 | 10.8432 | 110.3520 | 0.7761 | 3.2791 | 3.3160 |
conclución de la prueba de Jaque Bera. Como 3.32(JB) < 5.991(VC), Se concluye que no se rechaza la hipotesis nula, Los residuos tienen distribución normal
esiduos<-modelo_combustible$residuals # Crea un vector con los residuos del modelo estimado
residuos2 %>% # 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 |
|---|---|---|---|---|---|---|---|
| -3.8664153 | 21 | 0.03125 | 0.00000 | -1.58000709 | 0.05705262 | 0.025802622 | 0.057052622 |
| -3.7219399 | 23 | 0.06250 | 0.03125 | -1.52096733 | 0.06413402 | 0.001634018 | 0.032884018 |
| -2.9249910 | 6 | 0.09375 | 0.06250 | -1.19529489 | 0.11598592 | 0.022235918 | 0.053485918 |
| -2.8335055 | 22 | 0.12500 | 0.09375 | -1.15790946 | 0.12345049 | 0.001549506 | 0.029700494 |
| -2.5153146 | 3 | 0.15625 | 0.12500 | -1.02788103 | 0.15200290 | 0.004247104 | 0.027002896 |
| -2.1098370 | 11 | 0.18750 | 0.15625 | -0.86218297 | 0.19429342 | 0.006793419 | 0.038043419 |
| -1.8775253 | 14 | 0.21875 | 0.18750 | -0.76724902 | 0.22146674 | 0.002716736 | 0.033966736 |
| -1.5839621 | 1 | 0.25000 | 0.21875 | -0.64728469 | 0.25872385 | 0.008723854 | 0.039973854 |
| -1.5812652 | 7 | 0.28125 | 0.25000 | -0.64618256 | 0.25908057 | 0.022169435 | 0.009080565 |
| -1.5256810 | 32 | 0.31250 | 0.28125 | -0.62346815 | 0.26648846 | 0.046011536 | 0.014761536 |
| -1.0761488 | 24 | 0.34375 | 0.31250 | -0.43976723 | 0.33005285 | 0.013697147 | 0.017552853 |
| -1.0743171 | 9 | 0.37500 | 0.34375 | -0.43901872 | 0.33032399 | 0.044676013 | 0.013426013 |
| -0.8170837 | 29 | 0.40625 | 0.37500 | -0.33390049 | 0.36922732 | 0.037022675 | 0.005772675 |
| -0.7133657 | 2 | 0.43750 | 0.40625 | -0.29151623 | 0.38532827 | 0.052171732 | 0.020921732 |
| -0.4169002 | 30 | 0.46875 | 0.43750 | -0.17036590 | 0.43236119 | 0.036388805 | 0.005138805 |
| -0.3833408 | 10 | 0.50000 | 0.46875 | -0.15665188 | 0.43775961 | 0.062240392 | 0.030990392 |
| -0.3742943 | 26 | 0.53125 | 0.50000 | -0.15295502 | 0.43921687 | 0.092033127 | 0.060783127 |
| -0.3244422 | 4 | 0.56250 | 0.53125 | -0.13258300 | 0.44726159 | 0.115238410 | 0.083988410 |
| 0.0522694 | 15 | 0.59375 | 0.56250 | 0.02135984 | 0.50852070 | 0.085229304 | 0.053979304 |
| 0.2096827 | 13 | 0.62500 | 0.59375 | 0.08568663 | 0.53414223 | 0.090857767 | 0.059607767 |
| 0.2708056 | 5 | 0.65625 | 0.62500 | 0.11066445 | 0.54405878 | 0.112191219 | 0.080941219 |
| 0.8242600 | 27 | 0.68750 | 0.65625 | 0.33683309 | 0.63187864 | 0.055621362 | 0.024371362 |
| 0.9856164 | 12 | 0.71875 | 0.68750 | 0.40277125 | 0.65644174 | 0.062308257 | 0.031058257 |
| 1.1599816 | 16 | 0.75000 | 0.71875 | 0.47402542 | 0.68225911 | 0.067740891 | 0.036490891 |
| 1.2050398 | 19 | 0.78125 | 0.75000 | 0.49243841 | 0.68879527 | 0.092454727 | 0.061204727 |
| 1.6307713 | 31 | 0.81250 | 0.78125 | 0.66641320 | 0.74742649 | 0.065073512 | 0.033823512 |
| 1.6563961 | 8 | 0.84375 | 0.81250 | 0.67688474 | 0.75076046 | 0.092989544 | 0.061739544 |
| 2.5145182 | 25 | 0.87500 | 0.84375 | 1.02755556 | 0.84792053 | 0.027079468 | 0.004170532 |
| 2.7033586 | 28 | 0.90625 | 0.87500 | 1.10472502 | 0.86536062 | 0.040889380 | 0.009639380 |
| 5.2230317 | 20 | 0.93750 | 0.90625 | 2.13438716 | 0.98359445 | 0.046094449 | 0.077344449 |
| 5.6377518 | 18 | 0.96875 | 0.93750 | 2.30386212 | 0.98938481 | 0.020634808 | 0.051884808 |
| 5.6468467 | 17 | 1.00000 | 0.96875 | 2.30757875 | 0.98948871 | 0.010511289 | 0.020738711 |
| Fuente: Elaboración propia | |||||||
# Estadistico de KS
D<-max(max(tabla_KS$dif1),max(tabla_KS$dif2))
print(D)
## [1] 0.1152384
# Comparando con el Valor Crítico de Lilliefors
# Definir el nivel de significancia
alpha_sig <- 0.05
# Calcular Valor Crítico aproximado (para n > 30)
# La constante 0.886 es para alpha = 0.05
VC_Lillie <- 0.886 / sqrt(n_obs)
# Regla de decisión.
decision <- ifelse(D > VC_Lillie, "Rechazar H0", "No Rechazar H0")
print(paste("Tamaño de muestra (n):", n_obs))
## [1] "Tamaño de muestra (n): 32"
print(paste("Estadístico D calculado:", round(D, 7)))
## [1] "Estadístico D calculado: 0.1152384"
print(paste("Valor Crítico de tabla:", round(VC_Lillie, 7)))
## [1] "Valor Crítico de tabla: 0.1566242"
print(paste("Decisión:", decision))
## [1] "Decisión: No Rechazar H0"
library(nortest)
## Warning: package 'nortest' was built under R version 4.5.2
prueba_KS <- lillie.test(modelo_combustible$residuals)
prueba_KS
##
## Lilliefors (Kolmogorov-Smirnov) normality test
##
## data: modelo_combustible$residuals
## D = 0.11524, p-value = 0.3446
Conclusión de la prueba KS. Como 0..1152384 (D) < 0.1566242(VC), se concluye que no se rechaza la hipótesis nula. Los residuos siguen una distribución normal.
library(dplyr)
library(gt)
residuos2<-modelo_combustible$residuals
residuos2 %>%
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
m4<-sum(tabla_SW$mi^2)
n4<-nrow(mtcars)
theta<-1/sqrt(n4)
tabla_SW$ai[n4]<- -2.706056*theta^5+4.434685*theta^4-2.071190*theta^3-0.147981*theta^2+0.2211570*theta+tabla_SW$mi[n4]/sqrt(m4)
tabla_SW$ai[n4-1]<- -3.582633*theta^5+5.682633*theta^4-1.752461*theta^3-0.293762*theta^2+0.042981*theta+tabla_SW$mi[n4-1]/sqrt(m4)
tabla_SW$ai[1]<- -tabla_SW$ai[n4]
tabla_SW$ai[2]<- -tabla_SW$ai[n4-1]
omega<-(m4-2*tabla_SW$mi[n4]^2-2*tabla_SW$mi[n4-1]^2)/(1-2*tabla_SW$ai[n4]^2-2*tabla_SW$ai[n4-1]^2)
tabla_SW$ai[3:(n4-2)]<-tabla_SW$mi[3:(n4-2)]/sqrt(omega)
tabla_SW %>%
mutate(ai_ui=ai*residuales,ui2=residuales^2) ->tabla_SW
tabla_SW %>%
gt() %>% tab_header("Tabla para calcular el Estadistico W") %>% # Agrega un encabezado a la tabla
tab_source_note(source_note = "Fuente: Elaboración propia")
| Tabla para calcular el Estadistico W | |||||
| residuales | pi | mi | ai | ai_ui | ui2 |
|---|---|---|---|---|---|
| -3.8664153 | 0.01937984 | -2.06672907 | -0.407971522 | 1.577387330 | 14.94916721 |
| -3.7219399 | 0.05038760 | -1.64110706 | -0.296267293 | 1.102689045 | 13.85283628 |
| -2.9249910 | 0.08139535 | -1.39574699 | -0.248692215 | 0.727422479 | 8.55557209 |
| -2.8335055 | 0.11240310 | -1.21384688 | -0.216281511 | 0.612834858 | 8.02875360 |
| -2.5153146 | 0.14341085 | -1.06511983 | -0.189781537 | 0.477360277 | 6.32680768 |
| -2.1098370 | 0.17441860 | -0.93684711 | -0.166926086 | 0.352186833 | 4.45141219 |
| -1.8775253 | 0.20542636 | -0.82239396 | -0.146532987 | 0.275119397 | 3.52510140 |
| -1.5839621 | 0.23643411 | -0.71782010 | -0.127900165 | 0.202589020 | 2.50893608 |
| -1.5812652 | 0.26744186 | -0.62056827 | -0.110571972 | 0.174843606 | 2.50039947 |
| -1.5256810 | 0.29844961 | -0.52886482 | -0.094232382 | 0.143768554 | 2.32770247 |
| -1.0761488 | 0.32945736 | -0.44141204 | -0.078650169 | 0.084639285 | 1.15809624 |
| -1.0743171 | 0.36046512 | -0.35721583 | -0.063648210 | 0.068378362 | 1.15415730 |
| -0.8170837 | 0.39147287 | -0.27548228 | -0.049085041 | 0.040106585 | 0.66762569 |
| -0.7133657 | 0.42248062 | -0.19555148 | -0.034843085 | 0.024855860 | 0.50889056 |
| -0.4169002 | 0.45348837 | -0.11685275 | -0.020820656 | 0.008680136 | 0.17380580 |
| -0.3833408 | 0.48449612 | -0.03887224 | -0.006926201 | 0.002655095 | 0.14695018 |
| -0.3742943 | 0.51550388 | 0.03887224 | 0.006926201 | -0.002592437 | 0.14009622 |
| -0.3244422 | 0.54651163 | 0.11685275 | 0.020820656 | -0.006755099 | 0.10526272 |
| 0.0522694 | 0.57751938 | 0.19555148 | 0.034843085 | 0.001821227 | 0.00273209 |
| 0.2096827 | 0.60852713 | 0.27548228 | 0.049085041 | 0.010292282 | 0.04396682 |
| 0.2708056 | 0.63953488 | 0.35721583 | 0.063648210 | 0.017236289 | 0.07333566 |
| 0.8242600 | 0.67054264 | 0.44141204 | 0.078650169 | 0.064828188 | 0.67940453 |
| 0.9856164 | 0.70155039 | 0.52886482 | 0.094232382 | 0.092876982 | 0.97143970 |
| 1.1599816 | 0.73255814 | 0.62056827 | 0.110571972 | 0.128261451 | 1.34555727 |
| 1.2050398 | 0.76356589 | 0.71782010 | 0.127900165 | 0.154124786 | 1.45212086 |
| 1.6307713 | 0.79457364 | 0.82239396 | 0.146532987 | 0.238961790 | 2.65941502 |
| 1.6563961 | 0.82558140 | 0.93684711 | 0.166926086 | 0.276495710 | 2.74364789 |
| 2.5145182 | 0.85658915 | 1.06511983 | 0.189781537 | 0.477209125 | 6.32280165 |
| 2.7033586 | 0.88759690 | 1.21384688 | 0.216281511 | 0.584686474 | 7.30814753 |
| 5.2230317 | 0.91860465 | 1.39574699 | 0.248692215 | 1.298927330 | 27.28006053 |
| 5.6377518 | 0.94961240 | 1.64110706 | 0.296267293 | 1.670281449 | 31.78424483 |
| 5.6468467 | 0.98062016 | 2.06672907 | 0.407971522 | 2.303752631 | 31.88687740 |
| Fuente: Elaboración propia | |||||
W<-(sum(tabla_SW$ai_ui)^2)/sum(tabla_SW$ui2)
print(W)
## [1] 0.9366138
# Calculo de Wn
mu<-0.0038915*log(n4)^3-0.083751*log(n4)^2-0.31082*log(n4)-1.5861
sigma<-exp(0.0030302*log(n)^2-0.082676*log(n4)-0.4803)
Wn<-(log(1-W)-mu)/sigma
print(Wn)
## [1] 1.554447
# Valor de pivarios
p.value<-pnorm(Wn,lower.tail = FALSE)
print(p.value)
## [1] 0.06003893
alpha_sig <- 0.05
# Usamos el p.value calculado en el paso anterior
conclusion_final <- ifelse(p.value > alpha_sig,
"No se rechaza la Hipótesis Nula (Los residuos son Normales)",
"Se rechaza la Hipótesis Nula (Los residuos NO son Normales)")
conclusion_final
## [1] "No se rechaza la Hipótesis Nula (Los residuos son Normales)"
# Forzamos los límites del eje X para que el 1.55 sea visible y calculable
fastGraph::shadeDist(1.554447, ddist = "dnorm", lower.tail = FALSE, xmin = -4, xmax = 4)
#### Libreria Stats
salida_SW <- shapiro.test(modelo_combustible$residuals)
print(salida_SW)
##
## Shapiro-Wilk normality test
##
## data: modelo_combustible$residuals
## W = 0.93661, p-value = 0.06004
Wn_salida<-qnorm(salida_SW$p.value,lower.tail = FALSE)
print(Wn_salida)
## [1] 1.554447
Conclusión de la prueba de Shapiro Wilk como 0.06583 (P_value) > 0.05(alpha), se concluye que no se rechaza la hipotesis nula, los residuos siguen una distribución normal.
Redacta un párrafo (máximo 150 palabras) respondiendo lo siguiente:
¿Es este modelo confiable para realizar inferencia estadística?
Si detectaste problemas de multicolinealidad o falta de normalidad, ¿qué medidas correctivas propondrías? (Pista: ¿Sería correcto eliminar una variable, transformar los datos o buscar una muestra más grande?)
Aunque el modelo sea “válido” con respecto al supuesto de seguir una distribución normal ya que las tres pruebas arrojaron que no rechazan la hipotesis nula, sin embrago la presencia de multicolinealidad severa hace que los coeficientes sean muy inestables (tengan varianzas grandes), esto dificulta confiar en el valor específico del impacto de cada variable. La muestra es de 32 observaciones basandome en el dataset de “mtcars” posiblemente los problemas de multicolinealidad se resuelva aumentando el tamaño de la muestra. También otra opción es eliminar una variable, por la alta correlación entre hp, dips y Wt.