Clave 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.
2. Utilizando todas las herramientas vistas en clase, evalué la situación de colinealidad de los regresores del modelo. Comente sus resultados.
1. Carga de datos.
options(scipen = 9999)
library(readxl)
ventas_empresa <- read_excel("ventas_empresa.xlsx")
2. Estimando el modelo.
modelo_ventas <- lm(formula = V~C+P+M, data = ventas_empresa)
stargazer(modelo_ventas, title = "Modelo Estimado de Ventas", type = "html", digits = 6)
Modelo Estimado de Ventas
|
|
Dependent variable:
|
|
|
|
V
|
|
C
|
0.922567***
|
|
(0.222733)
|
|
|
P
|
0.950177***
|
|
(0.155845)
|
|
|
M
|
1.297786***
|
|
(0.430729)
|
|
|
Constant
|
107.443500***
|
|
(18.057490)
|
|
|
|
Observations
|
24
|
R2
|
0.979817
|
Adjusted R2
|
0.976789
|
Residual Std. Error
|
9.505570 (df = 20)
|
F Statistic
|
323.641500*** (df = 3; 20)
|
|
Note:
|
p<0.1; p<0.05; p<0.01
|
3. Verificando los supuestos de normalidad.
3.1 Gráfica preliminar.
library(fitdistrplus)
ajuste_normal_1 <- fitdist(data = modelo_ventas$residuals, distr = "norm")
plot(ajuste_normal_1)

De forma preliminar, puede observarse que los residuos tienen un comportamiento normal.
3.2 Prueba 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.2755
Asumiendo un nivel de significancia del 5%, al aplicar la prueba JB, por el método del p_value se tiene que 0.273 > 0.05, por lo que no se rechaza H0 y se aporta evidencia de que los residuos efectivamente siguen una distribución normal, tal como se observa en el gráfico.
3.3 Prueba KS (Lillierfors).
library(nortest)
lillie.test(modelo_ventas$residuals)
##
## Lilliefors (Kolmogorov-Smirnov) normality test
##
## data: modelo_ventas$residuals
## D = 0.13659, p-value = 0.2935
Para un nivel de significancia del 5%, al aplicar la prueba KS, se tiene, por el método del p_value que 0.2935 > 0.05, por lo que no se rechaza H0, esto aporta evidencia de que los residuos siguen una distribución normal.
3.4 Prueba Shapiro-Wilk (extendida).
shapiro.test(modelo_ventas$residuals)
##
## Shapiro-Wilk normality test
##
## data: modelo_ventas$residuals
## W = 0.95315, p-value = 0.3166
Con un nivel de significancia del 5%, aplicando la prueba Shapiro-Wilk (extendida) y a través del método del valor_p, se tiene que, 0.3166 > 0.05, por lo que no se rechaza H0 y 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.
4. Evaluando la situación de colinelidad.
4.1 Índice de condición (usando mctest).
library(mctest)
source(file = "C:/Archivos R/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
Puesto que el Índice de Condición es de 71.1635, K(x)>30, se detecta un nivel de colinealidad severo.
4.2 Prueba de Farrar-Glaubar (usando la la librería psych).
library(psych)
mat_x1 <- model.matrix(modelo_ventas)
FG_test1 <- cortest.bartlett(mat_x1[,-1])
print(FG_test1)
## $chisq
## [1] 71.20805
##
## $p.value
## [1] 0.000000000000002352605
##
## $df
## [1] 3
FG_VC1 <- qchisq(0.05, FG_test1$df, lower.tail = FALSE)
print(FG_VC1)
## [1] 7.814728
# Graficando los resultados.
options(scipen = 0)
library(fastGraph)
shadeDist(xshade = FG_test1$chisq, ddist = "dchisq", parm1 = FG_test1$df,
lower.tail = FALSE, sub = paste("VC:", FG_VC1, "FG:", FG_test1$chisq))

Al aplicar la prueba FG, se tiene que el X2FG > VC, (71.21 > 7.81), se rechaza H0 y la prueba aporta evidencia de colineadlidad en los regresores.
4.3 Factores Inflacionarios de la Varianza.
- VIF (usando librería car).
library(car)
VIF_Car1 <- vif(modelo_ventas)
print(VIF_Car1)
## C P M
## 7.631451 3.838911 9.449210
- VIF (usando librería Mctest).
mc.plot(mod = modelo_ventas, vif = 2)

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 que se detecta que los regresores C y M son los que más aumentan la varianza, con 7.631 y 9.449 respectivamente.
Al evaluar la situación de colinealidad de los regresores del modelo por medio de las herramientas utilizadas, se tiene un escenario robusto que evidencia la existencia de colinealidad en los mismos.
Clave 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.
2. Utilizando todas las herramientas vistas en clase, evalué la situación de colinealidad de los regresores del modelo. Comente sus resultados.
1. Carga de datos.
load("C:/Archivos R/escolaridad.Rdata")
2. Estimando el modelo.
modelo_escolaridad <- lm(formula = educ~sibs+meduc+feduc, data = wage2)
stargazer(modelo_escolaridad, type = "html", title = "Modelo estimado de años de Escolaridad", digits = 6 )
Modelo estimado de años de Escolaridad
|
|
Dependent variable:
|
|
|
|
educ
|
|
sibs
|
-0.093636***
|
|
(0.034471)
|
|
|
meduc
|
0.130787***
|
|
(0.032689)
|
|
|
feduc
|
0.210004***
|
|
(0.027475)
|
|
|
Constant
|
10.364260***
|
|
(0.358500)
|
|
|
|
Observations
|
722
|
R2
|
0.214094
|
Adjusted R2
|
0.210810
|
Residual Std. Error
|
1.987052 (df = 718)
|
F Statistic
|
65.198250*** (df = 3; 718)
|
|
Note:
|
p<0.1; p<0.05; p<0.01
|
3. Verificando los supuestos de normalidad.
3.1 Gráfica preliminar.
ajuste_normal_2 <- fitdist(data = modelo_escolaridad$residuals, distr = "norm")
plot(ajuste_normal_2)

De forma preliminar, puede observarse que en los residuos hay una posible ausencia de distribución normal.
3.2 Prueba de Jarque-Bera.
jb.norm.test(modelo_escolaridad$residuals)
##
## Jarque-Bera test for normality
##
## data: modelo_escolaridad$residuals
## JB = 35.655, p-value < 2.2e-16
Con un α = 5%, se tiene un VC de 4.6052.Al aplicar la prueba JB, por el método del Vc, se obtuvo un estadístico JB de 35.655, teniéndose que 35.655 > 4.6052, así que se rechaza H0 y se aporta evidencia de que los residuos efectivamente no siguen una distribución normal.
3.3 Prueba KS (Lillierfors).
lillie.test(modelo_escolaridad$residuals)
##
## Lilliefors (Kolmogorov-Smirnov) normality test
##
## data: modelo_escolaridad$residuals
## D = 0.089992, p-value = 3.394e-15
Teniendo un α = 5% se tiene un VC = 0.0286 según tablas, y al aplicar la prueba KS, se obtiene a través del método del VC que 0.089992 > 0.028645, por lo que se rechaza H0, la prueba aporta evidencia de que los residuos no siguen una distribución normal.
3.4 Prueba Shapiro-Wilk (extendida).
shapiro.test(modelo_escolaridad$residuals)
##
## Shapiro-Wilk normality test
##
## data: modelo_escolaridad$residuals
## W = 0.96692, p-value = 1.058e-11
# 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
Considerando un α = 5%, se obtiene un VC de 1.644854, aplicando la prueba Shapiro-Wilk (extendida) y a través del método 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 evaluar el supuesto de normalidad a través de las 3 pruebas, se tiene un escenario robusto que evidencia que los residuos no tienen distribución normal.
4. Evaluando la situación de colinelidad.
4.1 Índice de condición (usando mctest).
my_eigprop(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
Calculando el Índice de Condición por medio de la librería mctest, se obtiene un K(x)= 11.9094 < 20, lo que implica un nivel de colinealidad leve, por lo que no se considera un problema.
4.2 Prueba de Farrar-Glaubar (usando la la librería psych).
mat_x2 <- model.matrix(modelo_escolaridad)
FG_test2 <- cortest.bartlett(mat_x2[,-1])
print(FG_test2)
## $chisq
## [1] 358.3897
##
## $p.value
## [1] 2.27501e-77
##
## $df
## [1] 3
FG_VC2 <- qchisq(0.05, FG_test2$df, lower.tail = FALSE)
print(FG_VC2)
## [1] 7.814728
# Graficando los resultados.
options(scipen = 0)
library(fastGraph)
shadeDist(xshade = FG_test2$chisq, ddist = "dchisq",
parm1 = FG_test2$df,lower.tail = FALSE,
sub = paste("VC:", FG_VC2, "FG:", FG_test2$chisq))

Al aplicar la prueba FG, se tiene que el X2FG > VC, (358.3897 > 7.81), se rechaza H0 y la prueba aporta evidencia de colineadlidad en los regresores.
4.3 Factores Inflacionarios de la Varianza.
- VIF (usando librería car).
VIF_Car2 <- vif(modelo_escolaridad)
print(VIF_Car2)
## sibs meduc feduc
## 1.098950 1.561254 1.506359
- VIF (usando librería Mctest).
mc.plot(mod = modelo_escolaridad, vif = 2)

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.
Al evaluar la situación de colinealidad de los regresores del modelo por medio de las herramientas utilizadas, se tiene un escenario robusto que evidencia la existencia de colinealidad leve.
Clave 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.
2. Utilizando todas las herramientas vistas en clase, evalué la situación de colinealidad de los regresores del modelo. Comente sus resultados.
1. Carga de datos.
load("C:/Archivos R/salary.Rdata")
2. Estimando el modelo.
formula3 <- as.formula("lsalary~LSAT+GPA+llibvol+lcost+rank")
modelo_sueldoinicial <- lm(formula = formula3, data = LAWSCH85)
stargazer(modelo_sueldoinicial, type = "html", title = "Modelo estimado de sueldo inicial medio", digits = 6 )
Modelo estimado de sueldo inicial medio
|
|
Dependent variable:
|
|
|
|
lsalary
|
|
LSAT
|
0.004696
|
|
(0.004010)
|
|
|
GPA
|
0.247524***
|
|
(0.090037)
|
|
|
llibvol
|
0.094993***
|
|
(0.033254)
|
|
|
lcost
|
0.037554
|
|
(0.032106)
|
|
|
rank
|
-0.003325***
|
|
(0.000348)
|
|
|
Constant
|
8.343226***
|
|
(0.532519)
|
|
|
|
Observations
|
136
|
R2
|
0.841685
|
Adjusted R2
|
0.835596
|
Residual Std. Error
|
0.112412 (df = 130)
|
F Statistic
|
138.229800*** (df = 5; 130)
|
|
Note:
|
p<0.1; p<0.05; p<0.01
|
3. Verificando los supuestos de normalidad.
3.1 Gráfica preliminar.
ajuste_normal_3 <- fitdist(data = modelo_sueldoinicial$residuals, distr = "norm")
plot(ajuste_normal_3)

De forma preliminar, puede observarse que en los residuos hay una posible presencia de distribución normal.
3.2 Prueba de Jarque-Bera.
jb.norm.test(modelo_sueldoinicial$residuals)
##
## Jarque-Bera test for normality
##
## data: modelo_sueldoinicial$residuals
## JB = 0.36511, p-value = 0.848
Considerando un α = 5%.Al aplicar la prueba JB, por el método del valor_p, se tiene que, 0.83 > 0.05, así que no se rechaza H0 y se aporta evidencia de que los residuos efectivamente siguen una distribución normal, tal como se consideraba en primera instancia por medio del gráfico.
3.3 Prueba KS (Lillierfors).
lillie.test(modelo_sueldoinicial$residuals)
##
## Lilliefors (Kolmogorov-Smirnov) normality test
##
## data: modelo_sueldoinicial$residuals
## D = 0.054571, p-value = 0.4123
Teniendo un α = 5%, al aplicar la prueba KS, se obtiene a través del método del valor_p que 0.4123 > 0.05, por lo que no se rechaza H0, la prueba aporta evidencia de que los residuos siguen una distribución normal.
3.4 Prueba Shapiro-Wilk (extendida).
shapiro.test(modelo_sueldoinicial$residuals)
##
## Shapiro-Wilk normality test
##
## data: modelo_sueldoinicial$residuals
## W = 0.99282, p-value = 0.7235
# 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
Considerando un α = 5%, se obtiene un VC de 1.644854, aplicando la prueba Shapiro-Wilk (extendida) y a través del método 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.
4. Evaluando la situación de colinelidad.
4.1 Índice de condición (usando mctest).
my_eigprop(modelo_sueldoinicial)
##
## Call:
## my_eigprop(mod = modelo_sueldoinicial)
##
## 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
Calculando el Índice de Condición por medio de la librería mctest, se obtiene un K(x)= 186.7153 > 30, lo que implica un nivel de colinealidad servera, por lo que se considera un problema grave.
4.2 Prueba de Farrar-Glaubar (cálculo manual).
# Otbeniendo la matriz de información (matriz X)
mat_x3 <- model.matrix(modelo_sueldoinicial)
# Calculando el estadístico de prueba.
m <- ncol(mat_x3[,-1]) #Cantidad de variables explicativas K-1.
n <- nrow(mat_x3) #Número de observaciones.
det_R <- det(cor(mat_x3[,-1])) #Determinante de la matriz R.
Chi_FG3 <- -(n-1-(2*m+5)/6)*log(det_R)
print(Chi_FG3)
## [1] 391.509
# Calculando el valor crítico.
gl_3 <- m*(m-1)/2
VC3<- qchisq(0.05,gl_3,lower.tail = FALSE)
print(VC3)
## [1] 18.30704
# Graficando los resultados.
options(scipen = 0)
library(fastGraph)
shadeDist(xshade = Chi_FG3, ddist = "dchisq", parm1 = gl_3,
lower.tail = FALSE, sub = paste("VC:", VC3, "FG:", Chi_FG3))

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 colineadlidad en los regresores.
4.3 Factores Inflacionarios de la Varianza.
- VIF (usando librería car).
VIF_Car3 <- vif(modelo_sueldoinicial)
print(VIF_Car3)
## LSAT GPA llibvol lcost rank
## 3.635214 3.369004 2.110802 1.573583 3.124106
- VIF (usando librería Mctest).
mc.plot(mod = modelo_sueldoinicial, vif = 2)

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 que se detecta que los regresores LSAT, GPA, llibvol y rank, superan el umbral y los que más aumentan la varianza son LSAT, GPA y rank, con 3.63, 3.36 y 3.12 respectivamente.
Al evaluar la situación de colinealidad de los regresores del modelo por medio de las herramientas utilizadas, se tiene un escenario robusto que evidencia la existencia de colinealidad en los mismos.