GUIA DE LABORATORIO: DIAGNÓSTICO DE SUPUESTOS

1. CARGA DE DATOS Y ESTIMACIÓN DEL MODELO

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: mpg = β0 + β1(disp) + β2(hp) + β3(wt) + β4(qsec) + ε

modelo <- lm(mpg ~ disp + hp + wt + qsec, data = mtcars)
library(stargazer)
stargazer(modelo, title = "Modelo de Regresión", type = "html", digits = 4)
Modelo de Regresión
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

2. DIAGNÓSTICO DE MULTICOLINEALIDAD

2.1 FACTORES INFLACIONARIOS DE LA VARIANZA (VIF)

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)

Gráfico VIF

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

2.3 PRUEBA DE FARRAR-GRAUBER

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
## ===================================

Gráfico ilustrativo FG

library(fastGraph)

shadeDist(15,
          ddist = "dchisq",
          parm1 = 4,
          col = c("black", "red"),
          lower.tail = FALSE)

  1. Interpretación del VIF

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.

  1. Variables que “roban 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.

  1. Índice de condición

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.

3. NORMALIDAD DE LOS RESIDUOS

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

3.2 PRUEBA KOLMOGOROV-SMIRNOV (LILLIEFORS)

library(nortest)
ks <- lillie.test(residuos)
ks
## 
##  Lilliefors (Kolmogorov-Smirnov) normality test
## 
## data:  residuos
## D = 0.11524, p-value = 0.3446

3.3 PRUEBA SHAPIRO-WILK

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)

QQ Plot

qqnorm(residuos)
qqline(residuos, col = "red")

5. RESULTADOS TABULARES

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.