Carga de librerías:
library(car)
## Loading required package: carData
library(ggplot2)
library(AER)
## Loading required package: lmtest
## Loading required package: zoo
##
## Attaching package: 'zoo'
## The following objects are masked from 'package:base':
##
## as.Date, as.Date.numeric
## Loading required package: sandwich
## Loading required package: survival
library(lmtest)
datos <- read.csv("datos_oxecon.csv", header = TRUE)
\[ \ln(Consumo_t) = \beta_0 + \beta_1 \ln(Ingreso_t) + \beta_2 Desempleo_t + \beta_3Tasa Real de Interés_t + u_t \]
modelo1 <- lm(log(cons_real) ~ log(inc_disp_real) + unemp_ilo + rate_real, data = datos)
summary(modelo1)
##
## Call:
## lm(formula = log(cons_real) ~ log(inc_disp_real) + unemp_ilo +
## rate_real, data = datos)
##
## Residuals:
## Min 1Q Median 3Q Max
## -0.056062 -0.006844 0.003810 0.014609 0.029909
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) -3.018231 0.548735 -5.500 2.20e-05 ***
## log(inc_disp_real) 0.772852 0.034079 22.678 9.68e-16 ***
## unemp_ilo -0.004631 0.006646 -0.697 0.494
## rate_real -0.002354 0.001983 -1.187 0.249
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 0.02391 on 20 degrees of freedom
## Multiple R-squared: 0.9639, Adjusted R-squared: 0.9585
## F-statistic: 178.2 on 3 and 20 DF, p-value: 1.351e-14
Se estimó una regresión múltiple en la que la variable dependiente es el logaritmo del consumo privado real, y las variables explicativas son el logaritmo del ingreso disponible real, la tasa de desempleo (ILO) y la tasa de interés real.
El coeficiente del ingreso disponible real es positivo y estadísticamente significativo, lo que indica que un aumento de 1% en el ingreso se asocia con un incremento aproximado de 0.77% en el consumo. Este resultado es consistente con la teoría económica, que establece al ingreso como el principal determinante del consumo de los hogares.
La tasa de desempleo presenta un coeficiente negativo, como se esperaba teóricamente; sin embargo, no resulta estadísticamente significativa. Esto sugiere que, una vez controlando por el nivel de ingreso, su efecto marginal sobre el consumo no es estadísticamente distinto de cero.
De manera similar, la tasa de interés real exhibe un coeficiente negativo, en línea con la teoría intertemporal del consumo, aunque tampoco resulta estadísticamente significativa en este modelo.
No obstante, el modelo es estadísticamente significativo en conjunto, como lo indica la prueba F, y presenta un R² ajustado elevado (0.96), lo que sugiere un muy buen ajuste del modelo a los datos y una alta capacidad explicativa del consumo privado real.
# Seleccionamos las variables explicativas del modelo
X <- datos[, c("inc_disp_real", "unemp_ilo", "rate_real")]
# Transformamos el ingreso a logaritmos (consistente con el modelo)
X$log_inc_disp_real <- log(X$inc_disp_real)
X$inc_disp_real <- NULL
# Matriz de correlaciones
cor(X, use = "complete.obs")
## unemp_ilo rate_real log_inc_disp_real
## unemp_ilo 1.0000000 0.4386120 0.1095795
## rate_real 0.4386120 1.0000000 0.2614195
## log_inc_disp_real 0.1095795 0.2614195 1.0000000
La matriz de correlaciones muestra que la correlación entre log(inc_disp_real) y unemp_ilo es baja (≈ 0.11), mientras que la correlación entre log(inc_disp_real) y rate_real es moderada (≈ 0.26), y entre unemp_ilo y rate_real es de aproximadamente 0.44.
Ninguna de estas correlaciones es lo suficientemente elevada como para sugerir problemas serios de multicolinealidad, por lo que no existe evidencia preliminar de multicolinealidad entre las variables explicativas del modelo.
aux_inc <- lm(log(inc_disp_real) ~ unemp_ilo + rate_real, data = datos)
summary(aux_inc)
##
## Call:
## lm(formula = log(inc_disp_real) ~ unemp_ilo + rate_real, data = datos)
##
## Residuals:
## Min 1Q Median 3Q Max
## -0.24809 -0.09823 -0.04068 0.12797 0.25113
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 16.055054 0.267285 60.067 <2e-16 ***
## unemp_ilo -0.001143 0.042554 -0.027 0.979
## rate_real 0.013895 0.012327 1.127 0.272
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 0.1531 on 21 degrees of freedom
## Multiple R-squared: 0.06837, Adjusted R-squared: -0.02035
## F-statistic: 0.7706 on 2 and 21 DF, p-value: 0.4754
En la regresión auxiliar del logaritmo del ingreso disponible real sobre el desempleo y la tasa real de interés, se obtuvo un R² bajo (0.07) y la prueba F no resulta estadísticamente significativa, lo que indica que el ingreso no es explicado de forma relevante por las demás variables explicativas.
aux_unemp <- lm(unemp_ilo ~ log(inc_disp_real) + rate_real, data = datos)
summary(aux_unemp)
##
## Call:
## lm(formula = unemp_ilo ~ log(inc_disp_real) + rate_real, data = datos)
##
## Residuals:
## Min 1Q Median 3Q Max
## -1.49503 -0.39488 -0.01423 0.53596 1.26557
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 1.36915 18.01532 0.076 0.940
## log(inc_disp_real) -0.03004 1.11898 -0.027 0.979
## rate_real 0.12747 0.05885 2.166 0.042 *
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 0.7852 on 21 degrees of freedom
## Multiple R-squared: 0.1924, Adjusted R-squared: 0.1155
## F-statistic: 2.502 on 2 and 21 DF, p-value: 0.1061
Al explicar la tasa de desempleo en función del ingreso y la tasa real de interés, el R² es moderado (0.19) y el modelo no es significativo en conjunto, lo que sugiere una relación limitada entre estas variables.
aux_rate <- lm(rate_real ~ log(inc_disp_real) + unemp_ilo, data = datos)
summary(aux_rate)
##
## Call:
## lm(formula = rate_real ~ log(inc_disp_real) + unemp_ilo, data = datos)
##
## Residuals:
## Min 1Q Median 3Q Max
## -4.3119 -1.7817 0.0995 1.5841 4.4445
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) -49.1229 59.4414 -0.826 0.418
## log(inc_disp_real) 4.1058 3.6426 1.127 0.272
## unemp_ilo 1.4324 0.6614 2.166 0.042 *
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 2.632 on 21 degrees of freedom
## Multiple R-squared: 0.2385, Adjusted R-squared: 0.1659
## F-statistic: 3.288 on 2 and 21 DF, p-value: 0.05725
En la regresión auxiliar de la tasa real de interés sobre el ingreso y el desempleo, el R² es bajo (0.24) y, aunque el desempleo resulta marginalmente significativo, el poder explicativo global del modelo es reducido.
Los resultados de las regresiones auxiliares NO muestran evidencia de multicolinealidad severa, ya que ninguna variable explicativa es altamente explicada por las demás.
vif(modelo1)
## log(inc_disp_real) unemp_ilo rate_real
## 1.073390 1.238249 1.313120
Todos los VIF están muy cercanos a 1 (≈ 1.1–1.3), por lo que no hay evidencia de multicolinealidad en el modelo. Las variables explicativas no están linealmente relacionadas entre sí de forma problemática.
# a) unemp_ilo vs log(inc_disp_real)
ggplot(datos, aes(x = log(inc_disp_real), y = unemp_ilo)) +
geom_point(alpha = 0.4) +
geom_smooth(method = "lm", se = FALSE) +
labs(title = "Relación entre Desempleo (ILO) e Ingreso Disponible Real (log)",
x = "log(Ingreso disponible real)",
y = "Desempleo (ILO)")
## `geom_smooth()` using formula = 'y ~ x'
# b) rate_real vs log(inc_disp_real)
ggplot(datos, aes(x = log(inc_disp_real), y = rate_real)) +
geom_point(alpha = 0.4) +
geom_smooth(method = "lm", se = FALSE) +
labs(title = "Relación entre Tasa Real e Ingreso Disponible Real (log)",
x = "log(Ingreso disponible real)",
y = "Tasa real")
## `geom_smooth()` using formula = 'y ~ x'
# c) rate_real vs unemp_ilo
ggplot(datos, aes(x = unemp_ilo, y = rate_real)) +
geom_point(alpha = 0.4) +
geom_smooth(method = "lm", se = FALSE) +
labs(title = "Relación entre Tasa Real y Desempleo (ILO)",
x = "Desempleo (ILO)",
y = "Tasa real")
## `geom_smooth()` using formula = 'y ~ x'
Los tres gráficos muestran relaciones lineales débiles entre las variables explicativas. No se observa una alineación clara de los puntos que sugiera colinealidad fuerte.
Es una prueba asintótica que regresa los residuos al cuadrado sobre las variables que se sospecha causan la heterogeneidad. Si p < 0.05 entonces tenemos heteroscedasticidad:
bptest(modelo1)
##
## studentized Breusch-Pagan test
##
## data: modelo1
## BP = 0.41657, df = 3, p-value = 0.9368
# Ordenando por log(inc_disp_real)
gqtest(modelo1, order.by = ~ log(inc_disp_real), data = datos)
##
## Goldfeld-Quandt test
##
## data: modelo1
## GQ = 2.531, df1 = 8, df2 = 8, p-value = 0.1053
## alternative hypothesis: variance increases from segment 1 to 2
# Ordenando por rate_real
gqtest(modelo1, order.by = ~ rate_real, data = datos)
##
## Goldfeld-Quandt test
##
## data: modelo1
## GQ = 0.39617, df1 = 8, df2 = 8, p-value = 0.894
## alternative hypothesis: variance increases from segment 1 to 2
# Prueba de White
bptest(
modelo1,
~ log(inc_disp_real) + unemp_ilo + rate_real
+ I(log(inc_disp_real)^2) + I(unemp_ilo^2) + I(rate_real^2)
+ I(log(inc_disp_real)*unemp_ilo)
+ I(log(inc_disp_real)*rate_real)
+ I(unemp_ilo*rate_real),
data = datos
)
##
## studentized Breusch-Pagan test
##
## data: modelo1
## BP = 8.4812, df = 9, p-value = 0.4865
ggplot(datos, aes(x = fitted(modelo1), y = resid(modelo1))) +
geom_point(alpha = 0.4) +
geom_hline(yintercept = 0, color = "blue") +
labs(
title = "Residuos vs Valores Estimados",
x = "Valores estimados",
y = "Residuos"
)
La gráfica no muestra patrones ni cambios sistemáticos en la varianza de
los residuos, por lo que no se detecta heterocedasticidad.
# a) Residuos vs log(ingreso disponible real)
plot(log(datos$inc_disp_real), resid(modelo1),
xlab = "log(Ingreso disponible real)",
ylab = "Residuos",
main = "Residuos vs log(Ingreso disponible real)",
pch = 19, cex = 0.7)
abline(h = 0, col = "blue")
# b) Residuos vs desempleo (ILO)
plot(datos$unemp_ilo, resid(modelo1),
xlab = "Desempleo (ILO)",
ylab = "Residuos",
main = "Residuos vs Desempleo (ILO)",
pch = 19, cex = 0.7)
abline(h = 0, col = "blue")
# c) Residuos vs tasa real
plot(datos$rate_real, resid(modelo1),
xlab = "Tasa real",
ylab = "Residuos",
main = "Residuos vs Tasa real",
pch = 19, cex = 0.7)
abline(h = 0, col = "blue")
En todas las gráficas los residuos se dispersan aleatoriamente alrededor
de cero, sin patrones sistemáticos ni forma de abanico. La variabilidad
es aproximadamente constante para distintos niveles de las variables
explicativas y de los valores estimados, por lo que no hay evidencia
visual de heterocedasticidad.