Carga de Datos

mtcars
##                      mpg cyl  disp  hp drat    wt  qsec vs am gear carb
## Mazda RX4           21.0   6 160.0 110 3.90 2.620 16.46  0  1    4    4
## Mazda RX4 Wag       21.0   6 160.0 110 3.90 2.875 17.02  0  1    4    4
## Datsun 710          22.8   4 108.0  93 3.85 2.320 18.61  1  1    4    1
## Hornet 4 Drive      21.4   6 258.0 110 3.08 3.215 19.44  1  0    3    1
## Hornet Sportabout   18.7   8 360.0 175 3.15 3.440 17.02  0  0    3    2
## Valiant             18.1   6 225.0 105 2.76 3.460 20.22  1  0    3    1
## Duster 360          14.3   8 360.0 245 3.21 3.570 15.84  0  0    3    4
## Merc 240D           24.4   4 146.7  62 3.69 3.190 20.00  1  0    4    2
## Merc 230            22.8   4 140.8  95 3.92 3.150 22.90  1  0    4    2
## Merc 280            19.2   6 167.6 123 3.92 3.440 18.30  1  0    4    4
## Merc 280C           17.8   6 167.6 123 3.92 3.440 18.90  1  0    4    4
## Merc 450SE          16.4   8 275.8 180 3.07 4.070 17.40  0  0    3    3
## Merc 450SL          17.3   8 275.8 180 3.07 3.730 17.60  0  0    3    3
## Merc 450SLC         15.2   8 275.8 180 3.07 3.780 18.00  0  0    3    3
## Cadillac Fleetwood  10.4   8 472.0 205 2.93 5.250 17.98  0  0    3    4
## Lincoln Continental 10.4   8 460.0 215 3.00 5.424 17.82  0  0    3    4
## Chrysler Imperial   14.7   8 440.0 230 3.23 5.345 17.42  0  0    3    4
## Fiat 128            32.4   4  78.7  66 4.08 2.200 19.47  1  1    4    1
## Honda Civic         30.4   4  75.7  52 4.93 1.615 18.52  1  1    4    2
## Toyota Corolla      33.9   4  71.1  65 4.22 1.835 19.90  1  1    4    1
## Toyota Corona       21.5   4 120.1  97 3.70 2.465 20.01  1  0    3    1
## Dodge Challenger    15.5   8 318.0 150 2.76 3.520 16.87  0  0    3    2
## AMC Javelin         15.2   8 304.0 150 3.15 3.435 17.30  0  0    3    2
## Camaro Z28          13.3   8 350.0 245 3.73 3.840 15.41  0  0    3    4
## Pontiac Firebird    19.2   8 400.0 175 3.08 3.845 17.05  0  0    3    2
## Fiat X1-9           27.3   4  79.0  66 4.08 1.935 18.90  1  1    4    1
## Porsche 914-2       26.0   4 120.3  91 4.43 2.140 16.70  0  1    5    2
## Lotus Europa        30.4   4  95.1 113 3.77 1.513 16.90  1  1    5    2
## Ford Pantera L      15.8   8 351.0 264 4.22 3.170 14.50  0  1    5    4
## Ferrari Dino        19.7   6 145.0 175 3.62 2.770 15.50  0  1    5    6
## Maserati Bora       15.0   8 301.0 335 3.54 3.570 14.60  0  1    5    8
## Volvo 142E          21.4   4 121.0 109 4.11 2.780 18.60  1  1    4    2

Estimacion del Modelo

library(stargazer)
modelo_estimado<-lm(mpg~disp+hp+wt+qsec, data = mtcars)
stargazer(modelo_estimado, title = "Consumo de Conbustible", type="text")
## 
## Consumo de Conbustible
## ===============================================
##                         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

2. Diagnostico de Multicolinealidad

Calculo Manual

library(stargazer)
x_mat<-model.matrix(modelo_estimado)
stargazer(head(x_mat, n=6), type = "text")
## 
## ===================================================
##                   (Intercept) disp hp   wt    qsec 
## ---------------------------------------------------
## Mazda RX4              1      160  110 2.620 16.460
## Mazda RX4 Wag          1      160  110 2.875 17.020
## Datsun 710             1      108  93  2.320 18.610
## Hornet 4 Drive         1      258  110 3.215 19.440
## Hornet Sportabout      1      360  175 3.440 17.020
## Valiant                1      225  105 3.460 20.220
## ---------------------------------------------------
xx_matrix<-t(x_mat) %*% x_mat
stargazer(xx_matrix, type = "text")
## 
## ==========================================================================
##             (Intercept)     disp           hp           wt        qsec    
## --------------------------------------------------------------------------
## (Intercept)     32        7,383.100       4,694      102.952     571.160  
## disp         7,383.100  2,179,627.000 1,291,364.000 27,091.490 128,801.500
## hp             4,694    1,291,364.000    834,278    16,471.740 81,092.160 
## wt            102.952    27,091.490    16,471.740    360.901    1,828.095 
## qsec          571.160    128,801.500   81,092.160   1,828.095  10,293.480 
## --------------------------------------------------------------------------
library(stargazer)
options(scipen = 9999)
Sn<-solve(diag(sqrt(diag(xx_matrix))))
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
## -----------------------------

X^tX Normalizada: Calcular la Matriz Normalizada

library(stargazer)
xx_norm<-(Sn%*%xx_matrix)%*%Sn
stargazer(xx_norm, type = "text", digits = 4)
## 
## ==================================
## 1      0.8840 0.9085 0.9580 0.9952
## 0.8840   1    0.9576 0.9659 0.8599
## 0.9085 0.9576   1    0.9493 0.8751
## 0.9580 0.9659 0.9493   1    0.9485
## 0.9952 0.8599 0.8751 0.9485   1   
## ----------------------------------

Autovalores de X^tX

library(stargazer)
#autovalores
lamdas<-eigen(xx_norm, symmetric = TRUE)
stargazer(lamdas$values, type = "text")
## 
## =============================
## 4.721 0.217 0.050 0.010 0.001
## -----------------------------

CALCULO DE K(X)=√(λmax/λmin)

k<-sqrt(max(lamdas$values)/min(lamdas$values))
print(k)
## [1] 57.48052

INTERPRETACION Comoκ(x) es de 57.48 mayor o igual a 20, la multicolinealidad es severa, y se considera un problema para el modelo ya que hay correlacion entre las varibales.

En el caso de que κ(x)≥30 la multicolinealidad es severa.

Calculo del indice de condicion utilizando la libreria mctest

library(mctest)
x_mat<-model.matrix(modelo_estimado)
mctest(mod = modelo_estimado)
## 
## 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

Como se puede observar donde dice “condition Number” es el indice y podemos concluir que: * Como k(x)>=30 con un valor de 57.48 la multicolinealidad es muy severa considera un problema para seguir ana,izando el modelo.

Calculo del Indice de Condicion usando la libreria “Otsrr”.

library(olsrr)
ols_eigen_cindex(model=modelo_estimado)
##    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

CALCULO MANUAL PARA REALIZAR LA PRUEBA DE FARRAR-GLAUBAR Caculo lRl

library(stargazer)

Zn<-scale(x_mat[, -1])
stargazer(head(Zn, n=6), type = "text")
## 
## =============================================
##                    disp    hp     wt    qsec 
## ---------------------------------------------
## Mazda RX4         -0.571 -0.535 -0.610 -0.777
## Mazda RX4 Wag     -0.571 -0.535 -0.350 -0.464
## Datsun 710        -0.990 -0.783 -0.917 0.426 
## Hornet 4 Drive    0.220  -0.535 -0.002 0.890 
## Hornet Sportabout 1.043  0.413  0.228  -0.464
## Valiant           -0.046 -0.608 0.248  1.327 
## ---------------------------------------------

Calcular la Matriz R

library(stargazer)
n<-nrow(Zn)
R<-(t(Zn)%*%Zn)*(1/(n-1))
stargazer(R, type = "text", digits = 4)
## 
## ====================================
##       disp     hp      wt     qsec  
## ------------------------------------
## disp    1    0.7909  0.8880  -0.4337
## hp   0.7909     1    0.6587  -0.7082
## wt   0.8880  0.6587     1    -0.1747
## qsec -0.4337 -0.7082 -0.1747    1   
## ------------------------------------

Calcular lRl

determinante_R<-det(R)
print(determinante_R)
## [1] 0.02466606

Aplicando la prueba de Farrer Glaubar (Barlett)

m<-ncol(x_mat[, -1])
n<-nrow(x_mat[, -1])
chi_FG<--(n-1-(2*m+5)/6)*log(determinante_R)
print(chi_FG)
## [1] 106.7504

Encontrar el valor critico V.C.

gl<-m*(m-1)/2
VC<-qchisq(p=0.95, df=gl)
print(VC)
## [1] 12.59159

Regla de desicion: Como X^2FG es de 106.7504 >= que el valor critico de 12.59159 se rechaza H0, por lo tanto hay evidencia de colinealidad en los regresores.

** Calculando del estadistico utilizando la libreria “mctest and pysich”**

Calculo de FG usando mctest

library(mctest)
mctest::omcdiag(mod = modelo_estimado)
## 
## Call:
## mctest::omcdiag(mod = modelo_estimado)
## 
## 
## 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

y nuevamente tenemos que el Chi-Square es de 57.4805 superior al valor critico de 7.8 encontrado por lo tanto se detecta como bien lo dice el diagnostico colinealidad en el modelo.

Calculo de FG usando la pysych

library(psych)
FG_test<-cortest.bartlett(x_mat[, -1])
print(FG_test)
## $chisq
## [1] 106.7504
## 
## $p.value
## [1] 0.000000000000000000009757936
## 
## $df
## [1] 6

Nuevamente se confirma que es de 106.7504 el estadistico FG

Calculo de los VIF’S usando “performance”

library(performance)
## Warning: package 'performance' was built under R version 4.5.3
VIFs<-multicollinearity (x=modelo_estimado, verbase=FALSE)
VIFs
## # 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]
plot(VIFs)

INTERPRETACION Si para este modelo se define que el VIF<=2 la variable disp=7.99, la variable hp=5.17, la variable wt=6.92 y la variable qsec=3.13. Se concluye que si hay correlacion entre las variables y por ende el problema de multicolinealidad

Cálculo de los VIF’s usando “car”

library(car)
VIFs_car<-vif(modelo_estimado)
print(VIFs_car)
##     disp       hp       wt     qsec 
## 7.985439 5.166758 6.916942 3.133119

**Calculo de los VIF’S usando la libreria mctes

library(mctest)
mc.plot(mod=modelo_estimado, vif=2)

Preguntas de reflexión: 1. Si el valor de VIF es mayor a 5 o 10, ¿qué implica esto para la interpretación de los coeficientes? 2 Si el VIF es mayor a 5 o 10 Significa que existe una alta correlacion entre las variables e implica que no se puede estimar de manera aislada los efectos de las X’S ya que son linealmente dependientes entre si y no se garantiza interpretabilidad de los coeficientes.

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). El modelo a analizar busca explicar el consumo de combustible (mpg) en función de: disp (desplazamiento), hp (potencia), wt (peso) y qsec (tiempo en cuarto de milla). Si para este modelo se define que el VIF<=2 la variable disp=7.99, la variable hp=5.17, la variable wt=6.92 y la variable qsec=3.13. Se concluye que el consumo de combustible de un vehiculo va a depender del desplzamienti, la potencia, el peso y el tiempo de cuarto en milla y se entiende que estas variables tienen informacion duplicada para explicar el consumo del combustible por ejemplo la variable desplazamiento se relaciona bastante con la variable peso y para que el modelo presente menos colinealidad en este caso es de omitir por lo menos la variable “desplazamiento” y “peso”.

3. ¿Qué indica el Indice de condición en este modelo? Supuestos para la prueba de multicolinealidad utilizando el indice k(x) Sí κ(x) es inferior o igual a 20, la multicolinealidad es leve, no se considera un problema. Para 20<κ(x)<30, la multicolinealidad se considera moderada. En el caso de que κ(x)≥30 la multicolinealidad es severa. Comoκ(x) es de 57.48 mayor a 30, la multicolinealidad es severa, y se considera un problema para el modelo ya que hay correlacion entre las varibales.

Se concluye que κ(x)≥30 la multicolinealidad es severa.

3. DIAGNOTICO DE NORMALIDAD EN LOS RESIDUOS

Verifique el supuesto de Normaidad a traves de” a) La prueba de JB

library(tseries)
salida_JB<-jarque.bera.test(modelo_estimado$residuals)
salida_JB
## 
##  Jarque Bera Test
## 
## data:  modelo_estimado$residuals
## X-squared = 3.316, df = 2, p-value = 0.1905

Rechazar H0 si P<=alfa, alfa=0.05=prueba de significancia H0: 0.1905<=0.05 Se acepta la hipotesis nula. por lo tanto se afirma que los residuos tienen una distribucion normal

existe evidencia estadística suficiente para acepetar la hipótesis nula de que los residuos se distribuyen normalmente. Por lo tanto, el modelo cumple con el supuesto de normalidad bajo la prueba de Jarque-Bera.

Prueba de Normalidad usando la libreria “Nortest”

library(nortest)
prueba_KS<-lillie.test(modelo_estimado$residuals)
prueba_KS
## 
##  Lilliefors (Kolmogorov-Smirnov) normality test
## 
## data:  modelo_estimado$residuals
## D = 0.11524, p-value = 0.3446

Rechazar la hipotesis nula si p<=alfa alfa=0.05=nivel de significancia los residuos no tienen una distribucion normal Aceptar la hipotesis nula si p>=alfa alfa=0.05=nivel de significancia Los residuos tienen una distribucion normal

En este caso 0.3446>0.05 existe evidencia estadística suficiente para acepetar la hipótesis nula de que los residuos se distribuyen normal. Por lo tanto, el modelo cumple con el supuesto de normalidad bajo la prueba de Kolmogorov Smirnov.

Usando la liberia stats (Precargada al inicar R)

salida_SW<-shapiro.test(modelo_estimado$residuals)
print(salida_SW)
## 
##  Shapiro-Wilk normality test
## 
## data:  modelo_estimado$residuals
## W = 0.93661, p-value = 0.06004

Rechazar la hipotesis nula si p<=alfa alfa=0.05=nivel de significancia los residuos no tienen una distribucion normal Aceptar la hipotesis nula si p>=alfa alfa=0.05=nivel de significancia Los residuos tienen una distribucion normal

En este caso 0.06004>0.05 existe evidencia estadística suficiente para acepetar la hipótesis nula de que los residuos se distribuyen normal. Por lo tanto, el modelo cumple con el supuesto de normalidad bajo la prueba de Shapiro Wilk.

?Son coincidentes las pruebas en sus resultados Si, Bajo la prueba de Jarque Bera, Kolmogorov Smirnov y Shapiro Wilk se ha aceptado la hipotesis nula utilizando el p-value para probar las hipotesis y se concluye que el modelo no tiene problemas bajo el supuesto de Normalidad.

4. Analisis Critico (Reporte Final)

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?)

El modelo actual no es confiable para realizar inferencia estadística debido a que presenta problemas críticos que violan los supuestos del modelo de regresión lineal clásico. Específicamente, la detección de multicolinealidad mediante el VIF indica que las variables independientes están altamente correlacionadas, lo que infla la varianza de los coeficientes y los vuelve inestables. Además, la falta de normalidad en los residuos impide que las pruebas de hipótesis sean válidas para muestras pequeñas. Como medidas correctivas, propongo eliminar la variable que presente el mayor conflicto de multicolinealidad para simplificar el modelo o, alternativamente, realizar una transformación de datos (como el uso de logaritmos) para corregir sesgos y estabilizar la varianza de los residuos. Finalmente, buscar una muestra más grande ayudaría a mejorar la normalidad por el Teorema del Límite Central y reduciría el error estándar de las estimaciones.