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

Diagnostico de multicolinealidad

prueba de multicolinealidad

Prueba de indice de condicion

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

Libreria mctest

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

Prueba de Farrar Glaubar

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"

libreria psych

library(psych)
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

factores inflacionarios de la varianza(VIF)

inversa_R <- solve(R)
VIFs <- diag(inversa_R)
print(VIFs)
##     disp       hp       wt     qsec 
## 7.985439 5.166758 6.916942 3.133119
library(performance)
VIfs_resultado <- multicollinearity(x=modelo_combustible, verbose=TRUE)
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]

REPUESTAS A PREGUNTAS

1. VIF > 5 o 10:

Cuando el VIF es mayor a 5 o 10, indica la presencia de multicolinealidad severa, lo que implica que los coeficientes estimados tienen varianzas infladas. Esto vuelve inestables las estimaciones, dificultando la interpretación individual de cada variable explicativa, ya que pequeños cambios en los datos pueden generar grandes cambios en los coeficientes.

2. Variable que “roba significancia”:

Sí, existe evidencia de que variables como disp (desplazamiento) y hp (potencia) están altamente correlacionadas, ya que ambas miden características relacionadas con el tamaño y desempeño del motor. Esto puede provocar que una variable absorba el efecto de la otra, reduciendo su significancia estadística dentro del modelo.

3. Índice de condición:

El índice de condición mide la severidad de la multicolinealidad. Valores mayores a 10 indican problemas moderados y mayores a 30 indican multicolinealidad severa. Si el valor calculado es alto, sugiere que existe dependencia lineal fuerte entre las variables explicativas.

Diagnostico de Normalidad

# Residuos
residuos <- residuals(modelo_combustible)

# Histograma
hist(residuos)

# QQ plot
qqnorm(residuos)
qqline(residuos)

# Shapiro-Wilk
shapiro.test(residuos)
## 
##  Shapiro-Wilk normality test
## 
## data:  residuos
## W = 0.93661, p-value = 0.06004
# Jarque-Bera
library(tseries)
## Registered S3 method overwritten by 'quantmod':
##   method            from
##   as.zoo.data.frame zoo
jarque.bera.test(residuos)
## 
##  Jarque Bera Test
## 
## data:  residuos
## X-squared = 3.316, df = 2, p-value = 0.1905

INTERPRETACION:

Si ambas pruebas (Shapiro-Wilk y Jarque-Bera) coinciden en no rechazar la hipótesis nula, se concluye que los residuos siguen una distribución normal. En caso contrario, existiría evidencia de no normalidad, lo que afecta la validez de las pruebas estadísticas en muestras pequeñas.

ANALISIS CRITICO

El modelo presenta indicios de multicolinealidad, especialmente entre variables como desplazamiento y potencia, lo que afecta la estabilidad de los coeficientes y dificulta su interpretación individual. Sin embargo, si los niveles no son excesivamente altos, el modelo aún puede ser útil para predicción. En cuanto a la normalidad, si las pruebas realizadas confirman que los residuos se distribuyen normalmente, se puede confiar en la validez de los intervalos de confianza y pruebas de hipótesis. En caso de detectarse problemas, se podrían aplicar medidas como eliminar variables altamente correlacionadas, transformar variables (por ejemplo, logaritmos) o aumentar el tamaño de la muestra. En general, el modelo es aceptable, pero requiere ajustes para mejorar su robustez inferencial.