GUIA DE LABORATORIO: DIAGNÓSTICO DE SUPUESTOS
library(datasets)
library(printr)
data(mtcars)
head(mtcars, 5)
| mpg | cyl | disp | hp | drat | wt | qsec | vs | am | gear | carb | |
|---|---|---|---|---|---|---|---|---|---|---|---|
| Mazda RX4 | 21.0 | 6 | 160 | 110 | 3.90 | 2.620 | 16.46 | 0 | 1 | 4 | 4 |
| Mazda RX4 Wag | 21.0 | 6 | 160 | 110 | 3.90 | 2.875 | 17.02 | 0 | 1 | 4 | 4 |
| Datsun 710 | 22.8 | 4 | 108 | 93 | 3.85 | 2.320 | 18.61 | 1 | 1 | 4 | 1 |
| Hornet 4 Drive | 21.4 | 6 | 258 | 110 | 3.08 | 3.215 | 19.44 | 1 | 0 | 3 | 1 |
| Hornet Sportabout | 18.7 | 8 | 360 | 175 | 3.15 | 3.440 | 17.02 | 0 | 0 | 3 | 2 |
modelo <- lm(mpg ~ disp + hp + wt + qsec, data = mtcars)
library(stargazer)
stargazer(modelo, title = "Modelo de Regresión", type = "html", digits = 4)
| Dependent variable: | |
| mpg | |
| disp | 0.0027 |
| (0.0107) | |
| hp | -0.0187 |
| (0.0156) | |
| wt | -4.6091*** |
| (1.2659) | |
| qsec | 0.5442 |
| (0.4665) | |
| Constant | 27.3296*** |
| (8.6390) | |
| Observations | 32 |
| R2 | 0.8351 |
| Adjusted R2 | 0.8107 |
| Residual Std. Error | 2.6221 (df = 27) |
| F Statistic | 34.1949*** (df = 4; 27) |
| Note: | p<0.1; p<0.05; p<0.01 |
library(car)
vif_valores<-vif(modelo)
vif_valores
## disp hp wt qsec
## 7.985439 5.166758 6.916942 3.133119
barplot(vif_valores,
main = "Factores Inflacionarios de la Varianza (VIF)",
ylab = "Valor VIF")
abline(h = 5, lty = 2)
abline(h = 10, lty = 2)
barplot(vif_valores,
main = "Factores Inflacionarios de la Varianza (VIF)",
ylab = "Valor VIF")
abline(h = 5, lty = 2)
abline(h = 10, lty = 2)
##ÍNDICE DE CONDICIÓN
library(olsrr)
col_diag <- ols_coll_diag(modelo)
col_diag
## Tolerance and Variance Inflation Factor
## ---------------------------------------
## Variables Tolerance VIF
## 1 disp 0.1252279 7.985439
## 2 hp 0.1935450 5.166758
## 3 wt 0.1445726 6.916942
## 4 qsec 0.3191708 3.133119
##
##
## Eigenvalue and Condition Index
## ------------------------------
## Eigenvalue Condition Index intercept disp hp wt
## 1 4.721487187 1.000000 0.000123237 0.001132468 0.001413094 0.0005253393
## 2 0.216562203 4.669260 0.002617424 0.036811051 0.027751289 0.0002096014
## 3 0.050416837 9.677242 0.001656551 0.120881424 0.392366164 0.0377028008
## 4 0.010104757 21.616057 0.025805998 0.777260487 0.059594623 0.7017528428
## 5 0.001429017 57.480524 0.969796790 0.063914571 0.518874831 0.2598094157
## qsec
## 1 0.0001277169
## 2 0.0046789491
## 3 0.0001952599
## 4 0.0024577686
## 5 0.9925403056
library(mctest)
fg <- imcdiag(modelo)
fg
##
## Call:
## imcdiag(mod = modelo)
##
##
## All Individual Multicollinearity Diagnostics Result
##
## VIF TOL Wi Fi Leamer CVIF Klein IND1 IND2
## disp 7.9854 0.1252 65.1974 101.2889 0.3539 -1.0541 1 0.0134 1.0875
## hp 5.1668 0.1935 38.8897 60.4180 0.4399 -0.6820 0 0.0207 1.0026
## wt 6.9169 0.1446 55.2248 85.7957 0.3802 -0.9130 1 0.0155 1.0635
## qsec 3.1331 0.3192 19.9091 30.9302 0.5650 -0.4136 0 0.0342 0.8464
##
## 1 --> COLLINEARITY is detected by the test
## 0 --> COLLINEARITY is not detected by the test
##
## disp , hp , qsec , coefficient(s) are non-significant may be due to multicollinearity
##
## R-square of y on all x: 0.8351
##
## * use method argument to check which regressors may be the reason of collinearity
## ===================================
library(fastGraph)
shadeDist(15,
ddist = "dchisq",
parm1 = 4,
col = c("black", "red"),
lower.tail = FALSE)
Los valores del Factor Inflacionario de la Varianza (VIF) superiores a 5 indican la presencia de multicolinealidad moderada, mientras que valores mayores a 10 evidencian multicolinealidad severa. En este caso, variables como disp (7.98), hp (5.16) y wt (6.91) presentan valores superiores a 5, lo que sugiere la existencia de multicolinealidad entre los regresores. Esto implica que los coeficientes estimados pueden volverse inestables y presentar errores estándar elevados, dificultando la interpretación individual de cada variable y reduciendo la confiabilidad de las pruebas de significancia.
Sí, existe evidencia de que algunas variables pueden estar “robándose significancia” entre sí. En particular, las variables disp (desplazamiento) y hp (caballos de fuerza) presentan valores elevados de VIF, lo que indica una alta correlación entre ellas. Desde un punto de vista técnico, ambas variables están relacionadas con el tamaño y la potencia del motor, por lo que tienden a moverse conjuntamente. Esta relación provoca que el modelo tenga dificultades para distinguir el efecto individual de cada variable sobre la variable dependiente, lo que puede hacer que una pierda significancia estadística en presencia de la otra.
El Índice de Condición permite evaluar la severidad de la multicolinealidad en el modelo. Valores menores a 10 indican ausencia de multicolinealidad, valores entre 10 y 30 sugieren problemas moderados, y valores superiores a 30 evidencian multicolinealidad severa. En este caso, los valores asociados a las variables muestran niveles que, junto con los altos VIF, confirman la existencia de multicolinealidad moderada en el modelo. Esto refuerza la idea de que los regresores no son completamente independientes entre sí, afectando la estabilidad de las estimaciones.
residuos <- residuals(modelo)
library(tseries) #Prueba de JarqueBera
jb <- jarque.bera.test(residuos)
jb
##
## Jarque Bera Test
##
## data: residuos
## X-squared = 3.316, df = 2, p-value = 0.1905
library(nortest)
ks <- lillie.test(residuos)
ks
##
## Lilliefors (Kolmogorov-Smirnov) normality test
##
## data: residuos
## D = 0.11524, p-value = 0.3446
sw <- shapiro.test(residuos)
sw
##
## Shapiro-Wilk normality test
##
## data: residuos
## W = 0.93661, p-value = 0.06004
Se aplicaron las pruebas de Jarque-Bera, Kolmogorov-Smirnov y Shapiro-Wilk para evaluar la normalidad de los residuos, observándose que sus resultados no son completamente coincidentes. Esto se debe a que cada prueba tiene distinta sensibilidad ante desviaciones de la normalidad. En conjunto, la evidencia sugiere posibles desviaciones, por lo que la normalidad no se cumple de forma estricta # 4. GRÁFICOS DE NORMALIDAD ## Histograma
hist(residuos,
probability = TRUE,
main = "Histograma de residuos",
xlab = "Residuos")
curve(dnorm(x, mean(residuos), sd(residuos)),
add = TRUE)
qqnorm(residuos)
qqline(residuos, col = "red")
resultados <- data.frame(
Prueba = c("Jarque-Bera", "Kolmogorov-Smirnov", "Shapiro-Wilk"),
Estadistico = c(jb$statistic, ks$statistic, sw$statistic),
p_value = c(jb$p.value, ks$p.value, sw$p.value)
)
resultados
| Prueba | Estadistico | p_value | |
|---|---|---|---|
| X-squared | Jarque-Bera | 3.3159574 | 0.1905237 |
| D | Kolmogorov-Smirnov | 0.1152384 | 0.3445667 |
| W | Shapiro-Wilk | 0.9366138 | 0.0600389 |
El modelo presenta limitaciones para la inferencia estadística debido a la presencia de multicolinealidad moderada entre los regresores, evidenciada por valores de VIF superiores a 5 en variables como disp, hp y wt, lo que afecta la precisión y estabilidad de los coeficientes estimados. Además, las pruebas de normalidad de los residuos no son completamente consistentes, lo que sugiere posibles desviaciones de la distribución normal. En consecuencia, aunque el modelo puede ser útil para análisis descriptivo, su uso para inferencia debe hacerse con cautela. Como medidas correctivas, se podría considerar eliminar o combinar variables altamente correlacionadas, aplicar transformaciones a los datos (como logaritmos) o, en caso de ser posible, ampliar el tamaño de la muestra para mejorar la robustez de los resultados.