Resuelva los siguientes ejercicios:

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.

a) Verifique los supuestos de Heterocedastidad y Autocorrelación para el modelo propuesto.

b) En caso de encontrar evidencia de violación de los supuestos, planteados en el literal anterior, corrija a través de un estimador HAC apropiado, el modelo propuesto.

Estimando el modelo

options(scipen = 999)
library(stargazer)
library(readxl)
ventas_empresa <- read_excel("C:/Users/Lilibeth Portillo/Downloads/ventas_empresa.xlsx")
modelo_ventas<-lm(formula = V~C+P+M,data = ventas_empresa)
stargazer(modelo_ventas,title = "Regresión de Modelo Ventas",type = "html",digits = 6)
Regresión de Modelo 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

Pruebas de Heterocedásticidad y Autocorrelación

Prueba de White de forma manual

library(stargazer)
u_i<-modelo_ventas$residuals
data_prueba_white<-as.data.frame(cbind(u_i,ventas_empresa))
regresion_auxiliar<-lm(I(u_i^2)~C+P+M+I(C^2)+I(P^2)+I(M^2)+C*P+C*M+P*M,data = data_prueba_white)
sumario<-summary(regresion_auxiliar)
n<-nrow(data_prueba_white)
R_2<-sumario$r.squared
LM_w<-n*R_2
gl=3+3+3
p_value<-1-pchisq(q = LM_w,df = gl)
VC<-qchisq(p = 0.95,df = gl)
salida_white<-c(LM_w,VC,p_value)
names(salida_white)<-c("LMw","Valor Crítico","p value")
stargazer(salida_white,title = "Resultados de la prueba de White",type = "html",digits = 6)
Resultados de la prueba de White
LMw Valor Crítico p value
7.122650 16.918980 0.624351

Prueba de White Usando la librería “lmtest”

library(lmtest)
prueba_white<-bptest(modelo_ventas,~I(C^2)+I(P^2)+I(M^2)+C*P+C*M+P*M,data =ventas_empresa)
print(prueba_white)
## 
##  studentized Breusch-Pagan test
## 
## data:  modelo_ventas
## BP = 7.1227, df = 9, p-value = 0.6244

De acuerdo a los resultados anteriores, ya que 0.624351 > 0.05. es decir P-value > alfa, por lo tanto: NO SE RECHAZA la hipótesis nula, arrojando evidencia de que la varianza de los residuos es homocedástica. Por otro lado, al tomar como referencia el estadístico de prueba de LMw, resultando que 7.122650 < 16.918980, dicho de otra forma que LMw < VC, existe evidencia de que la varianza de los residuos es homocedástica

Pruebas de Autocorrelación

Autocorrelación de 1° orden

Prueba de Durbin - Watson (Usando librería “lmtest”)

library(lmtest)
dwtest(modelo_ventas,alternative = "two.sided",iterations = 10000)
## 
##  Durbin-Watson test
## 
## data:  modelo_ventas
## DW = 1.2996, p-value = 0.05074
## alternative hypothesis: true autocorrelation is not 0

Usando librería Car

library(car)
durbinWatsonTest(modelo_ventas,simulate = TRUE,reps = 10000)
##  lag Autocorrelation D-W Statistic p-value
##    1       0.3013888      1.299572  0.0526
##  Alternative hypothesis: rho != 0

Dados los resultados anteriores, para ambos casos son no concluyentes, sin embargo, si se toma como referencia que p-value > al nivel de significancia, se puede descartar la presencia de autocorrelación de primer orden, ya que NO se rechaza la Hipótesis nula.

Autocorrelación de orden superior (Obtenido de forma “manual”)

Preparando datos:

library(dplyr)
library(tidyr)
library(kableExtra)
cbind(u_i,ventas_empresa) %>% 
  as.data.frame() %>% 
  mutate(Lag_1=dplyr::lag(u_i,1),
         Lag_2=dplyr::lag(u_i,2)) %>% 
  replace_na(list(Lag_1=0,Lag_2=0))->data_prueba_BG
kable(head(data_prueba_BG,6))
u_i V C P M Lag_1 Lag_2
10.673678 607 197 173 110 0.000000 0.000000
7.372511 590 208 152 107 10.673678 0.000000
-2.435532 543 181 150 99 7.372511 10.673678
-3.322264 558 194 150 102 -2.435532 7.372511
-9.913932 571 192 163 109 -3.322264 -2.435532
8.704039 615 196 179 114 -9.913932 -3.322264

Calculando la regresión auxiliar y el estadístico de prueba LMBG

regresion_auxiliar_BG<-lm(u_i~C+P+M+Lag_1+Lag_2,data = data_prueba_BG)
sumario_BG<-summary(regresion_auxiliar_BG)
R_2_BG<-sumario_BG$r.squared
n<-nrow(data_prueba_BG)
LM_BG<-n*R_2_BG
gl=2
p_value<-1-pchisq(q = LM_BG,df = gl)
VC<-qchisq(p = 0.95,df = gl)
salida_bg<-c(LM_BG,VC,p_value)
names(salida_bg)<-c("LMbg","Valor Crítico","p value")
stargazer(salida_bg,title = "Resultados de la prueba de Breusch Godfrey",type = "html",digits = 6)
Resultados de la prueba de Breusch Godfrey
LMbg Valor Crítico p value
3.840869 5.991465 0.146543

Autocorrelación de orden superior usando la librería “lmtest”

library(lmtest)
bgtest(modelo_ventas,order = 2)
## 
##  Breusch-Godfrey test for serial correlation of order up to 2
## 
## data:  modelo_ventas
## LM test = 3.8409, df = 2, p-value = 0.1465

De acuerdo a los resultados anteriores, NO se rechaza la Hipótesis nula, debido a que el P-value > 0.05 para ambos casos, por lo tanto se concluye que los residuos del modelo no siguen autocorrelación de orden 2. Por otro lado, el valor obtenido en el estadístico de prueba: LMbg, LMbg < VC, se concluye de igual forma que los residuos del modelo no siguen autocorrelación de orden 2.

Verificando la autocorrelación de 1° orden mediante BG test

library(lmtest)
bgtest(modelo_ventas,order = 1)
## 
##  Breusch-Godfrey test for serial correlation of order up to 1
## 
## data:  modelo_ventas
## LM test = 2.5963, df = 1, p-value = 0.1071

De la misma forma, al utilizar el esquema de evaluación de la prueba DW, el valor obtenido es nuevamente NO concluyente, por lo que dicha prueba no aporta suficiente evidencia, de otra forma si tomamos como referencia el p-value > 0.05, si se puede descartar la presencia de autocorrelación de orden 1.

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)

a) Verifique los supuestos de Heterocedastidad y Autocorrelación para el modelo propuesto.

b) En caso de encontrar evidencia de violación de los supuestos, planteados en el literal anterior, corrija a través de un estimador HAC apropiado, el modelo propuesto.

Estimando el modelo

options(scipen = 999)
library(stargazer)
load("C:/Users/Lilibeth Portillo/Downloads/wage2.RData")
regresion_lineal<-lm(formula =  educ~sibs+meduc+feduc,data = wage2)
stargazer(regresion_lineal, title = "Modelo Escolaridad", type = "html",digits = 6)
Modelo 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

Pruebas de Heterocedásticidad y Autocorrelación

Prueba de White

load("C:/Users/Lilibeth Portillo/Downloads/wage2.RData")
library(lmtest)
prueba_white<-bptest(regresion_lineal,~I(sibs^2)+I(meduc^2)+I(feduc^2)+sibs*meduc+sibs*feduc+meduc*feduc,data = wage2)
print(prueba_white)
## 
##  studentized Breusch-Pagan test
## 
## data:  regresion_lineal
## BP = 15.537, df = 9, p-value = 0.0772

Debido a que 0.0772 > 0.05 No se rechaza la hipótesis nula, por que hay evidencia de que la varianza de los residuos es homocedástica.

Autocorrelación

Autocorrelación de 1° orden

Prueba de Durbin – Watson.

Usando libreria “lmtest”

library(lmtest)
dwtest(regresion_lineal,alternative = "two.sided",iterations = 10000)
## 
##  Durbin-Watson test
## 
## data:  regresion_lineal
## DW = 1.8989, p-value = 0.1705
## alternative hypothesis: true autocorrelation is not 0

Usando libreria “Car”

library(car)
durbinWatsonTest(regresion_lineal,simulate = TRUE,reps = 10000)
##  lag Autocorrelation D-W Statistic p-value
##    1      0.05018452      1.898938   0.176
##  Alternative hypothesis: rho != 0

En ambos casos, se descarta la presencia de autocorrelación de orden 1, ya que el p-value > nivel de significancia Por otra parte, al utilizar el esquema de evaluación de la prueba DW, se obtine un valor que es cercano a 2, cayendo así en la zona de no rechazo de hipóteis nula, por lo que se concluye que hay evidencia de no autocorrelacion de orden 1.

Autocorrelación de orden superior

library(lmtest)
bgtest(regresion_lineal,order = 2)
## 
##  Breusch-Godfrey test for serial correlation of order up to 2
## 
## data:  regresion_lineal
## LM test = 4.5747, df = 2, p-value = 0.1015

Debido a que el p-value > 0.05 NO se rechaza hipótesis nula, por que se concluye que los residuos del modelo no siguen autocorrelación de orden 2.

Verificando la autocorrelación de 1° orden utilizando BG test

library(lmtest)
bgtest(regresion_lineal,order = 1)
## 
##  Breusch-Godfrey test for serial correlation of order up to 1
## 
## data:  regresion_lineal
## LM test = 1.8207, df = 1, p-value = 0.1772

Resulta de igual manera, ya que el p-value > 0.05, por lo que NO se rechaza hipóteis nula y se concluye que los residuos del modelo no siguen autocorrelación de 1° orden.

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)

a) Verifique los supuestos de Heterocedastidad y Autocorrelación para el modelo propuesto.

b) En caso de encontrar evidencia de violación de los supuestos, planteados en el literal anterior, corrija a través de un estimador HAC apropiado, el modelo propuesto.

Estimando el modelo

options(scipen = 9999)
library(stargazer)
load("C:/Users/Lilibeth Portillo/Downloads/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 = 6)
Regresión de modelo Salary
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

Pruebas de Heterocedásticidad y Autocorrelación

Prueba de White

load("C:/Users/Lilibeth Portillo/Downloads/LAWSCH85.RData")
library(lmtest)
prueba_white<-bptest(modelo_salary,~I(LSAT^2)+I(GPA^2)+I(llibvol^2)+I(lcost^2)+I(rank^2)+LSAT*GPA+ LSAT* llibvol+ LSAT* lcost+ LSAT* rank+ GPA* llibvol+ GPA* lcost+ GPA* rank+ llibvol* lcost+ llibvol* rank+ lcost* rank,data = LAWSCH85)
print(prueba_white)
## 
##  studentized Breusch-Pagan test
## 
## data:  modelo_salary
## BP = 34.295, df = 20, p-value = 0.0242

Debido a que 0.0242 < 0.05, SI se rechaza la hipótesis, por lo que se concluye que hay evidencia de que la varianza de los residuos NO es homocedástica.

Autocorrelación

Autocorrelación de 1° orden

Prueba de Durbin – Watson.

Usando libreria “lmtest”

library(lmtest)
dwtest(modelo_salary,alternative = "two.sided",iterations = 10000)
## 
##  Durbin-Watson test
## 
## data:  modelo_salary
## DW = 1.7058, p-value = 0.07519
## alternative hypothesis: true autocorrelation is not 0

Usando libreria “car”

library(car)
durbinWatsonTest(modelo_salary,simulate = TRUE,reps = 1000)
##  lag Autocorrelation D-W Statistic p-value
##    1        0.144458      1.705846   0.076
##  Alternative hypothesis: rho != 0

Utilizando como referencia el esquema de la prueba DW, el estadístico calculado cae en la zona de NO concluyente, de manera que el valor obtenido no aporta suficiente evidencia, sin embargo, si se toma como referencia el p-value, para ambos casos, se descarta la presencia de autocorrelación de orden 1, ya que el p-value > 0.05

Autocorrelación de orden superior

library(lmtest)
bgtest(modelo_salary,order = 2)
## 
##  Breusch-Godfrey test for serial correlation of order up to 2
## 
## data:  modelo_salary
## LM test = 3.2116, df = 2, p-value = 0.2007

Debido a que p-value > 0.05 NO se rechaza hipótesis nula, por lo que se concluye que los residuos del modelo no siguen autocorrelación de orden 2

verificando la autocorrelación de 1° orden utilizando BG test:

library(lmtest)
bgtest(modelo_salary,order = 1)
## 
##  Breusch-Godfrey test for serial correlation of order up to 1
## 
## data:  modelo_salary
## LM test = 2.9379, df = 1, p-value = 0.08652

Debido a que p-value > 0.05, NO se rechaza hipótesis nula, por lo se concluye que los residuos del modelo no siguen autocorrelación de 1° orden

Uso de Estimadores HAC

Estimación Robusta, mediante el uso del estimador HAC

Dado que al realizar las pruebas de Heterocedásticidad y Autocorrelación se evidencio la presencia de Heterocedásticidad procederemos a corregirlo a travez de el estimador HAC

Sin Corregir

options(scipen = 99999)
library(lmtest)
#Sin corregir:
coeftest(modelo_salary)
## 
## t test of coefficients:
## 
##                Estimate  Std. Error t value              Pr(>|t|)    
## (Intercept)  8.34322596  0.53251920 15.6675 < 0.00000000000000022 ***
## LSAT         0.00469647  0.00401049  1.1710              0.243722    
## GPA          0.24752388  0.09003704  2.7491              0.006826 ** 
## llibvol      0.09499321  0.03325435  2.8566              0.004988 ** 
## lcost        0.03755380  0.03210608  1.1697              0.244270    
## rank        -0.00332459  0.00034846 -9.5408 < 0.00000000000000022 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Corregido mediante la utilización de un estimador HAC

options(scipen = 99999)
library(lmtest)
library(sandwich)
#Corregido
#HC0 Corrige Sólo Heterocedasticidad
estimacion_omega<-vcovHC(modelo_salary,type = "HC0") 

coeftest(modelo_salary,vcov. = estimacion_omega)
## 
## t test of coefficients:
## 
##                Estimate  Std. Error  t value              Pr(>|t|)    
## (Intercept)  8.34322596  0.50982819  16.3648 < 0.00000000000000022 ***
## LSAT         0.00469647  0.00447644   1.0492             0.2960540    
## GPA          0.24752388  0.08861505   2.7932             0.0060073 ** 
## llibvol      0.09499321  0.02703852   3.5133             0.0006095 ***
## lcost        0.03755380  0.03258921   1.1523             0.2512966    
## rank        -0.00332459  0.00030126 -11.0356 < 0.00000000000000022 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1