Parte Práctica
Ejercicio 1
Sea el conjunto de datos, indicados en el enlace de abajo, tomados en 24 meses correspondientes a los gastos de comercialización (C) de una empresa, el nivel de ventas (V), su coste de personal (P) y los costes de materias primas (M); se trata de estimar el nivel de ventas a partir de las restantes variables.
1. Estime el modelo de regresión lineal, correspondiente y verifique el supuesto de normalidad, usando todas las pruebas vistas en clase. Comente sus resultados.
Carga de datos y estimación del modelo
options(scipen = 9999999)
library(stargazer)
library(readxl)
ventas_empresa <- read_excel("C:/Users/familia/Downloads/ventas_empresa.xlsx")
modelo_ventas<-lm(formula = V~C+P+M, data=ventas_empresa)
stargazer(modelo_ventas, title= 'Ejercicio Parcial', type = 'text')
##
## Ejercicio Parcial
## ===============================================
## Dependent variable:
## ---------------------------
## V
## -----------------------------------------------
## C 0.923***
## (0.223)
##
## P 0.950***
## (0.156)
##
## M 1.298***
## (0.431)
##
## Constant 107.444***
## (18.057)
##
## -----------------------------------------------
## Observations 24
## R2 0.980
## Adjusted R2 0.977
## Residual Std. Error 9.506 (df = 20)
## F Statistic 323.641*** (df = 3; 20)
## ===============================================
## Note: *p<0.1; **p<0.05; ***p<0.01
Pruebas de Normalidad en los residuos
library(fitdistrplus)
ajuste_normal<- fitdist(data = modelo_ventas$residuals,distr = 'norm')
plot(ajuste_normal)

Prueba de JB
library(normtest)
jb.norm.test(modelo_ventas$residuals)
##
## Jarque-Bera test for normality
##
## data: modelo_ventas$residuals
## JB = 1.4004, p-value = 0.261
#Comentario: Dado que p-value es mayor que el nivel de significancia=0.05, entonces la Ho No se rechaza, por lo que los residuos siguen una distribucion normal. Dado que el valor de Jarque Bera es menor que el V.C=5.9915,NO SE RECHAZA la Ho, entonces los residuos siguen una distribucion normal.
Prueba de KS (Lilliefors)
library(nortest)
lillie.test(modelo_ventas$residuals)
##
## Lilliefors (Kolmogorov-Smirnov) normality test
##
## data: modelo_ventas$residuals
## D = 0.13659, p-value = 0.2935
# comentario: Dado que p-value es mayor que el nivel de significancia=0.05, entonces la Ho No se rechaza, por lo que los residuos siguen una distribucion normal.
Prueba de Shapiro
shapiro.test(modelo_ventas$residuals)
##
## Shapiro-Wilk normality test
##
## data: modelo_ventas$residuals
## W = 0.95315, p-value = 0.3166
## Calculando U
U<-(0.00389*(log(24)^3)-0.083751*(log(54)^2)-0.31082*(log(24))-1.5861)
print(U)
## [1] -3.781685
S<-exp(1)^((0.0030302*(log(24)^2))-0.082676*(log(24))-0.4803)
print(S)
## [1] 0.4904442
## Normalizando W
Wn<-((log(1-0.95315)-U)/S)
print(Wn)
## [1] 1.469853
# Comentario: Dado que p-value es mayor que el nivel de significancia=0.05, entonces la Ho No se rechaza, por lo que los residuos siguen una distribucion normal. Dado que el valor de “W” es menor que el V.C=1.644854,NO SE RECHAZA la Ho, entonces los residuos siguen una distribucion normal.
2. Utilizando todas las herramientas vistas en clase, evalué la situación de colinealidad de los regresores del modelo. Comente sus resultados.
Pruebas de Multicolinealidad
Indice de condición
#Calculo manual
# 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
#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 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_norm
XXmat_norm<- (Sn%*%XXmat)%*%Sn
print(XXmat_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
lambas<- eigen(XXmat_norm, symmetric = TRUE)$values
print(lambas)
## [1] 3.9869237681 0.0095007154 0.0027882470 0.0007872695
# Indice de condición
K<- sqrt(max(lambas)/min(lambas))
print(K)
## [1] 71.16349
Indice de condición usando mctest
library(mctest)
source(file = "C:/Users/familia/Downloads/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
# Comentario: El indice de condición es mayor que >30 la multicolinealidad es severa.
Prueba FG
library(fastGraph)
m_2<- ncol(Xmat[,-1]) #Cantidad de variables Explicativas K-1
n_2<- nrow(Xmat)
determinante_R<- det(cor(Xmat[,-1]))
Chi_FG<--(n_2-1-(2*m_2+5)/6)*log(determinante_R)
print(Chi_FG)
## [1] 71.20805
# Valor crítico
gl<-m_2*(m_2-1)/2
VC1<-qchisq(0.05,gl,lower.tail = FALSE)
print(VC1)
## [1] 7.814728
# P-value
Pval<-pchisq(Chi_FG,gl, lower.tail = FALSE)
print(Pval)
## [1] 0.000000000000002352605
shadeDist(xshade = Chi_FG,ddist = "dchisq" , parm1 = gl, lower.tail = FALSE, sub=paste("VC:",VC,"FG:",Chi_FG))

FG 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
FG usando 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))

#Comentario: Al aplicar el estadístico de prueba rechazamos la hipótesis ya que el valor de FG es mayor que el VC
VIF manual
VIF3<- diag(solve(cor(Xmat[,-1])))
print(VIF3)
## C P M
## 7.631451 3.838911 9.449210
VIF con libreria car
library(car)
VIF_car<- vif(modelo_ventas)
print(VIF_car)
## C P M
## 7.631451 3.838911 9.449210
VIF con libreria mctest
library(mctest)
mc.plot(modelo_ventas, vif = 2)

Ejercicio 2
Se tienen los datos para trabajadores hombres,en el archivo adjunto, con ellos estime un modelo donde educ es años de escolaridad, como variable dependiente, y como regresores sibs (número de hermanos), meduc (años de escolaridad de la madre) y feduc (años de escolaridad del padre)
1. Estime el modelo de regresión lineal, correspondiente y verifique el supuesto de normalidad, usando todas las pruebas vistas en clase. Comente sus resultados.
Carga de datos y estimación del modelo
library(readr)
library(stargazer)
options(scipen = 9999999)
load("C:/Users/familia/Downloads/wage2.RData")
modelo_escolar<- lm(formula = educ~sibs+meduc+feduc, data = wage2)
stargazer(modelo_escolar, title = "Ejercicio 2 Parcial", type = 'text')
##
## Ejercicio 2 Parcial
## ===============================================
## Dependent variable:
## ---------------------------
## educ
## -----------------------------------------------
## sibs -0.094***
## (0.034)
##
## meduc 0.131***
## (0.033)
##
## feduc 0.210***
## (0.027)
##
## Constant 10.364***
## (0.359)
##
## -----------------------------------------------
## Observations 722
## R2 0.214
## Adjusted R2 0.211
## Residual Std. Error 1.987 (df = 718)
## F Statistic 65.198*** (df = 3; 718)
## ===============================================
## Note: *p<0.1; **p<0.05; ***p<0.01
Prueba de normalidad en los residuos
library(fitdistrplus)
ajuste_normal1<-fitdist(modelo_escolar$residuals, distr = "norm")
plot(ajuste_normal1)

#### Al realizar la prueba de normalidad en los residuos podemos observar que es posible que los residuos no sigan una distribución normal
Prueba de JB
library(normtest)
jb.norm.test(modelo_escolar$residuals)
##
## Jarque-Bera test for normality
##
## data: modelo_escolar$residuals
## JB = 35.655, p-value < 0.00000000000000022
#Comentario: Dado que p-value es menor que el nivel de significancia=0.05, entonces la Ho se rechaza, por lo que los residuos no siguen una distribucion normal. Dado que el valor de Jarque Bera es mayor que el V.C=5.9915, SE RECHAZA la Ho, entonces los residuos no siguen una distribucion normal.
Prueba de KS (Lilliefors)
library(nortest)
lillie.test(modelo_escolar$residuals)
##
## Lilliefors (Kolmogorov-Smirnov) normality test
##
## data: modelo_escolar$residuals
## D = 0.089992, p-value = 0.000000000000003394
# comentario: Dado que p-value es menor que el nivel de significancia=0.05, entonces la Ho se rechaza, por lo que los residuos no siguen una distribución normal.
Prueba de Shapiro
shapiro.test(modelo_escolar$residuals)
##
## Shapiro-Wilk normality test
##
## data: modelo_escolar$residuals
## W = 0.96692, p-value = 0.00000000001058
## Calculando U
U1<-(0.00389*(log(722)^3)-0.083751*(log(722)^2)-0.31082*(log(722))-1.5861)
print(U1)
## [1] -6.151027
S1<-exp(1)^((0.0030302*(log(722)^2))-0.082676*(log(722))-0.4803)
print(S1)
## [1] 0.4093446
## Normalizando W
Wn1<-((log(1-0.96692)-U1)/S1)
print(Wn1)
## [1] 6.699004
# Comentario: Dado que p-value es menor que el nivel de significancia=0.05, entonces la Ho se rechaza, por lo que los residuos no siguen una distribucion normal. Dado que el valor de “W” es mayor que el V.C=1.644854, SE RECHAZA la Ho, entonces los residuos no siguen una distribucion normal.
Pruebas de Colinealidad
2. Utilizando todas las herramientas vistas en clase, evalue la situación de colinealidad del modelo. Comente sus resultados
Indice de condición
#Calculo manual
# Xmat
Xmat_1<- model.matrix(modelo_escolar)
print(head(Xmat_1, n=6))
## (Intercept) sibs meduc feduc
## 1 1 1 8 8
## 2 1 1 14 14
## 3 1 1 14 14
## 4 1 4 12 12
## 5 1 10 6 11
## 7 1 1 8 8
#XXmat
XXmat_1<-t(Xmat_1)%*%Xmat_1
print(XXmat_1)
## (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 matriz de normalizacion
Sn_1<- diag(1/sqrt(diag(XXmat_1)))
print(Sn_1)
## [,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_norm
XXmat_norm_1<- (Sn_1%*%XXmat_1)%*%Sn_1
print(XXmat_norm_1)
## [,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
lambas_1<- eigen(XXmat_norm_1, symmetric = TRUE)$values
print(lambas_1)
## [1] 3.55762739 0.37556335 0.04172605 0.02508320
# Indice de condición
K_1<- sqrt(max(lambas_1)/min(lambas_1))
print(K_1)
## [1] 11.90937
Indice de condición usando mctest
library(mctest)
source(file = "C:/Users/familia/Downloads/correccion_eigprop.R")
my_eigprop(mod = modelo_escolar)
##
## Call:
## my_eigprop(mod = modelo_escolar)
##
## Eigenvalues CI (Intercept) sibs meduc feduc
## 1 3.5576 1.0000 0.0033 0.0194 0.0031 0.0046
## 2 0.3756 3.0778 0.0015 0.7200 0.0107 0.0184
## 3 0.0417 9.2337 0.3235 0.1056 0.0813 0.8786
## 4 0.0251 11.9094 0.6717 0.1549 0.9049 0.0984
##
## ===============================
## Row 2==> sibs, proportion 0.720032 >= 0.50
## Row 4==> meduc, proportion 0.904919 >= 0.50
## Row 3==> feduc, proportion 0.878599 >= 0.50
# Comentario: Al calcular el indice de condición k(x)= 11.9094 podemos concluir que es menor a 20 y por lo tanto la colinealidad es leve y no se considera un problema.
Prueba de FG
library(fastGraph)
m_3<- ncol(Xmat_1[,-1]) #Cantidad de variables Explicativas K-1
n_3<- nrow(Xmat_1)
determinant_R<- det(cor(Xmat_1[,-1]))
Chi_FG1<--(n_3-1-(2*m_3+5)/6)*log(determinant_R)
print(Chi_FG1)
## [1] 358.3897
# Valor crítico
gl1<-m_3*(m_3-1)/2
VC2<-qchisq(0.05,gl1,lower.tail = FALSE)
print(VC2)
## [1] 7.814728
#P-value
Pval2<-pchisq(Chi_FG1,gl1, lower.tail = FALSE)
print(Pval2)
## [1] 0.0000000000000000000000000000000000000000000000000000000000000000000000000000227501
options(scipen = 0)
shadeDist(xshade = Chi_FG1,ddist = "dchisq" , parm1 = gl1, lower.tail = FALSE, sub=paste("VC:",VC2,"FG:",Chi_FG1))

FG con mctest
library(mctest)
mctest(modelo_escolar)
##
## 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.6075 0
## Farrar Chi-Square: 358.3897 1
## Red Indicator: 0.3952 0
## Sum of Lambda Inverse: 4.1666 0
## Theil's Method: 0.3575 0
## Condition Number: 11.2768 0
##
## 1 --> COLLINEARITY is detected by the test
## 0 --> COLLINEARITY is not detected by the test
FG usando libreria Psych
library(psych)
library(fastGraph)
FG_test1<- cortest.bartlett(Xmat_1[,-1])
VC_2<-qchisq(0.05, FG_test1$df, lower.tail = FALSE)
print(FG_test1)
## $chisq
## [1] 358.3897
##
## $p.value
## [1] 2.27501e-77
##
## $df
## [1] 3
shadeDist(xshade = FG_test1$chisq,
ddist = "dchisq",
parm1 = FG_test1$df,
lower.tail = FALSE,
sub=paste("VC:", VC_2,"FG:", FG_test1$chisq))

#Comentario: Al aplicar el estadístico de prueba rechazamos la hipótesis ya que el valor de FG es mayor que el VC, por lo tanto hay evidencia de multicolinealidad.
VIF Manual
VIF4<- diag(solve(cor(Xmat_1[,-1])))
print(VIF4)
## sibs meduc feduc
## 1.098950 1.561254 1.506359
VIF con libreria car
library(car)
VIF_car1<- vif(modelo_escolar)
print(VIF_car1)
## sibs meduc feduc
## 1.098950 1.561254 1.506359
VIF con libreria mctest
library(mctest)
mc.plot(modelo_escolar, vif = 2)

# Al establecer un umbral de 2 ningún regresor supera el umbral, por lo tanto ninguno infla considerablemente la varianza.
Ejercicio 3
El sueldo inicial medio (salary) para los recién graduados de la Facultad de Economía se determina mediante una función lineal: log(salary)=f(SAT,GPA ,log(libvol),log(cost),rank). Donde LSAT es la media del puntaje LSAT del grupo de graduados, GPA es la media del GPA (promedio general) del grupo, libvol es el número de volúmenes en la biblioteca de la Facultad de Economía, cost es el costo anual por asistir a dicha facultad y rank es una clasificación de las escuelas de Economía (siendo rank 1 la mejor)
1. Estime el modelo de regresión lineal, correspondiente y verifique el supuesto de normalidad, usando todas las pruebas vistas en clase. Comente sus resultados.
Carga de datos y estimación del modelo
library(readr)
library(stargazer)
options(scipen = 999999)
load("C:/Users/familia/Downloads/LAWSCH85.RData")
modelo_graduados<-lm(formula = lsalary~LSAT+GPA+llibvol+lcost+rank, data = LAWSCH85)
stargazer(modelo_graduados, title = "Ejercicio 3 Parcial", type = 'text')
##
## Ejercicio 3 Parcial
## ===============================================
## Dependent variable:
## ---------------------------
## lsalary
## -----------------------------------------------
## LSAT 0.005
## (0.004)
##
## GPA 0.248***
## (0.090)
##
## llibvol 0.095***
## (0.033)
##
## lcost 0.038
## (0.032)
##
## rank -0.003***
## (0.0003)
##
## Constant 8.343***
## (0.533)
##
## -----------------------------------------------
## Observations 136
## R2 0.842
## Adjusted R2 0.836
## Residual Std. Error 0.112 (df = 130)
## F Statistic 138.230*** (df = 5; 130)
## ===============================================
## Note: *p<0.1; **p<0.05; ***p<0.01
Prueba de normalidad en los residuos
library(fitdistrplus)
ajuste_normal2<- fitdist(data = modelo_graduados$residuals,distr = 'norm')
plot(ajuste_normal2)

# Se puede observar que en los residuos puede haber una presencia de distribución normal
Prueba de JB
library(normtest)
jb.norm.test(modelo_graduados$residuals)
##
## Jarque-Bera test for normality
##
## data: modelo_graduados$residuals
## JB = 0.36511, p-value = 0.817
#Comentario: Dado que p-value es mayor que el nivel de significancia=0.05, entonces la Ho No se rechaza, por lo que los residuos siguen una distribucion normal. Dado que el valor de Jarque Bera es menor que el V.C=5.9915,NO SE RECHAZA la Ho, entonces los residuos siguen una distribucion normal.
Prueba de KS (Lilliefors)
library(nortest)
lillie.test(modelo_graduados$residuals)
##
## Lilliefors (Kolmogorov-Smirnov) normality test
##
## data: modelo_graduados$residuals
## D = 0.054571, p-value = 0.4123
# comentario: Dado que p-value es mayor que el nivel de significancia=0.05, entonces la Ho No se rechaza, por lo que los residuos siguen una distribucion normal.
Prueba de Shapiro
shapiro.test(modelo_graduados$residuals)
##
## Shapiro-Wilk normality test
##
## data: modelo_graduados$residuals
## W = 0.99282, p-value = 0.7235
## Calculando U
U2<-(0.00389*(log(136)^3)-0.083751*(log(136)^2)-0.31082*(log(136))-1.5861)
print(U2)
## [1] -4.673103
S2<-exp(1)^((0.0030302*(log(136)^2))-0.082676*(log(136))-0.4803)
print(S2)
## [1] 0.4433804
## Normalizando W
Wn2<-((log(1-0.99282)-U2)/S2)
print(Wn2)
## [1] -0.5939654
# Comentario: Dado que p-value es mayor que el nivel de significancia=0.05, entonces la Ho No se rechaza, por lo que los residuos siguen una distribucion normal. Dado que el valor de “W” es menor que el V.C=1.644854,NO SE RECHAZA la Ho, entonces los residuos siguen una distribucion normal.
Pruebas de Colinealidad
2. Utilizando todas las herramientas vistas en clase, evalue la situación de colinealidad del modelo. Comente sus resultados
Indice de condición
#Calculo manual
# Xmat
Xmat_2<- model.matrix(modelo_graduados)
print(head(Xmat_2, n=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
#XXmat
XXmat_2<-t(Xmat_2)%*%Xmat_2
print(XXmat_2)
## (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 matriz de normalizacion
Sn_2<- diag(1/sqrt(diag(XXmat_2)))
print(Sn_2)
## [,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_norm
XXmat_norm_2<- (Sn_2%*%XXmat_2)%*%Sn_2
print(XXmat_norm_2)
## [,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
lambas_2<- eigen(XXmat_norm_2, symmetric = TRUE)$values
print(lambas_2)
## [1] 5.7351306262 0.2604004371 0.0020823558 0.0018442636 0.0003778106
## [6] 0.0001645068
# Indice de condición
K_2<- sqrt(max(lambas_2)/min(lambas_2))
print(K_2)
## [1] 186.7153
Indice de condición usando mctest
library(mctest)
source(file = "C:/Users/familia/Downloads/correccion_eigprop.R")
my_eigprop(mod = modelo_graduados)
##
## Call:
## my_eigprop(mod = modelo_graduados)
##
## Eigenvalues CI (Intercept) LSAT GPA llibvol lcost rank
## 1 5.7351 1.0000 0.0000 0.0000 0.0000 0.0001 0.0000 0.0021
## 2 0.2604 4.6930 0.0000 0.0000 0.0002 0.0004 0.0001 0.2884
## 3 0.0021 52.4800 0.0058 0.0030 0.0007 0.8411 0.1155 0.1357
## 4 0.0018 55.7648 0.0002 0.0010 0.3355 0.1095 0.1756 0.0161
## 5 0.0004 123.2068 0.4254 0.0588 0.4407 0.0423 0.6610 0.4700
## 6 0.0002 186.7153 0.5686 0.9371 0.2229 0.0066 0.0478 0.0877
##
## ===============================
## Row 6==> LSAT, proportion 0.937119 >= 0.50
## Row 3==> llibvol, proportion 0.841136 >= 0.50
## Row 5==> lcost, proportion 0.661004 >= 0.50
# Comentario: Al calcular el indice de condición k(x)= 186.7153 concluimos que es mayor que 30 y por lo tanto la colinealidad es severa.
Prueba de FG
library(fastGraph)
m_4<- ncol(Xmat_2[,-1]) #Cantidad de variables Explicativas K-1
n_4<- nrow(Xmat_2)
det_R<- det(cor(Xmat_2[,-1]))
Chi_FG2<--(n_4-1-(2*m_4+5)/6)*log(det_R)
print(Chi_FG2)
## [1] 391.509
# Valor crítico
gl2<-m_4*(m_4-1)/2
VC3<-qchisq(0.05,gl2,lower.tail = FALSE)
print(VC3)
## [1] 18.30704
# P-value
Pval3<-pchisq(Chi_FG2,gl2, lower.tail = FALSE)
print(Pval3)
## [1] 0.000000000000000000000000000000000000000000000000000000000000000000000000000006031929
options(scipen = 0)
shadeDist(xshade = Chi_FG2,ddist = "dchisq" , parm1 = gl2, lower.tail = FALSE, sub=paste("VC:",VC3,"FG:",Chi_FG2))

FG con mctest
library(mctest)
mctest(modelo_graduados)
##
## 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.0521 0
## Farrar Chi-Square: 391.5090 1
## Red Indicator: 0.5819 1
## Sum of Lambda Inverse: 13.8127 0
## Theil's Method: -0.3680 0
## Condition Number: 181.9505 1
##
## 1 --> COLLINEARITY is detected by the test
## 0 --> COLLINEARITY is not detected by the test
FG usando la libreria Psych
library(psych)
library(fastGraph)
FG_test2<- cortest.bartlett(Xmat_2[,-1])
VC_3<-qchisq(0.05, FG_test2$df, lower.tail = FALSE)
print(FG_test2)
## $chisq
## [1] 391.509
##
## $p.value
## [1] 6.031929e-78
##
## $df
## [1] 10
shadeDist(xshade = FG_test2$chisq,
ddist = "dchisq",
parm1 = FG_test2$df,
lower.tail = FALSE,
sub=paste("VC:", VC_3,"FG:", FG_test2$chisq))

#Comentario: Al aplicar el estadístico de prueba rechazamos la hipótesis ya que el valor de FG es mayor que el VC
VIF Manual
VIF5<- diag(solve(cor(Xmat_2[,-1])))
print(VIF5)
## LSAT GPA llibvol lcost rank
## 3.635214 3.369004 2.110802 1.573583 3.124106
VIF con libreria car
library(car)
VIF_car2<- vif(modelo_graduados)
print(VIF_car2)
## LSAT GPA llibvol lcost rank
## 3.635214 3.369004 2.110802 1.573583 3.124106
VIF con libreria mctest
library(mctest)
mc.plot(modelo_graduados, vif = 2)

# Al utilizar el umbral de 2 podemos observar que los elementos LSAT, GPA y rank; superan el umbral de 2 y por lo tanto son los regresores que aumentan la varianza.