1- Para un modelo con 2 regresores, la matriz de correlación es [1,0.96;0.96,1] ,el VIF es de:
options(scipen = 999999)
Matr<-matrix(data = c(1,0.96,0.96,1),nrow = 2,ncol = 2,byrow = FALSE)
VIF<-diag(solve(Matr))
print(VIF)
## [1] 12.7551 12.7551
R: El VIF es igual a 12.7551
2- Prueba robusta para evaluar la normalidad de los residuos independientemente del tamaño muestral: R: Prueba de Jarque-Bera.
3- En una prueba de FG, para un modelo con 5 regresores, y 60 observaciones con un alfa de 4.3%, el estadístico de prueba dio 40, el valor del determinante de la matriz de correlación del modelo es de:
options(scipen = 999999)
FG<-40
m<-5
n<-60
determinante_R<- exp(FG/-((n-1)-((2*m+5)/6)))
print(determinante_R)
## [1] 0.4926459
R: El valor del determinante es 0.4926459
4- Si el VIF para una variable es de 2.5, el coeficiente de correlación entre la variable y el resto de regresores es de:
VIF2<-2.5
coeficiente_de_correlacion<- 1-(1/VIF2)
print(coeficiente_de_correlacion)
## [1] 0.6
R: El coeficiente de correlación entre la variable y el resto de regresores es de 0.6
5- Sean 10,15,-10,-15,4,-4, los residuos de un modelo. El estadístico de prueba para el contraste de normalidad de KS es:
options(scipen = 999999)
KS_Residuos<-matrix(data = c(10,15,-10,-15,4,-4),
nrow = 6,ncol = 1,
byrow = FALSE)
library(nortest)
lillie.test(KS_Residuos)
##
## Lilliefors (Kolmogorov-Smirnov) normality test
##
## data: KS_Residuos
## D = 0.1374, p-value = 0.9763
R: El estadístico de prueba para el contraste de normalidad KS es 0.1374.
6- En una prueba de FG, para un modelo con 5 regresores y un alfa de 4.3%, el valor crítico es de:
gl<-5*(5-1)/2
# Valor crítico
VC_<-qchisq(0.043,gl,lower.tail = FALSE)
print(VC_)
## [1] 18.79093
R: El Valor Crítico es de: 18.79093
JB_residuals<-matrix(data = c(10, 15, -10,
-15, 4, -4),
nrow = 6,
ncol= 1)
print(JB_residuals)
## [,1]
## [1,] 10
## [2,] 15
## [3,] -10
## [4,] -15
## [5,] 4
## [6,] -4
# Prueba de JB
library(normtest)
jb.norm.test(JB_residuals)
##
## Jarque-Bera test for normality
##
## data: JB_residuals
## JB = 0.51072, p-value = 0.587
R: El estadístico de prueba para el contraste de normalidad JB es 0.51072.
Tolerancia<-0.05
VIF3<-1/Tolerancia
print(VIF3)
## [1] 20
R: El VIF es de 20.
9 Sean 10,15,-10,-15,4,-4, los residuos de un modelo. El estadístico de prueba para el contraste de normalidad de Shapiro Wilk es:
SW_Residuals<-matrix(data = c(10, 15, -10,
-15, 4, -4),
nrow = 6,
ncol= 1)
print(SW_Residuals)
## [,1]
## [1,] 10
## [2,] 15
## [3,] -10
## [4,] -15
## [5,] 4
## [6,] -4
# Prueba de SW
shapiro.test(SW_Residuals)
##
## Shapiro-Wilk normality test
##
## data: SW_Residuals
## W = 0.96164, p-value = 0.8323
R: El estadístico de prueba para el contraste de normalidad de SW es: 0.96164.
10- Para un VIF=2.5, la tolerancia es de:
Tolerancia<-1/2.5
print(Tolerancia)
## [1] 0.4
R: La toleracia es de 0.4.
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.
# Carga de datos
library(stargazer)
library(readxl)
ventas_empresa <- read_excel("C:/Users/IRMA/Downloads/ventas_empresa.xlsx")
# Corriendo el modelo
regresion<-lm(formula = V~C+P+M,data = ventas_empresa)
stargazer(regresion,title = "Modelo estimado",type = "html")
| 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 |
library(fitdistrplus)
ajuste_normal<-fitdist(data = regresion$residuals,distr = "norm")
plot(ajuste_normal)
Comentario: En los graficos se puede ver que los residuos siguen una distribución normal.
library(normtest)
jb.norm.test(regresion$residuals)
##
## Jarque-Bera test for normality
##
## data: regresion$residuals
## JB = 1.4004, p-value = 0.28
Comentario: En la prueba de JB > VC, eso significa que Sigue una distribución normal, por lo tanto no se rechaza la Ho.
library(nortest)
lillie.test(regresion$residuals)
##
## Lilliefors (Kolmogorov-Smirnov) normality test
##
## data: regresion$residuals
## D = 0.13659, p-value = 0.2935
Comentario: En los resultados obtenidos, los residuos siguen una distribución normal, eso permite que no se rechaze H0.
shapiro.test(regresion$residuals)
##
## Shapiro-Wilk normality test
##
## data: regresion$residuals
## W = 0.95315, p-value = 0.3166
#Shapiro Wilk normalizado
w1<-0.95315
S<- 0.0038915*(log(24))^3-0.083751*(log(24))^2-0.31082*(log(24))-1.5861
des1<- exp(0.0030302*(log(24))^2-0.082676*(log(24))-0.4803)
Wn1<- (log(1-w1)-S)/des1
print(Wn1)
## [1] 0.4772707
Comentario: En esta prueva el resultado nos indica que los residuos tienen una distribución normal.
# calculo manual
Xmat<-model.matrix(regresion)
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<-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
#matriz de normalización
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
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
library(mctest)
source(file = "C:/Users/IRMA/Downloads/correccion_eigprop.R")
my_eigprop(mod = regresion)
##
## Call:
## my_eigprop(mod = regresion)
##
## 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
library(fastGraph)
m<-ncol(Xmat[,-1]) #cantidad de variables explicativas K-1
n<-nrow(Xmat)
determinante_R<-det(cor(Xmat[,-1]))
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))
En FG de 71.20805 siendo > VC de 7.814728, hay evidencia de colinealidad en los regresores, en este caso se rechaza Ho.
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))
#VIF
VIF<-diag(solve(cor(Xmat[,-1])))
print(VIF)
C P M
7.631451 3.838911 9.449210
library(car)
VIF_Car<-vif(regresion)
print(VIF_Car)
## C P M
## 7.631451 3.838911 9.449210
library(mctest)
mc.plot(regresion,vif=2)
Al realizar la prueba con mctest con los VIF, existe un umbral de 2, esto da a conocer que hay un margen de tolerancia de colinealidad del 0.5, siendo C y M el que más infla la varianza, esto nos permite conocer que existe un margen de colinealidad en los regresores.
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)
Estime el modelo de regresión lineal, correspondiente y verifique el supuesto de normalidad, usando todas las pruebas vistas en clase. Comente sus resultados.
Utilizando todas las herramientas vistas en clase, evalue la situación de colinealidad del modelo. Comente sus resultados.
library(stargazer)
load("C:/Users/IRMA/Downloads/wage2.RData")
# Estimando el modelo
modelo_escolaridad<-lm(formula= educ~sibs+meduc+feduc,data=wage2)
stargazer(modelo_escolaridad,title="Modelo de escolaridad", type="html")
| 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 |
library(fitdistrplus)
ajuste_normal_2<-fitdist(data= modelo_escolaridad$residuals, distr = "norm")
plot(ajuste_normal_2)
Comentario: Con los graficos podemos concluir que los residuos no siguen una distribución normal
library(normtest)
jb.norm.test(modelo_escolaridad$residuals)
##
## Jarque-Bera test for normality
##
## data: modelo_escolaridad$residuals
## JB = 35.655, p-value < 0.00000000000000022
Comentario: Al aplicar la prueba JB, con un nivel de significancia de 5%, de VC de 5.9915, se aporta evidencia de que los residuos no siguen una distribución normal, debido a esto se rechaza Ho, JB>VC.
library(nortest)
lillie.test(modelo_escolaridad$residuals)
##
## Lilliefors (Kolmogorov-Smirnov) normality test
##
## data: modelo_escolaridad$residuals
## D = 0.089992, p-value = 0.000000000000003394
Comentario: Al aplicar la prueba KS, el p-value es < 5% del nivel de significancia, hay evidencia de que los residuos no siguen una distribución normal, por lo tanto se rechaza Ho.
shapiro.test(modelo_escolaridad$residuals)
##
## Shapiro-Wilk normality test
##
## data: modelo_escolaridad$residuals
## W = 0.96692, p-value = 0.00000000001058
# Normalizando W.
## Utilizando W:
W2 <- 0.96692
# Cálculo Miu.
miu2 <- 0.0038915*((log(722))^3)-0.083751*((log(722))^2)-0.31082*(log(722))-1.5861
# cálculo de Sigma.
sigma2 <- exp((0.0030302*(log(722)^2))-0.082676*(log(722))-0.4803)
# Cálculo Wn.
Wn2 <- (log(1-W2)-miu2)/sigma2
print(Wn2)
## [1] 6.697959
Comentario: Considerando un α = 5%, se obtiene un VC de 1.644854, aplicando la prueba SW y del VC se tiene que 6.697959 > 1.644854, se rechaza H0, por lo tanto existe evidencia de que los residuos no tienen una distribución normal. Al aplicar el supuesto de normalidad se puede concluir que en las 3 pruebas hay evidencia de que no tienen distribución normal los residuos.
# Calculando sigma matriz
matx_2<-model.matrix(modelo_escolaridad)
mxx_2<-t(matx_2)%*%matx_2
# matriz de normalización sn
sn_2<-diag(1/sqrt(diag(mxx_2)))
print(sn_2)
## [,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
# Matriz normalizada
mat_nor2<-(sn_2%*%mxx_2)%*%sn_2
print(mat_nor2)
## [,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
lambdas_2<-eigen(mat_nor2, symmetric = TRUE)$values
print(lambdas_2)
## [1] 3.55762739 0.37556335 0.04172605 0.02508320
# Indice de condición K
K_2<-sqrt(max(lambdas_2)/min(lambdas_2))
print(K_2)
## [1] 11.90937
library(mctest)
source(file = "C:/Users/IRMA/Downloads/correccion_eigprop.R")
my_eigprop(mod= modelo_escolaridad)
##
## Call:
## my_eigprop(mod = modelo_escolaridad)
##
## 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 obtener el indice de condición K, de ambas formas, obtenemos evidencia de que los regresores poseen colinealidad leve por que es < que 20.
library(fastGraph)
m2<-ncol(matx_2[,-1]) # Cantidad de variables explicativas K-1
n2<-nrow(matx_2)
# Determinante R
detR_2<-det(cor(matx_2[,-1]))
Chi_FG2<-(-(n2-1-(2*m2+5)/6)*log(detR_2))
print(Chi_FG2)
## [1] 358.3897
# Valor Crítico
gl_2<-m2*(m2-1)/2
VC_2<-qchisq(0.05, gl_2,lower.tail = FALSE)
print(VC_2)
## [1] 7.814728
# P-value
Pval_2<-pchisq(Chi_FG2,gl_2, lower.tail = FALSE)
print(Pval_2)
## [1] 0.0000000000000000000000000000000000000000000000000000000000000000000000000000227501
options(scipen = 0)
shadeDist(xshade = Chi_FG2,ddist= "dchisq", parm1= gl_2, lower.tail= FALSE, sub=paste("VC:", VC_2, "FG:", Chi_FG2))
Comentario: Al aplicar la prueba FG, se tiene que el X2FG > VC, (358.3897 > 7.81), se rechaza H0 y la prueba nos indica que existe evidencia de colineadlidad en los regresores.
library(psych)
library(fastGraph)
FG_test2<-cortest.bartlett(matx_2[,-1])
## R was not square, finding R from data
VC_2<-qchisq(0.05,FG_test2$df, lower.tail = FALSE)
print(FG_test2)
## $chisq
## [1] 358.3897
##
## $p.value
## [1] 2.27501e-77
##
## $df
## [1] 3
options(scipen = 0)
shadeDist(xshade = FG_test2$chisq,ddist= "dchisq",parm1= FG_test2$df,lower.tail=FALSE, sub=paste("VC:",VC_2,"FG:",FG_test2$chisq))
Comentario: Al aplicar la prueba FG, de todas las formas, obtenemos un FG > VC, por tanto hay evidencia de colinealidad en los regresores, se rechaza Ho.
VIF_2<-diag(solve(cor(matx_2[,-1])))
print(VIF_2)
## sibs meduc feduc
## 1.098950 1.561254 1.506359
VIF_car2<-vif(modelo_escolaridad)
print(VIF_car2)
## sibs meduc feduc
## 1.098950 1.561254 1.506359
Comentario: Considerando un coeficiente de correlación entre los regresores menor o igual a 0.5, se obtiene un umbral de tolerancia para los VIF igual a 2, con el cual se evaluan los regresores y se determina que ninguno supera dicho umbral por lo que ninguno infla considerablemente la varianza.
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.
load("C:/Users/IRMA/Downloads/LAWSCH85.RData")
# Estimando el modelo
library(stargazer)
options(scipen = 99999)
modelo_salario<-lm(formula=salary~LSAT+GPA+libvol+cost+rank,data=LAWSCH85)
stargazer(modelo_salario,title= "Modelo de Salario", type="html")
| Dependent variable: | |
| salary | |
| LSAT | 155.286 |
| (192.598) | |
| GPA | 14,500.240*** |
| (4,357.070) | |
| libvol | 12.956*** |
| (3.261) | |
| cost | 0.366** |
| (0.146) | |
| rank | -115.815*** |
| (16.153) | |
| Constant | -33,124.550 |
| (25,210.760) | |
| Observations | 136 |
| R2 | 0.806 |
| Adjusted R2 | 0.798 |
| Residual Std. Error | 5,525.860 (df = 130) |
| F Statistic | 107.948*** (df = 5; 130) |
| Note: | p<0.1; p<0.05; p<0.01 |
library(fitdistrplus)
ajuste_normal3<-fitdist(data= modelo_salario$residuals, distr = "norm")
plot(ajuste_normal3)
Comentario: Se puede observar que los residuos seguen una distribución normal.
library(normtest)
jb.norm.test(modelo_salario$residuals)
##
## Jarque-Bera test for normality
##
## data: modelo_salario$residuals
## JB = 2.9134, p-value = 0.1755
Comentario: En la prueba JB, con un nivel de significancia del 5%, obtenemos evidencia de que los residuos siguen una distribución normal, pues JB es < VC de 5.9915, por lo tanto no se rechaza Ho.
library(nortest)
lillie.test(modelo_salario$residuals)
##
## Lilliefors (Kolmogorov-Smirnov) normality test
##
## data: modelo_salario$residuals
## D = 0.05251, p-value = 0.4749
Comentario: Con un α = 5%, al aplicar la prueba KS, se obtiene el p-value 0.4123 > 0.05, por lo tanto no se rechaza H0, eso significa que sigue una distribucio normal.
shapiro.test(modelo_salario$residuals)
##
## Shapiro-Wilk normality test
##
## data: modelo_salario$residuals
## W = 0.98925, p-value = 0.3759
# Normalizando W.
## Utilizando W:
W3 <- 0.99282
# Cálculo Miu.
miu3 <- 0.0038915*((log(136))^3)-0.083751*((log(136))^2)-0.31082*(log(136))-1.5861
## cálculo de Sigma.
sigma3 <- exp((0.0030302*(log(136)^2))-0.082676*(log(136))-0.4803)
## Cálculo Wn.
Wn3 <- (log(1-W3)-miu3)/sigma3
print(Wn3)
## [1] -0.5943665
Comentario: Con un α = 5%, se tiene un VC de 1.644854, en la prueba S-W y a través del VC se tiene que -0.5943665 < 1.644854, no se rechaza H0, por lo tanto existe evidencia de que los residuos tienen una distribución normal. Al evaluar el supuesto de normalidad a través de las 3 pruebas, se tiene un escenario robusto que evidencia que los residuos tienen distribución normal.
# Calculando sigma matriz
matx_3<-model.matrix(modelo_salario)
mxx_3<-t(matx_3)%*%matx_3
# Sn, matriz de normalización
sn3<-diag(1/sqrt(diag(mxx_3)))
print(sn3)
## [,1] [,2] [,3] [,4] [,5] [,6]
## [1,] 0.08574929 0.000000000 0.00000000 0.0000000000 0.000000000000 0.0000000000
## [2,] 0.00000000 0.000540754 0.00000000 0.0000000000 0.000000000000 0.0000000000
## [3,] 0.00000000 0.000000000 0.02586346 0.0000000000 0.000000000000 0.0000000000
## [4,] 0.00000000 0.000000000 0.00000000 0.0002146439 0.000000000000 0.0000000000
## [5,] 0.00000000 0.000000000 0.00000000 0.0000000000 0.000006414093 0.0000000000
## [6,] 0.00000000 0.000000000 0.00000000 0.0000000000 0.000000000000 0.0009166041
# Matriz normalizada
mat_nor3<-(sn3%*%mxx_3)%*%sn3
print(mat_nor3)
## [,1] [,2] [,3] [,4] [,5] [,6]
## [1,] 1.0000000 0.9995823 0.9982420 0.8777615 0.9526497 0.8525542
## [2,] 0.9995823 1.0000000 0.9991485 0.8854472 0.9564693 0.8413471
## [3,] 0.9982420 0.9991485 1.0000000 0.8924483 0.9551331 0.8292662
## [4,] 0.8777615 0.8854472 0.8924483 1.0000000 0.8838801 0.5968945
## [5,] 0.9526497 0.9564693 0.9551331 0.8838801 1.0000000 0.7365870
## [6,] 0.8525542 0.8413471 0.8292662 0.5968945 0.7365870 1.0000000
# Autovalores
lambdas_3<-eigen(mat_nor3, symmetric = TRUE)$values
print(lambdas_3)
## [1] 5.4381011892 0.4246396131 0.0956695851 0.0406281319 0.0008117738
## [6] 0.0001497069
# Indice de condición K
K_3<-sqrt(max(lambdas_3)/min(lambdas_3))
print(K_3)
## [1] 190.5912
library(mctest)
source(file = "C:/Users/IRMA/Downloads/correccion_eigprop.R")
my_eigprop(mod= modelo_salario)
##
## Call:
## my_eigprop(mod = modelo_salario)
##
## Eigenvalues CI (Intercept) LSAT GPA libvol cost rank
## 1 5.4381 1.0000 0.0000 0.0000 0.0000 0.0036 0.0019 0.0024
## 2 0.4246 3.5786 0.0000 0.0000 0.0000 0.1027 0.0059 0.1449
## 3 0.0957 7.5394 0.0000 0.0000 0.0001 0.6338 0.2511 0.1135
## 4 0.0406 11.5694 0.0011 0.0007 0.0048 0.2023 0.5568 0.3114
## 5 0.0008 81.8476 0.1395 0.0221 0.7961 0.0381 0.0862 0.3480
## 6 0.0001 190.5912 0.8594 0.9771 0.1990 0.0195 0.0981 0.0798
##
## ===============================
## Row 6==> LSAT, proportion 0.977125 >= 0.50
## Row 5==> GPA, proportion 0.796061 >= 0.50
## Row 3==> libvol, proportion 0.633756 >= 0.50
## Row 4==> cost, proportion 0.556845 >= 0.50
Comentario: Calculando el Índice de Condición por medio de la librería mctest, se obtiene un K(x)= 186.7153 > 30, lo que indica un nivel de colinealidad servera, por lo que se considera un problema grave.
library(fastGraph)
m3<-ncol(matx_3[,-1]) ## Cantidad de variables explicativas K-1
n3<-nrow(matx_3)
## Determinante R
detR_3<-det(cor(matx_3[,-1]))
Chi_FG3<-(-(n3-1-(2*m3+5)/6)*log(detR_3))
print(Chi_FG3)
## [1] 363.9343
# Valor Crítico
gl_3<-m3*(m3-1)/2
VC_3<-qchisq(0.05, gl_3,lower.tail = FALSE)
print(VC_3)
## [1] 18.30704
# P-value
Pval_3<-pchisq(Chi_FG3,gl_3, lower.tail = FALSE)
print(Pval_3)
## [1] 0.000000000000000000000000000000000000000000000000000000000000000000000004385631
options(scipen = 0)
shadeDist(xshade = Chi_FG3,ddist= "dchisq", parm1= gl_3, lower.tail= FALSE, sub=paste("VC:", VC_3, "FG:", Chi_FG3))
Comentario: Al aplicar la prueba FG, se tiene que el X2FG > VC, (391.508999 > 18.3070), se rechaza H0 y la prueba aporta evidencia de la existencia de colinealidad en los regresores.
library(car)
VIF_car3<-vif(modelo_salario)
print(VIF_car3)
## LSAT GPA libvol cost rank
## 3.469461 3.264910 1.735231 1.558141 2.777994
Comentario: Considerando un coeficiente de correlación entre los regresores menor o igual a 0.5, se obtiene un umbral de tolerancia para los VIF igual a 2, con el cual se evaluan los regresores y se determina que ninguno supera dicho umbral por lo que ninguno infla considerablemente la varianza.