Parte Teórica

1. Para un modelo con 2 regresores, la matriz de correlacion es {1,0.96;0.96,1},el vif es de (12.7551)

matriz_R = matrix(data = c(1,0.96,0.96,1),nrow = 2,
                  ncol = 2,byrow = TRUE)
print(matriz_R)
##      [,1] [,2]
## [1,] 1.00 0.96
## [2,] 0.96 1.00
VIF_1=diag(solve(matriz_R))
print(VIF_1)
## [1] 12.7551 12.7551

2. Prueba robusta para evaluar la normalidad de los residuos, independiente el tamaño muestral -> Jaque-Bera por ser independiente al tamaño muestral

3. En una prueba,para un modelo con 5 regresores y 60 observaciones con un alfa de 4.3%,el estadistico de prueba dio 40, el valor del determinate de la matriz de correlacion del modelo es de:

options(scipen = 99999)
FG=40
m=5
n=60
det_R= exp(FG/-((n-1)-((2*m+5)/6)))
print(det_R)
## [1] 0.4926459

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:

VIF_4=2.5
coef_cor= 1-(1/VIF_4)
print(coef_cor)
## [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:

KSresiduos=matrix(data = c(10,15, -10,-15, 4, -4),
                             nrow = 6,
                             ncol= 1)
print(KSresiduos)
##      [,1]
## [1,]   10
## [2,]   15
## [3,]  -10
## [4,]  -15
## [5,]    4
## [6,]   -4
# Prueba KS

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

El estadístico KS es de 0.1374

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

m_6=5
gl_6=m_6*(m_6-1)/2

# VC

VC_6=qchisq(0.043,gl_6,lower.tail = FALSE)
print(VC_6)
## [1] 18.79093

7. Sean 10,15,-10,-15,4,-4,los residuos de un modelo.El estadistico de prueba para el contraste de normalidad de JB es:

JBresiduos=matrix(data = c(10, 15, -10,-15, 4, -4),
                                nrow = 6,
                                ncol= 1)
print(JBresiduos)
##      [,1]
## [1,]   10
## [2,]   15
## [3,]  -10
## [4,]  -15
## [5,]    4
## [6,]   -4
# Prueba JB

library(normtest)
jb.norm.test(JBresiduos)
## 
##  Jarque-Bera test for normality
## 
## data:  JBresiduos
## JB = 0.51072, p-value = 0.598

8. Para una tolerancia de 0.05 el VIF es de:

Tol=0.05
VIF_8=1/Tol
print(VIF_8)
## [1] 20

9. Sean 10,15,-10,-15,4,-4,los residuos de un modelo.El estadistico de prueba para el contraste de shapiro Wilk es de:

SWresiduos=matrix(data = c(10, 15, -10,-15, 4, -4),
                                nrow = 6,
                                ncol= 1)
print(SWresiduos)
##      [,1]
## [1,]   10
## [2,]   15
## [3,]  -10
## [4,]  -15
## [5,]    4
## [6,]   -4
# Prueba SW

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

10. Para un VIF = 2.5,la tolerancia es de:

VIF_10<-2.5
tol_10<-1/VIF_10
print(tol_10)
## [1] 0.4

Parte Práctica

Modelo Ventas

  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.

  2. Utilizando todas las herramientas vistas en clase, evalué la situación de colinealidad de los regresores del modelo. Comente sus resultados.

Carga de datos y creación del modelo

# Carga de datos

library(readxl)
ventas= read_excel("C:/Users/MAURA.DESKTOP-46RI5EA/Downloads/ventas_empresa.xlsx")

# Estimación del Modelo

library(stargazer)
modelo_ventas = lm(formula = V~C+P+M, data = ventas)
stargazer(modelo_ventas, tittle= "Modelo Ventas", 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
Modelo Ventas

1)Pruebas de normalidad

# Ajuste de Normalidad

library(fitdistrplus)
ajuste=fitdist(data = modelo_ventas$residuals, distr = "norm")
plot(ajuste)

Ho: Los residuos siguen una distribución normal.

H1: Los residios no siguen una distribución normal.

# Prueba 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.2795

No se rechaza la Ho, por lo que hay evidencia que los residuos siguen una distribución normal.

# Prueba KS

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

Según la prueba KS no se rechaza la Ho, los residuos presentan distribución normal.

# Prueba SW

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

W=0.95315

# Obteniendo miu

sigma=0.0038915*(log(24))^3-0.083751*(log(24))^2-0.31082*(log(24))-1.5861

# Obteniendo Desviación

desv= exp(0.0030302*(log(24))^2-0.082676*(log(24))-0.4803)

# Obteniendo Wn

Wn= (log(1-W)-sigma)/desv
print(Wn)
## [1] 0.4772707

Según la prueba WS no se rechaza Ho, los residuos siguen una distribución normal.

2. Pruebas de multicolinealidad

Ho: los regresores no presentan multicolinealidad

H1: Los regresores si presentan multicolinealidad

# Matriz X

X1_mat= model.matrix(modelo_ventas)

# Índice de condición con librería Mctest

library(mctest)
source(file = "C:/Users/MAURA.DESKTOP-46RI5EA/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

El índice de condición es mayor de 30, en este caso 70, por lo que presenta multicolinealidad severa

# Prueba de FG

library(fastGraph)

m_FG = ncol(X1_mat[,-1]) 
n_FG = nrow (X1_mat) 
det_R_1<-det(cor(X1_mat[,-1]))
chi_FG <- -(n-1-(2*m+5)/6)*log(det_R_1)
print(chi_FG)
## [1] 190.075
#VC

gl_1<- m*(m-1)/2
VC_1<- qchisq(0.05,gl_1,lower.tail = FALSE)
print(VC_1)
## [1] 18.30704
shadeDist(xshade = chi_FG, ddist = "dchisq", parm1 = gl_1, lower.tail = FALSE, sub=paste("VC:",
VC_1, "FG:",chi_FG))

Siendo el estadístico FG mayor que el VC se rechaza la Ho multicolinealidad.

# Factores inflacionarios de la varianza (VIFs)

library(car) # VIF con libreria Car
VIF_car_1 <- vif(modelo_ventas)
print(VIF_car_1)
##        C        P        M 
## 7.631451 3.838911 9.449210
library(mctest) # VIF con libreria Mctest
mc.plot(modelo_ventas,vif =2)

### Los 3 regresores inflan la varianza, como se muestra en el gráfico superando el límite de VIF=2

Modelo de Escolaridad

  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.

  2. Utilizando todas las herramientas vistas en clase, evalue la situación de colinealidad del modelo. Comente sus resultados

Carga de datos y estimación del modelo

# Carga de datos

load("C:/Users/MAURA.DESKTOP-46RI5EA/Downloads/wage2.RData")

# Estimación del Modelo

library(stargazer)
modelo_escolaridad<-lm(formula = educ~sibs+meduc+feduc,data = wage2)
stargazer(modelo_escolaridad, tittle= "Modelo 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
Modelo Escolaridad

1. Pruebas de normalidad

#Ajuste de normalidad
library(fitdistrplus)
ajuste_1<-fitdist(data = modelo_escolaridad$residuals, distr = "norm")
plot(ajuste_1)

Ho: Los residuos siguen una distribución normal.

H1: Los residios no siguen una distribución normal.

options(scipen = 99999)

# Prueba Jarque Bera

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

Se rechaza la Ho, por lo que no hay evidencia que los residuos siguen una distribución normal.

options(scipen = 99999)

# Prueba Kolmogorov Smirnov-Lilliefors

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

Se rechaza Ho ya que se evidencia meidante la prueba KS que los residuos no siguen una distribución normal.

# Prueba Shapiro Wilk

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

W_1=0.96692

#Obteniendo miu

sigma_1= 0.0038915*(log(935))^3-0.083751*(log(935))^2-0.31082*(log(935))-1.5861

#Obteniendo la desviación

desv_1= exp(0.0030302*(log(935))^2-0.082676*(log(935))-0.4803)

#Obteniendo Wn

Wn_2= (log(1-W_1)-sigma_1)/desv_1
print(Wn_2)
## [1] 7.351479

Se rechaza Ho ya que se evidencia mediante la prueba WS que los residuos no siguen una distribución normal.

2. Pruebas de multicolinealidad

options(scipen = 99999)

# Matriz X

library(stargazer)
X2_mat<- model.matrix(modelo_escolaridad)


# Índice de condición con librería  Mctest

library(mctest)

source(file = "C:/Users/MAURA.DESKTOP-46RI5EA/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
# Prueba de FG

library(psych) 
library(fastGraph)
FG_test_1=cortest.bartlett(X2_mat[,-1]) 
print(FG_test_1)
## $chisq
## [1] 358.3897
## 
## $p.value
## [1] 0.0000000000000000000000000000000000000000000000000000000000000000000000000000227501
## 
## $df
## [1] 3
VC_2 <- qchisq(0.05,FG_test_1$df, lower.tail =FALSE) 
print(VC_2)
## [1] 7.814728
shadeDist(xshade = FG_test_1$chisq, ddist = "dchisq",
parm1 = FG_test_1$df, lower.tail = FALSE,
sub=paste("VC:",VC_2,"FG:",FG_test_1$chisq))

Se rechaza Ho por tener un estadístico mucho mayor que el VC, por tanto hay evidencia de multicolinealidad en los regresores del modelo.

# Factores inflacionarios de la varianza (VIFs)

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

La colinealidad es leve ya que ningún regresor supera el umbral límite de VIF = 2

Modelo Salarios

  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.

  2. Utilizando todas las herramientas vistas en clase, evalue la situación de colinealidad del modelo. Comente sus resultados

Carga de datos y estimación del modelo

# Carga de datos
load("C:/Users/MAURA.DESKTOP-46RI5EA/Downloads/LAWSCH85.RData")

# Estimación del Modelo

options(scipen = 9)
library(stargazer)
modelo_salario <- lm(lsalary~LSAT+GPA+llibvol+lcost+rank, data = LAWSCH85)
stargazer(modelo_salario, tittle= "Modelo de Salarios", type = "html")
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
Modelo de Salarios

1. Pruebas de normalidad

#Ajuste de normalidad

library(fitdistrplus)
ajuste_2=fitdist(data = modelo_salario$residuals, distr = "norm")
plot(ajuste_2)

Ho: Los residuos siguen una distribución normal.

H1: Los residios no siguen una distribución normal.

# Prueba Jarque Bera

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

Con la prueba JB no se rechaza Ho, es decir los residuos siguen una distribución normal.

# Prueba Kolmogorov Smirnov-Lilliefors

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

No se rechaza Ho ya que se evidencia mediante la prueba KS que los residuos siguen una distribución normal.

# Prueba Shapiro Wilk
shapiro.test(modelo_salario$residuals)
## 
##  Shapiro-Wilk normality test
## 
## data:  modelo_salario$residuals
## W = 0.99282, p-value = 0.7235
#Shapiro Wilk normalizado
W_3<-0.99282
#Obteniendo miu
sigma_3<- 0.0038915*(log(156))^3-0.083751*(log(156))^2-0.31082*(log(156))-1.5861
#Obteniendo la desviación
desv_3<- exp(0.0030302*(log(156))^2-0.082676*(log(156))-0.4803)
#Obteniendo wn
Wn_3<- (log(1-W_3)-sigma_3)/desv_3
print(Wn_3)
## [1] -0.3320221

No se rechaza Ho ya que se evidencia través de la prueba Shapiro Wilk que los residuos siguen una distribución normal.

2. Pruebas de multicolinealidad

options(scipen = 99999)

# Matriz X

library(stargazer)
X3_mat<- model.matrix(modelo_salario)


# Índice de condición con librería Mctest

library(mctest)
source(file = "C:/Users/MAURA.DESKTOP-46RI5EA/Downloads/correccion_eigprop.R")
my_eigprop(mod = modelo_salario)
## 
## Call:
## my_eigprop(mod = modelo_salario)
## 
##   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

El modelo presenta multicolinealidad severa al tener un índice de condición mayor que 30.

# Prueba de Farrar-Glaubar

library(psych) #FG con libreria Psych
library(fastGraph)
FG_test_3<-cortest.bartlett(X3_mat[,-1])
print(FG_test_3)
## $chisq
## [1] 391.509
## 
## $p.value
## [1] 0.000000000000000000000000000000000000000000000000000000000000000000000000000006031929
## 
## $df
## [1] 10
VC_3 <- qchisq(0.05,FG_test_3$df, lower.tail =FALSE) 
print(VC_3)
## [1] 18.30704
shadeDist(xshade = FG_test_3$chisq, ddist = "dchisq",
parm1 = FG_test_3$df, lower.tail = FALSE,
sub=paste("vc:",VC_3,"FG:",FG_test_3$chisq))

### se rechaza Ho ya que se presenta un estadístico mayor que el VC, por lo que hay evidencia de multicolinealidad

# Factores inflacionarios de la varianza (VIFs)

library(car)
VIF_car_3 <- vif(modelo_salario)
print(VIF_car_3)
##     LSAT      GPA  llibvol    lcost     rank 
## 3.635214 3.369004 2.110802 1.573583 3.124106
library(mctest)
mc.plot(modelo_salario,vif =2)

Se evidencia que 3 regresores superan el umbral de VIF = 2 inflando la varianza al mismo tiempo