Soluciones parcial 2 Econometría

Preguntas de pareamiento:

1. para una tolerancia de 0.05 el VIF es de: R/ 20

en este caso la correlacion seria de 0.95 y por lo cual tendriamos una tolerancia de 0.05.

solucion: 1-0.95=0.05,(1/0.05=20)

2.sean 10,15,-10,-15,4,-4, los residuos de un modelo. El estadistico de prueba para el contraste de normalidad de JB es:R/ 0.51072

solucion:

library(normtest)
matriz_residuos<-matrix(data = c(10,15, -10,
                           -15, 4, -4), nrow = 1, ncol = 6, byrow = TRUE)
print(matriz_residuos)
##      [,1] [,2] [,3] [,4] [,5] [,6]
## [1,]   10   15  -10  -15    4   -4
jb.norm.test(matriz_residuos)
## 
##  Jarque-Bera test for normality
## 
## data:  matriz_residuos
## JB = 0.51072, p-value = 0.5945

3. Para un modelo con 2 regresores, la matriz de correlacion es[1,0.96;0.96,1],el VIF es de : R/ 12.7551

matriz_cor<-matrix(data = c(1,0.96, 0.96,
                           1), nrow = 2, ncol = 2, byrow = TRUE)
print(matriz_cor)
##      [,1] [,2]
## [1,] 1.00 0.96
## [2,] 0.96 1.00
# los VIF, se obtienen de la diagonal principal de la inversa de la matriz de Correlación
VIF<-diag(solve(matriz_cor))
print(VIF)
## [1] 12.7551 12.7551

4.Si el VIF para una variable es de 2.5, el coeficiente de correlacion entre la variable y el resto de regresores es de: R/ 0.6

#VIF=1/1-R^2
#Para este caso, 2.5=1/1-R^2, por lo tanto R^2 es igual a:
1-1/2.5
## [1] 0.6

5.Sean 10,15,-10,-15,4,-4, los residuos de un modelo. El estadistico de prueba para el contraste de normalidad de KS es: R/ 0.1374

library(nortest)
lillie.test(matriz_residuos)
## 
##  Lilliefors (Kolmogorov-Smirnov) normality test
## 
## data:  matriz_residuos
## D = 0.1374, p-value = 0.9763

6. En una prueba de FG, para un modelo con 5 regresores y un alfa de 4.3% el valor critico es de:R/ 1.536985

gl<-4*(4-1)/2
VC<-qchisq(0.043,gl,lower.tail = FALSE)
print(VC)
## [1] 13.00226

7.Sean 10,15,-10,15,4,-4 los residuos de un modelo.EL estadistico de prueba para el contraste de normalidad de Shapiro Wilk es: R/ 0.96164

shapiro.test(matriz_residuos)
## 
##  Shapiro-Wilk normality test
## 
## data:  matriz_residuos
## W = 0.96164, p-value = 0.8323

8. para un VIF=2.5, la tolerancia es es de: R/ 0.40

solucion:

# VIF=1/1-R^2
# Por lo tanto:
1/2.5
## [1] 0.4

9.Prueba robusta para evaluar la normalidad de los residuos, independientemente del tamaño muestral:R/ La prueba de Jarque Bera, ya que puede utilizarse con cualquier tamaño muestral y es la mas usada entre los econometristas.

10. En una prueba FG, para un modelo con 5 regresores y 60 observaciones con un alfa de 4.5%, el estadistico de prueba dio 40, el valor del determinante de la matriz de correlacion del modelo es: R/ 0.488499

#Calculando el determinante
#chi_FG = -(n-1-(2*m+5)/6)*log(determinante)
#quedando: 40/-(59-1-(2*4+5)/6)=ln(determinante)
#Por lo tanto: 
dt<- 40/-(59-1-(2*4+5)/6)
print(dt)
## [1] -0.7164179
determinante<-exp(dt)
print(determinante)
## [1] 0.488499

Modelo Ventas

estimando el modelo

options(scipen = 9999)
library(readxl)
ventas_empresa <- read_excel("C:/Users/manue/Desktop/ventas_empresa.xlsx")
library(stargazer)
modelo_ventas<-lm(formula = V~C+P+M,data = ventas_empresa)
stargazer(modelo_ventas,title = " Regresión de modelo ventas ",type = "html",digits = 8)
Regresión de modelo ventas
Dependent variable:
V
C 0.92256720***
(0.22273310)
P 0.95017690***
(0.15584520)
M 1.29778600***
(0.43072950)
Constant 107.44350000***
(18.05749000)
Observations 24
R2 0.97981680
Adjusted R2 0.97678940
Residual Std. Error 9.50557000 (df = 20)
F Statistic 323.64150000*** (df = 3; 20)
Note: p<0.1; p<0.05; p<0.01

1.Prueba de Normalidad de Jarque - Bera

library(normtest)
jb.norm.test(modelo_ventas$residuals)
## 
##  Jarque-Bera test for normality
## 
## data:  modelo_ventas$residuals
## JB = 1.4004, p-value = 0.2775

Aun nivel de significancia de 0.05 los resultados son los siguientes.

1.4004<5.991(JB<VC) NO rechaza Ho es decir los residuos tienen una distribucion normal.

0.2805>0.05 (P>alfa)NO rechaza Ho es decir los residuos tienen una distribucion normal.

2.Prueba de Normalidad de Kolmogorov - Smirnov

library(nortest)
lillie.test((modelo_ventas$residuals))
## 
##  Lilliefors (Kolmogorov-Smirnov) normality test
## 
## data:  (modelo_ventas$residuals)
## D = 0.13659, p-value = 0.2935

Aun nivel de significancia de 0.05 los resultados son los siguientes.

0.13659<0.1920(JB<VC) NO rechaza Ho es decir los residuos tienen una distribucion normal.

0.2935>0.05 (P>alfa) NO rechaza Ho es decir los residuos tienen una distribucion normal.

3.Prueba de Normalidad de Shapiro - Wilk

shapiro.test(modelo_ventas$residuals)
## 
##  Shapiro-Wilk normality test
## 
## data:  modelo_ventas$residuals
## W = 0.95315, p-value = 0.3166

Calcular Wn

W<-0.95315
mew<-0.0038915*I(log(24))^3-0.083751*I(log(24))^2-0.31082*I(log(24))-1.5861
des<-exp(0.0030302*I(log(24))^2-0.083751*(log(24))-0.4803)
Wn<-(log(1-W)-mew)/des
print(Wn)
## [1] 0.4789041

Aun nivel de significancia de 0.05 los resultados son los siguientes:

0.4789041<1.664(Wn<VC) NO rechaza Ho es decir los residuos tienen una distribucion normal.

0.3166>0.05(p>alfa) NO rechaza Ho es decir los residuos tienen una distribucion normal.

Indice de condicion( calculo manual)

Calcular la matriz |X X|

# matriz Xmat
Xmat<-model.matrix(modelo_ventas)
print(Xmat)
##    (Intercept)   C   P   M
## 1            1 197 173 110
## 2            1 208 152 107
## 3            1 181 150  99
## 4            1 194 150 102
## 5            1 192 163 109
## 6            1 196 179 114
## 7            1 203 169 113
## 8            1 200 166 113
## 9            1 198 159 115
## 10           1 221 206 119
## 11           1 218 181 120
## 12           1 213 192 123
## 13           1 207 191 122
## 14           1 228 217 131
## 15           1 249 190 133
## 16           1 225 221 135
## 17           1 237 189 133
## 18           1 236 192 128
## 19           1 231 193 134
## 20           1 260 233 135
## 21           1 254 196 139
## 22           1 239 199 138
## 23           1 248 202 146
## 24           1 273 240 153
## attr(,"assign")
## [1] 0 1 2 3
# matriz XXmat
XXmat<-t(Xmat)%*%Xmat
print(XXmat)
##             (Intercept)       C       P      M
## (Intercept)          24    5308    4503   2971
## C                  5308 1187852 1007473 664534
## P                  4503 1007473  859157 564389
## M                  2971  664534  564389 372387
## sn calculo de la matriz de normalizacion
sn<-diag(1/sqrt(diag(XXmat)))
print(sn)
##           [,1]        [,2]        [,3]        [,4]
## [1,] 0.2041241 0.000000000 0.000000000 0.000000000
## [2,] 0.0000000 0.000917527 0.000000000 0.000000000
## [3,] 0.0000000 0.000000000 0.001078857 0.000000000
## [4,] 0.0000000 0.000000000 0.000000000 0.001638712
## XXmat Normalizada 
XX_norm<-(sn%*%XXmat)%*%sn
print(XX_norm)
##           [,1]      [,2]      [,3]      [,4]
## [1,] 1.0000000 0.9941322 0.9916538 0.9938018
## [2,] 0.9941322 1.0000000 0.9972774 0.9991686
## [3,] 0.9916538 0.9972774 1.0000000 0.9978035
## [4,] 0.9938018 0.9991686 0.9978035 1.0000000
## autovalores
library(stargazer)
#autovalores
lambdas<-eigen(XX_norm,symmetric = TRUE)$values
print(lambdas)
## [1] 3.9869237681 0.0095007154 0.0027882470 0.0007872695
# Indice de condicion
K<-sqrt(max(lambdas)/min(lambdas))
print(K)
## [1] 71.16349

En el caso de que κ(x)≥30 la multicolinealidad es severa. Y dado que el valor obtenido es de 71.16349 en este modelo la colinealidad es fuerte entre los regresores.

Uso de la libreria “mctest”, para obtener el indice de condición

library(mctest)
source("C:/Users/manue/Desktop/Practicas_ECMA/datos_Rdata/correccion_eigprop.R")
my_eigprop(mod=modelo_ventas)
## 
## Call:
## my_eigprop(mod = modelo_ventas)
## 
##   Eigenvalues      CI (Intercept)      C      P      M
## 1      3.9869  1.0000      0.0007 0.0001 0.0003 0.0001
## 2      0.0095 20.4852      0.8776 0.0049 0.0877 0.0075
## 3      0.0028 37.8141      0.1183 0.1594 0.8478 0.0636
## 4      0.0008 71.1635      0.0034 0.8356 0.0642 0.9288
## 
## ===============================
## Row 4==> C, proportion 0.835554 >= 0.50 
## Row 3==> P, proportion 0.847805 >= 0.50 
## Row 4==> M, proportion 0.928751 >= 0.50

Prueba de Farrar-Glaubar ( manual)

library(fastGraph)
m<-ncol(Xmat[,-1]) # cantidad de variables explicativas k-1
n<-nrow(Xmat)
determinante_R<- det(cor(Xmat[,-1])) # determinanre de la matriz de correlacion
chi_FG<--(n-1-(2*m+5)/6)*log(determinante_R)
print(chi_FG)
## [1] 71.20805
## Valor Critico
gl<-m*(m-1)/2
VC<-qchisq(0.05,gl,lower.tail = FALSE)
print(VC)
## [1] 7.814728
shadeDist(xshade = chi_FG,ddist = "dchisq",parm1 = gl,lower.tail = FALSE,sub=paste("VC:",VC,"FG:",chi_FG))

Aun nivel de signifancia de 0.05 los resultados son los siguientes:

71.20805>7.814728(FG>VC) hay evidencia de multicolinealidad en los regresores.

0.000000000000002352605<0.05(P<alfa) hay evidencia de multicolinealidad en los regresores.

Prueba de Farrar-Glaubar con mctest

library(mctest)
mctest(modelo_ventas)
## 
## 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.0346         0
## Farrar Chi-Square:        71.2080         1
## Red Indicator:             0.8711         1
## Sum of Lambda Inverse:    20.9196         1
## Theil's Method:            0.5430         1
## Condition Number:        105.2299         1
## 
## 1 --> COLLINEARITY is detected by the test 
## 0 --> COLLINEARITY is not detected by the test

Prueba de Farrar-Glaubar Uso de la libreria psych

library(psych)
library(fastGraph)
FG_test<-cortest.bartlett(Xmat[,-1])
VC_1<-qchisq(0.05,FG_test$df,lower.tail = FALSE)
print(FG_test)
## $chisq
## [1] 71.20805
## 
## $p.value
## [1] 0.000000000000002352605
## 
## $df
## [1] 3
shadeDist(xshade = FG_test$chisq,ddist = "dchisq",parm1 = FG_test$df,lower.tail = FALSE,sub=paste("VC:",VC_1,"FG:",FG_test$chisq))

Cálculando los VIF para el modelo estimado(manual)

Matriz de Correlación de los regresores del modelo (Como se obtuvo con anterioridad):

VIF<-diag(solve(cor(Xmat[,-1])))
print(VIF)
##        C        P        M 
## 7.631451 3.838911 9.449210

Obtención de los VIF’s, a través de la librería “car”

library(car)
VIFs_car<-vif(modelo_ventas)
print(VIFs_car)
##        C        P        M 
## 7.631451 3.838911 9.449210

Obtención de los VIF’s, a través de la librería “mctest”

library(mctest)
mc.plot(modelo_ventas,vif = 2,)

aun umbral de 2 existe una alta colinealidad entre los gastos de comercializacion y los gastos de materia prima, por lo tanto, están inflando la varianza del parámetro de la variable que están representando.

Modelo Salario

Estimando el Modelo

options(scipen = 9999)
library(stargazer)
load("C:/Users/manue/Desktop/LAWSCH85.RData")
library(dplyr)
modelo_salary<- lm(formula= lsalary~LSAT+GPA+llibvol+lcost+rank, data = LAWSCH85)
stargazer(modelo_salary,title = " Regresión de modelo Salary",type = "html",digits = 8)
Regresión de modelo Salary
Dependent variable:
lsalary
LSAT 0.00469647
(0.00401049)
GPA 0.24752390***
(0.09003704)
llibvol 0.09499321***
(0.03325435)
lcost 0.03755380
(0.03210608)
rank -0.00332459***
(0.00034846)
Constant 8.34322600***
(0.53251920)
Observations 136
R2 0.84168520
Adjusted R2 0.83559620
Residual Std. Error 0.11241170 (df = 130)
F Statistic 138.22980000*** (df = 5; 130)
Note: p<0.1; p<0.05; p<0.01

1.Prueba de Normalidad de Jarque - Bera

library(normtest)
jb.norm.test(modelo_salary$residuals)
## 
##  Jarque-Bera test for normality
## 
## data:  modelo_salary$residuals
## JB = 0.36511, p-value = 0.8335

Aun nivel de significancia de 0.05 los resultados obtenidos son los siguientes:

0.36511<5.991(JB<VC) por lo tanto no se rechaza la Ho, es decir los residuos tienen una distribucion normal.

0.818>0.05(P>alfa) por lo tanto no se rechaza la Ho, es decir los residuos tienen una distribucion normal.

2.Prueba de Normalidad de Kolmogorov - Smirnov

library(nortest)
lillie.test((modelo_salary$residuals))
## 
##  Lilliefors (Kolmogorov-Smirnov) normality test
## 
## data:  (modelo_salary$residuals)
## D = 0.054571, p-value = 0.4123

Aun nivel de significancia de 0.05 los resultados obtenidos son los siguientes:

0.054571<0.0701(KS<VC) por lo tanto no se rechaza la Ho, es decir los residuos tienen una distribucion normal.

0.4123>0.05(P>alfa) por lo tanto no se rechaza la Ho, es decir los residuos tienen una distribucion normal.

3.Prueba de Normalidad de Shapiro - Wilk

shapiro.test(modelo_salary$residuals)
## 
##  Shapiro-Wilk normality test
## 
## data:  modelo_salary$residuals
## W = 0.99282, p-value = 0.7235

Calcular Wn

W<-0.99282
mew<-0.0038915*I(log(156))^3-0.083751*I(log(156))^2-0.31082*I(log(156))-1.5861
des<-exp(0.0030302*I(log(156))^2-0.083751*(log(156))-0.4803)
Wn<-(log(1-W)-mew)/des
print(Wn)
## [1] -0.3338294

Aun nivel de significancia de 0.05 los resultados obtenidos son los siguientes:

-0.3338294<1.664(Wn<VC) por lo tanto no se rechaza la Ho, es decir los residuos tienen una distribucion normal.

0.7235>0.05(P>alfa) por lo tanto no se rechaza la Ho, es decir los residuos tienen una distribucion normal.

Pruebas de Multicolinealidad.

Indice de condicion( calculo manual)

Calcular la matriz |X X|

# matriz Xmat
Xmat<-model.matrix(modelo_salary)
#sólo muestro una parte de la matriz, para no saturar la página
Xmat[1:6,1:6]
##   (Intercept) LSAT  GPA  llibvol    lcost rank
## 1           1  155 3.15 5.375278 9.028818  128
## 2           1  160 3.50 5.545177 8.850804  104
## 3           1  155 3.25 6.049734 9.703206   34
## 4           1  157 3.20 5.796058 9.773721   49
## 5           1  162 3.38 5.805135 9.030017   95
## 6           1  161 3.40 5.739793 9.030017   98
# matriz XXmat
XXmat<-t(Xmat)%*%Xmat
print(XXmat)
##             (Intercept)       LSAT       GPA     llibvol      lcost       rank
## (Intercept)    136.0000   21557.00   450.110    783.3715   1277.008   10847.00
## LSAT         21557.0000 3419799.00 71440.370 124336.7471 202521.842 1697437.00
## GPA            450.1100   71440.37  1494.950   2599.2641   4228.169   34980.46
## llibvol        783.3715  124336.75  2599.264   4536.4063   7362.770   60522.09
## lcost         1277.0080  202521.84  4228.169   7362.7705  12010.096  100735.74
## rank         10847.0000 1697437.00 34980.460  60522.0934 100735.740 1190245.00
## sn calculo de la matriz de normalizacion
sn<-diag(1/sqrt(diag(XXmat)))
print(sn)
##            [,1]        [,2]       [,3]       [,4]        [,5]         [,6]
## [1,] 0.08574929 0.000000000 0.00000000 0.00000000 0.000000000 0.0000000000
## [2,] 0.00000000 0.000540754 0.00000000 0.00000000 0.000000000 0.0000000000
## [3,] 0.00000000 0.000000000 0.02586346 0.00000000 0.000000000 0.0000000000
## [4,] 0.00000000 0.000000000 0.00000000 0.01484718 0.000000000 0.0000000000
## [5,] 0.00000000 0.000000000 0.00000000 0.00000000 0.009124872 0.0000000000
## [6,] 0.00000000 0.000000000 0.00000000 0.00000000 0.000000000 0.0009166041
## XXmat Normalizada 
XX_norm<-(sn%*%XXmat)%*%sn
print(XX_norm)
##           [,1]      [,2]      [,3]      [,4]      [,5]      [,6]
## [1,] 1.0000000 0.9995823 0.9982420 0.9973380 0.9991966 0.8525542
## [2,] 0.9995823 1.0000000 0.9991485 0.9982590 0.9993057 0.8413471
## [3,] 0.9982420 0.9991485 1.0000000 0.9981161 0.9978511 0.8292662
## [4,] 0.9973380 0.9982590 0.9981161 1.0000000 0.9974980 0.8236445
## [5,] 0.9991966 0.9993057 0.9978511 0.9974980 1.0000000 0.8425432
## [6,] 0.8525542 0.8413471 0.8292662 0.8236445 0.8425432 1.0000000
## autovalores
library(stargazer)
#autovalores
lambdas<-eigen(XX_norm,symmetric = TRUE)$values
print(lambdas)
## [1] 5.7351306262 0.2604004371 0.0020823558 0.0018442636 0.0003778106
## [6] 0.0001645068
# Indice de condicion
K<-sqrt(max(lambdas)/min(lambdas))
print(K)
## [1] 186.7153

En el caso de que κ≥30 la multicolinealidad es severa, y dado que el valor obtenido en en la prueba es de 186.7153, da evidencia de una multicolinealidad severa en los regresores.

Prueba de Farrar-Glaubar ( manual)

library(fastGraph)
m<-ncol(Xmat[,-1]) # cantidad de variables explicativas k-1
n<-nrow(Xmat)
determinante_R<- det(cor(Xmat[,-1])) # determinanre de la matriz de correlacion
chi_FG<--(n-1-(2*m+5)/6)*log(determinante_R)
print(chi_FG)
## [1] 391.509
## Valor Critico
gl<-m*(m-1)/2
VC<-qchisq(0.05,gl,lower.tail = FALSE)
print(VC)
## [1] 18.30704
shadeDist(xshade = chi_FG,ddist = "dchisq",parm1 = gl,lower.tail = FALSE,sub=paste("VC:",VC,"FG:",chi_FG))

391.509>18.3070, Como χ2FG≥V.C. se rechaza H0, por lo tanto hay evidencia de colinealidad en los regresores.

Factores inflacionarcios de la varianza (FIV)

library(car)
VIFs_car<-vif(modelo_salary)
print(VIFs_car)
##     LSAT      GPA  llibvol    lcost     rank 
## 3.635214 3.369004 2.110802 1.573583 3.124106

Obtención de los VIF’s, a través de la librería “mctest”

library(mctest)
mc.plot(modelo_salary,vif = 2,)

Estableciendo un umbral de 2, existe una alta colinealidad entre las variables GPA, LSAT y ran , por lo tanto, están inflando la varianza del parámetro de la variable que están representando.

Modelo Escolaridad

Estimando el Modelo

options(scipen = 9999)
library(stargazer)
load("C:/Users/manue/Desktop/wage2.rdata")
regresion_lineal<-lm(formula =  educ~sibs+meduc+feduc,data = wage2)
stargazer(regresion_lineal, title = "Modelo Escolaridad", type = "html",digits = 8)
Modelo Escolaridad
Dependent variable:
educ
sibs -0.09363593***
(0.03447125)
meduc 0.13078720***
(0.03268897)
feduc 0.21000410***
(0.02747482)
Constant 10.36426000***
(0.35850010)
Observations 722
R2 0.21409360
Adjusted R2 0.21080980
Residual Std. Error 1.98705200 (df = 718)
F Statistic 65.19825000*** (df = 3; 718)
Note: p<0.1; p<0.05; p<0.01

1.Prueba de Normalidad de Jarque - Bera

library(normtest)
jb.norm.test(regresion_lineal$residuals)
## 
##  Jarque-Bera test for normality
## 
## data:  regresion_lineal$residuals
## JB = 35.655, p-value < 0.00000000000000022

Aun nivel de significancia de 0.05 los resultados de la prueba JB son los siguientes:

35.655>5.991(JB>VC) por lo tanto se rechaza la Ho, es decir los residuos no tienen una distribucion normal.

0.00000000000000022<0.05(P<alfa) por lo tanto se rechaza la Ho, es decir los residuos no tienen una distribucion normal.

2.Prueba de Normalidad de Kolmogorov - Smirnov

library(nortest)
lillie.test((regresion_lineal$residuals))
## 
##  Lilliefors (Kolmogorov-Smirnov) normality test
## 
## data:  (regresion_lineal$residuals)
## D = 0.089992, p-value = 0.000000000000003394

0.089992>0.02864(KS>VC) por lo tanto se rechaza la Ho, es decir los residuos no tienen una distribucion normal.

0.000000000000003394<0.05(P<alfa) por lo tanto se rechaza la Ho, es decir los residuos no tienen una distribucion normal.

3.Prueba de Normalidad de Shapiro - Wilk

shapiro.test(regresion_lineal$residuals)
## 
##  Shapiro-Wilk normality test
## 
## data:  regresion_lineal$residuals
## W = 0.96692, p-value = 0.00000000001058

Calcular Wn

W<-0.96692
mew<-0.0038915*I(log(935))^3-0.083751*I(log(935))^2-0.31082*I(log(935))-1.5861
des<-exp(0.0030302*I(log(935))^2-0.083751*(log(935))-0.4803)
Wn<-(log(1-W)-mew)/des
print(Wn)
## [1] 7.405738

Aun nivel de significancia de 0.05 los resultados obtenidos de la prueba de SW

7.405738>1.664(Wn>VC) por lo tanto se rechaza la Ho, es decir los residuos no tienen una distribucion normal.

0.00000000001058<0.05(P<alfa)por lo tanto se rechaza la Ho, es decir los residuos no tienen una distribucion normal.

Pruebas de Multicolinealidad.

Indice de condicion( calculo manual)

Calcular la matriz |X X|

# matriz Xmat
Xmat<-model.matrix(regresion_lineal)
#sólo muestro una parte de la matriz, para no saturar la página
Xmat[1:4,1:4]
##   (Intercept) sibs meduc feduc
## 1           1    1     8     8
## 2           1    1    14    14
## 3           1    1    14    14
## 4           1    4    12    12
# matriz XXmat
XXmat<-t(Xmat)%*%Xmat
print(XXmat)
##             (Intercept)  sibs meduc feduc
## (Intercept)         722  2064  7802  7404
## sibs               2064  9552 20967 19949
## meduc              7802 20967 90078 83895
## feduc              7404 19949 83895 83806
## sn calculo de la matriz de normalizacion
sn<-diag(1/sqrt(diag(XXmat)))
print(sn)
##            [,1]       [,2]       [,3]        [,4]
## [1,] 0.03721615 0.00000000 0.00000000 0.000000000
## [2,] 0.00000000 0.01023182 0.00000000 0.000000000
## [3,] 0.00000000 0.00000000 0.00333189 0.000000000
## [4,] 0.00000000 0.00000000 0.00000000 0.003454319
## XXmat Normalizada 
XX_norm<-(sn%*%XXmat)%*%sn
print(XX_norm)
##           [,1]      [,2]      [,3]      [,4]
## [1,] 1.0000000 0.7859482 0.9674488 0.9518319
## [2,] 0.7859482 1.0000000 0.7147921 0.7050768
## [3,] 0.9674488 0.7147921 1.0000000 0.9655820
## [4,] 0.9518319 0.7050768 0.9655820 1.0000000
## autovalores
library(stargazer)
#autovalores
lambdas<-eigen(XX_norm,symmetric = TRUE)$values
print(lambdas)
## [1] 3.55762739 0.37556335 0.04172605 0.02508320
# Indice de condicion
K<-sqrt(max(lambdas)/min(lambdas))
print(K)
## [1] 11.90937

Sí κ es inferior a 20, la multicolinealidad es leve, no se considera un problema. Y dado que el valor obtenido en la prueba del indice de condicion es de 11.90937,da evidencia de que en los regresores la multicolinealidad del modelo es tolerable.

Prueba de Farrar-Glaubar ( manual)

library(fastGraph)
m<-ncol(Xmat[,-1]) # cantidad de variables explicativas k-1
n<-nrow(Xmat)
determinante_R<- det(cor(Xmat[,-1])) # determinanre de la matriz de correlacion
chi_FG<--(n-1-(2*m+5)/6)*log(determinante_R)
print(chi_FG)
## [1] 358.3897
## Valor Critico
gl<-m*(m-1)/2
VC<-qchisq(0.05,gl,lower.tail = FALSE)
print(VC)
## [1] 7.814728
shadeDist(xshade = chi_FG,ddist = "dchisq",parm1 = gl,lower.tail = FALSE,sub=paste("VC:",VC,"FG:",chi_FG))

358.3897>7.814728 Como χ2FG≥V.C. se rechaza H0, por lo tanto hay evidencia de colinealidad en los regresores

Cálculando los VIF para el modelo estimado

library(car)
VIFs_car<-vif(regresion_lineal)
print(VIFs_car)
##     sibs    meduc    feduc 
## 1.098950 1.561254 1.506359
library(mctest)
mc.plot(regresion_lineal,vif = 2,)

A un umbral de 2, no existe colinealidad entre los regresores, por lo que no hay presencia de factores inflacionarios en las variancias en las variables que estan representando.