Práctica sobre el Cálculo y la Presentación de Estimadores HAC
Estimación del modelo
# Carga de datos
load("C:/Users/User/Desktop/documents_rstudio/periodo_3/Verónica Nayeli Miranda Mejia - smoke.RData")
options(scipen = 99999999)
library(lmtest)
modelo_lineal<-lm(formula = cigs~cigpric+lcigpric+income+lincome+age+agesq+ educ+white+restaurn, data = data)
coeftest(modelo_lineal)##
## t test of coefficients:
##
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 340.804374604 260.015587269 1.3107 0.190334
## cigpric 2.002267667 1.492831189 1.3413 0.180220
## lcigpric -115.273464445 85.424315195 -1.3494 0.177585
## income -0.000046194 0.000133491 -0.3460 0.729402
## lincome 1.404061178 1.708165841 0.8220 0.411340
## age 0.778359013 0.160555612 4.8479 0.0000015001 ***
## agesq -0.009150353 0.001749292 -5.2309 0.0000002158 ***
## educ -0.494780616 0.168180198 -2.9420 0.003356 **
## white -0.531051635 1.460721806 -0.3636 0.716287
## restaurn -2.644241351 1.129998690 -2.3400 0.019528 *
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
Presentación del modelo con stargazer
| Dependent variable: | |
| cigs | |
| cigpric | 2.002 |
| (1.493) | |
| lcigpric | -115.273 |
| (85.424) | |
| income | -0.00005 |
| (0.0001) | |
| lincome | 1.404 |
| (1.708) | |
| age | 0.778*** |
| (0.161) | |
| agesq | -0.009*** |
| (0.002) | |
| educ | -0.495*** |
| (0.168) | |
| white | -0.531 |
| (1.461) | |
| restaurn | -2.644** |
| (1.130) | |
| Constant | 340.804 |
| (260.016) | |
| Observations | 807 |
| R2 | 0.055 |
| Adjusted R2 | 0.044 |
| Residual Std. Error | 13.413 (df = 797) |
| F Statistic | 5.169*** (df = 9; 797) |
| Note: | p<0.1; p<0.05; p<0.01 |
Verificación si la matriz de Varianza-Covarianza del modelo es escalar o no.
Mediante la verificación de las pruebas de heterocedasticidad y autocorrelación.
Prueba de Heterocedasticidad
form_compl_interaccion <- function(variables) {
if (!is.vector(variables) || !all(sapply(variables, is.character))) {
stop("El argumento 'variables' debe ser un vector de caracteres.")
}
# Generar términos cuadráticos
terminos_cuadraticos <- paste(paste0("I(", variables, "^2)"), collapse = " + ")
# Generar términos de interacción
interaccion <- combn(variables, 2, FUN = function(x) paste(x, collapse = "*"), simplify = TRUE)
terminos_interaccion <- paste(interaccion, collapse = " + ")
# Concatenar términos cuadráticos e interacciones
cadena_formula <- paste(terminos_cuadraticos, terminos_interaccion, sep = " + ")
# Crear objeto formula
objeto_formula <- as.formula(paste("~", cadena_formula))
return(objeto_formula)
}options(scipen = 99999)
variables<-c("cigpric","lcigpric","income","lincome","age",
"agesq","educ","white","restaurn")
formula_result<-form_compl_interaccion(variables)
library(lmtest)
prueba_white<-bptest(modelo_lineal,formula_result,data = data)
print(prueba_white)##
## studentized Breusch-Pagan test
##
## data: modelo_lineal
## BP = 60.193, df = 50, p-value = 0.1532
Interpretación Como pvalue(0.15)>0.05 No se rechaza la H0, por tanto hay evidencia que la varianza de los residuos es homocedástica, es decir no tiene problemas de heterocedasticidad.
Prueba de Autocorrelación
a) Prueba de Durbin Watson.
##
## Durbin-Watson test
##
## data: modelo_lineal
## DW = 2.0174, p-value = 0.8866
## alternative hypothesis: true autocorrelation is not 0
Interpretación: No hay evidencia de autocorrelación de primer orden, por lo que no se rechaza la H0, al ser el Pvalue (0.8866) > sigma(0.05).
b) Prueba del Multiplicador de Lagrange (verificación de autocorrelación de primero y segundo orden).
Segundo orden
##
## Breusch-Godfrey test for serial correlation of order up to 2
##
## data: modelo_lineal
## LM test = 0.26889, df = 2, p-value = 0.8742
Interpretación
No se rechaza la H0,al ser el Pvalue (0.8742) > sigma(0.05), mostrando evidencia de no autocorrelación en segundo orden.
Primer orden
##
## Breusch-Godfrey test for serial correlation of order up to 1
##
## data: modelo_lineal
## LM test = 0.069737, df = 1, p-value = 0.7917
Interpretación
No se rechaza la H0,al ser el Pvalue (0.7917) > sigma(0.05), mostrando evidencia de no autocorrelación en primer orden.
Para este ejercicio, no será necesario hacer uso de la estimación robusta mediante los estimadores HAC ya que este modelo al no tener presencia de heterocedasticidad y autocorrelación, no presenta violación a sus supuestos, y además esta indicando que la matriz de varianza covarianza es escalar.
Pero para efectos de práctica se hace uso de los estimadores HAC, los cuales se presentan a continuación:
Estimación Robusta
Sin corregir
##
## t test of coefficients:
##
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 340.804374604 260.015587269 1.3107 0.190334
## cigpric 2.002267667 1.492831189 1.3413 0.180220
## lcigpric -115.273464445 85.424315195 -1.3494 0.177585
## income -0.000046194 0.000133491 -0.3460 0.729402
## lincome 1.404061178 1.708165841 0.8220 0.411340
## age 0.778359013 0.160555612 4.8479 0.0000015001 ***
## agesq -0.009150353 0.001749292 -5.2309 0.0000002158 ***
## educ -0.494780616 0.168180198 -2.9420 0.003356 **
## white -0.531051635 1.460721806 -0.3636 0.716287
## restaurn -2.644241351 1.129998690 -2.3400 0.019528 *
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
Corregido
options(scipen = 99999)
library(lmtest)
library(sandwich)
estimacion_omega<-vcovHC(modelo_lineal,type="HC1")
coeftest(modelo_lineal,vcov. = estimacion_omega)##
## t test of coefficients:
##
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 340.804374604 280.307210432 1.2158 0.224412
## cigpric 2.002267667 1.612751396 1.2415 0.214778
## lcigpric -115.273464445 91.915690160 -1.2541 0.210165
## income -0.000046194 0.000116316 -0.3971 0.691370
## lincome 1.404061178 1.236656671 1.1354 0.256562
## age 0.778359013 0.137801126 5.6484 0.0000000225324 ***
## agesq -0.009150353 0.001460626 -6.2647 0.0000000006108 ***
## educ -0.494780616 0.163987570 -3.0172 0.002633 **
## white -0.531051635 1.370425032 -0.3875 0.698483
## restaurn -2.644241351 1.044748153 -2.5310 0.011566 *
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
Explicación
Los pasos de no corregido y corregido son importantes, ya que muestran la peculiaridad que los errores estandar corregidos son más grandes en comparación a los originales (no corregidos); caso contrario con los valores t, que en los corregidos son más pequeños en comparación a los no corregidos, mostrando un modelo robusto que puede reducir los intervalos de confianza, indicando finalmente el paso corregido que se puede confiar en estas estadísticas.
Presentación del modelo original y corregido
library(robustbase)
library(stargazer)
m_robusto<-sqrt(diag(estimacion_omega))
stargazer(modelo_lineal,modelo_lineal,se = list(NULL,m_robusto),column.labels = c("Modelo original", "Modelo corregido"),align =TRUE,type = "html",title = "Modelo sobre cigarrillos" )| Dependent variable: | ||
| cigs | ||
| Modelo original | Modelo corregido | |
| (1) | (2) | |
| cigpric | 2.002 | 2.002 |
| (1.493) | (1.613) | |
| lcigpric | -115.273 | -115.273 |
| (85.424) | (91.916) | |
| income | -0.00005 | -0.00005 |
| (0.0001) | (0.0001) | |
| lincome | 1.404 | 1.404 |
| (1.708) | (1.237) | |
| age | 0.778*** | 0.778*** |
| (0.161) | (0.138) | |
| agesq | -0.009*** | -0.009*** |
| (0.002) | (0.001) | |
| educ | -0.495*** | -0.495*** |
| (0.168) | (0.164) | |
| white | -0.531 | -0.531 |
| (1.461) | (1.370) | |
| restaurn | -2.644** | -2.644** |
| (1.130) | (1.045) | |
| Constant | 340.804 | 340.804 |
| (260.016) | (280.307) | |
| Observations | 807 | 807 |
| R2 | 0.055 | 0.055 |
| Adjusted R2 | 0.044 | 0.044 |
| Residual Std. Error (df = 797) | 13.413 | 13.413 |
| F Statistic (df = 9; 797) | 5.169*** | 5.169*** |
| Note: | p<0.1; p<0.05; p<0.01 | |
Conclusión Final
Los estimadores HAC (Estimadores Consistentes de Heterocedasticidad y Autocorrelación), permiten obtener errores estándar robustos que son válidos incluso cuando las condiciones clásicas de homocedasticidad y no autocorrelación no se cumplen. También ayudan a asegurar que las inferencias estadísticas sean confiables, permitiendo un análisis más robusto y preciso.