Practica de colinealidad
Se presenta a continuación el desarrollo de la practica, pruebas de colinealidad a partir de la siguiente información.
Importación de datos
library(wooldridge)
data("hprice1")
head(force(hprice1), n=5) # Mostrar las primeras 5 observaciones## price assess bdrms lotsize sqrft colonial lprice lassess llotsize lsqrft
## 1 300 349.1 4 6126 2438 1 5.703783 5.855359 8.720297 7.798934
## 2 370 351.5 3 9903 2076 1 5.913503 5.862210 9.200593 7.638198
## 3 191 217.7 3 5200 1374 0 5.252274 5.383118 8.556414 7.225482
## 4 195 231.8 3 4600 1448 1 5.273000 5.445875 8.433811 7.277938
## 5 373 319.1 4 6095 2514 1 5.921578 5.765504 8.715224 7.829630
Desarrollo de la practica.
1. Estimación del modelo.
Se estima el modelo a partir de los datos y se presenta en formato Apa utilizando la libreria Stargazer
\(price = ˆα + ˆα1(lotsize) + ˆα2(sqrft) + ˆα3(bdrms) + 𝑒\)
options(scipen = 999999)
library(wooldridge)
library(stargazer)
data(hprice1)
modelo_estimado<-lm(price~lotsize+sqrft+bdrms,data=hprice1)
stargazer(modelo_estimado, title = "Modelo estimado", type = "html")| Dependent variable: | |
| price | |
| lotsize | 0.002*** |
| (0.001) | |
| sqrft | 0.123*** |
| (0.013) | |
| bdrms | 13.853 |
| (9.010) | |
| Constant | -21.770 |
| (29.475) | |
| Observations | 88 |
| R2 | 0.672 |
| Adjusted R2 | 0.661 |
| Residual Std. Error | 59.833 (df = 84) |
| F Statistic | 57.460*** (df = 3; 84) |
| Note: | p<0.1; p<0.05; p<0.01 |
2. Verificación de evidencia de no colinealidad.
Se verifica la evidencia de colinealidad menciante el indice de condición, prueba FG y Factores inflacionarios de la varianza.
a) Indice de condición y prueba de FG.
Indice de condición.
En primer lugar, el número que brinda el indice de condición mide la sensibilidad de las estimaciones mínimo cuadráticas ante pequeños cambios en los datos. El indice se representa de la siguiente manera:
\[k(x)= √ 𝛌max/𝛌min\]
Se interpreta de la siguiente manera:
Sí \(k(x) ≤ 20\), la multicolinealidad es leve.
Para \(20< k(x) <30\), la multicolinealidad se considera moderada
En el caso de que \(K(x)≥30\) la multicolinealidad es severa.
Calculo manual.
Calculo de la sigma matriz \(X^tX\)
| (Intercept) | lotsize | sqrft | bdrms | |
| 1 | 1 | 6,126 | 2,438 | 4 |
| 2 | 1 | 9,903 | 2,076 | 3 |
| 3 | 1 | 5,200 | 1,374 | 3 |
| 4 | 1 | 4,600 | 1,448 | 3 |
| 5 | 1 | 6,095 | 2,514 | 4 |
| 6 | 1 | 8,566 | 2,754 | 5 |
| (Intercept) | lotsize | sqrft | bdrms | |
| (Intercept) | 88 | 793,748 | 177,205 | 314 |
| lotsize | 793,748 | 16,165,159,010 | 1,692,290,257 | 2,933,767 |
| sqrft | 177,205 | 1,692,290,257 | 385,820,561 | 654,755 |
| bdrms | 314 | 2,933,767 | 654,755 | 1,182 |
Posteriomente se normaliza la matriz, con la finalidad de evitar sesgos de escala.
library(stargazer)
options(scipen = 999)
Sn<-solve(diag(sqrt(diag(XX_matrix))))
stargazer(Sn,type = "html")| 0.107 | 0 | 0 | 0 |
| 0 | 0.00001 | 0 | 0 |
| 0 | 0 | 0.0001 | 0 |
| 0 | 0 | 0 | 0.029 |
Matriz normalizada:
| 1 | 0.6655 | 0.9617 | 0.9736 |
| 0.6655 | 1 | 0.6776 | 0.6712 |
| 0.9617 | 0.6776 | 1 | 0.9696 |
| 0.9736 | 0.6712 | 0.9696 | 1 |
Cálculo de autovalores
library(stargazer)
#autovalores
lambdas<-eigen(XX_norm,symmetric = TRUE)
stargazer(lambdas$values,type = "html")| 3.482 | 0.455 | 0.039 | 0.025 |
Finalmente se realiza el cálculo del indice.\(k(x)= √ 𝛌max/𝛌min\)
## [1] 11.86778
Interpretación: \[11.86778 < 20\] De acuerdo a la interpretación inicial, el indice obtenido es menor a 30 y menor a 20, por lo cual indica que la multicolieanidad es leve y no se considera un problema.
Utilizando libreria “mctest”
##
## 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.6918 0
## Farrar Chi-Square: 31.3812 1
## Red Indicator: 0.3341 0
## Sum of Lambda Inverse: 3.8525 0
## Theil's Method: -0.7297 0
## Condition Number: 11.8678 0
##
## 1 --> COLLINEARITY is detected by the test
## 0 --> COLLINEARITY is not detected by the test
Interpretación:Los resultados aplicando la libreria mctest, indica que existe colinealidad, el numero de condición es de 11.8678. De acuerdo con la interpretación del indice K, 11.8670 es menos que 20 lo cual confirma que existe colinealidad a nivel leve y no se considera un problema. Este resultado coincide con el obtenido mediante el calculo manual.
Utilizando libreria “olsrr”
## Eigenvalue Condition Index intercept lotsize sqrft bdrms
## 1 3.48158596 1.000000 0.003663034 0.0277802824 0.004156293 0.002939554
## 2 0.45518380 2.765637 0.006800735 0.9670803174 0.006067321 0.005096396
## 3 0.03851083 9.508174 0.472581427 0.0051085488 0.816079307 0.016938178
## 4 0.02471941 11.867781 0.516954804 0.0000308514 0.173697079 0.975025872
Interpretacion: De igual forma, el resultado de la segunda columna y ultima fila, es de 11.867781 que coincide con las pruebas anteriores.
Prueba de Farrar - Glaubar
En general, la prueba FG identifica si a nivel poblacional, existe presencia de independencia estadistica en los regresores del modelo. Mediante la matriz de correlación muestral R, ademas se verifica si a nivel poblacional dicha matriz de correlacion corresponde a una matriz identidad, para ello las hipotesis de la prueba son las siguientes:
\[H0:R∼I\] \[H1:R≁I\]
- Si no se rechaza H0, no hay evidencia de multicolinealidad, caso contrario
- Si se rechaza H0, hay evidencia de multicolinealidad.
Regla de desición: Rechazar {H_0} si \(X ^2_{FG} ≥ V.C\) , o si \(p ≤ α\)
Cálculo manual.
Calculo de |R|
| lotsize | sqrft | bdrms | |
| 1 | -0.284 | 0.735 | 0.513 |
| 2 | 0.087 | 0.108 | -0.675 |
| 3 | -0.375 | -1.108 | -0.675 |
| 4 | -0.434 | -0.980 | -0.675 |
| 5 | -0.287 | 0.867 | 0.513 |
| 6 | -0.045 | 1.283 | 1.702 |
Calcular la matriz R
library(stargazer)
n<-nrow(Zn)
R<-(t(Zn)%*%Zn)*(1/(n-1))
#También se puede calcular R a través de cor(X_mat[,-1])
stargazer(R,type = "html",digits = 4)| lotsize | sqrft | bdrms | |
| lotsize | 1 | 0.1838 | 0.1363 |
| sqrft | 0.1838 | 1 | 0.5315 |
| bdrms | 0.1363 | 0.5315 | 1 |
Calcular |R|
## [1] 0.6917931
Aplicando la prueba de Farrer Glaubar (Bartlett)
Estadistico \(X_{FG}^2\)
## [1] 31.38122
Valor critico:
## [1] 7.814728
Regla de desición: Rechazar {H_0} si \(X ^2_{FG} ≥ V.C\) , o si \(p ≤ α\)
Interpretación: El valor crítico obtenido de forma manual es de 7.814728 y el estadistico \(X ^2_{FG}\) es de 31.38122. En conclusión, el estadistico es mayor que el valor critico, existe evidencia de colinealidad en los regresores.
\(X ^2_{FG} > V.C\) \(31.38122 > 7.814728\)
Cálculo de FG mediante libreria “mctest”
##
## Call:
## mctest::omcdiag(mod = modelo_estimado)
##
##
## Overall Multicollinearity Diagnostics
##
## MC Results detection
## Determinant |X'X|: 0.6918 0
## Farrar Chi-Square: 31.3812 1
## Red Indicator: 0.3341 0
## Sum of Lambda Inverse: 3.8525 0
## Theil's Method: -0.7297 0
## Condition Number: 11.8678 0
##
## 1 --> COLLINEARITY is detected by the test
## 0 --> COLLINEARITY is not detected by the test
Interpretación: El valor del estadistico es de 31.3812 y el indice de condición es de 11.8678, ambos valores coinciden con las salidas anteriores. Además, segun este resultado la prueba si detecta colinealidad.
Cálculo de FG mediante libreria “psych”
## R was not square, finding R from data
## $chisq
## [1] 31.38122
##
## $p.value
## [1] 0.0000007065806
##
## $df
## [1] 3
Interpretación: Se aplica: Rechazar \({H_0}\) si \(p ≤ α\) El valor del estadistico coincide, sin embargo la salida proporciona el valor P- Value, el cual es de 0.0000007065806. Al aplicar la regla desición se concluye que el valor P-value es mucho menor que el valor de significancia .05 y por lo tanto se rechaza \({H_0}\)
Gráfica con libreria FastGraph.
# Calcular el valor crítico
vc <- qchisq(p = 0.05, df = FG_test$df, lower.tail = FALSE)
# Graficar la distribución chi-cuadrado
shadeDist(xshade = FG_test$chisq,
ddist = "dchisq",
parm1 = FG_test$df,
main = "Prueba FG",
sub = paste("vc:", vc, ", FG:", FG_test$chisq),
lower.tail = FALSE)
# Agregar texto para indicar la región de rechazo
text(x = vc, y = 0.02, labels = "Zona de Rechazo", pos = 4, col = "red")
# Agregar línea vertical en el límite de la región de rechazo
abline(v = vc, col = "red", lty = 2)b) Factores inflacionarios de la varianza.
Referencia entre \({R^2_j}\)
library(dplyr)
R.cuadrado.regresores<-c(0,0.5,.8,.9)
as.data.frame(R.cuadrado.regresores) %>% mutate(VIF=1/(1-R.cuadrado.regresores))## R.cuadrado.regresores VIF
## 1 0.0 1
## 2 0.5 2
## 3 0.8 5
## 4 0.9 10
Cálculo manual Matriz de Correlación de los regresores del modelo:
## lotsize sqrft bdrms
## lotsize 1.0000000 0.1838422 0.1363256
## sqrft 0.1838422 1.0000000 0.5314736
## bdrms 0.1363256 0.5314736 1.0000000
Inversa de la matriz de correlación \(R^{−1}\):
## lotsize sqrft bdrms
## lotsize 1.03721145 -0.1610145 -0.05582352
## sqrft -0.16101454 1.4186543 -0.73202696
## bdrms -0.05582352 -0.7320270 1.39666321
VIF’s para el modelo estimado:
## lotsize sqrft bdrms
## 1.037211 1.418654 1.396663
Cálculo de los VIF’s usando “performance”
## # Check for Multicollinearity
##
## Low Correlation
##
## Term VIF VIF 95% CI Increased SE Tolerance Tolerance 95% CI
## lotsize 1.04 [1.00, 11.02] 1.02 0.96 [0.09, 1.00]
## sqrft 1.42 [1.18, 1.98] 1.19 0.70 [0.51, 0.85]
## bdrms 1.40 [1.17, 1.95] 1.18 0.72 [0.51, 0.86]
Interpretación: La variable Lotsize es la que presente
mayor colinealidad, sin embargo para el valor tomado se considera que la
colinealidad es minima y no genera problemas. Por lo tanto, las pruebas
muestran evidencia de correlación estadistica.Sin embargo, al análizar
el índice de condición y los VIF´s se da a comprender que la correlación
no es tan significativa.
Cálculo de los VIF’s usando “car”
Cálculo con “car”
## lotsize sqrft bdrms
## 1.037211 1.418654 1.396663