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)

Carga de Información:

datos <- read.csv("datos_oxecon.csv", header = TRUE)

——————————————————————————

Cálculo del Modelo:

\[ \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.

Pruebas Econométricas

==============================================================================

Métodos para Detectar Multicolinealidad

  1. Matriz de correlaciones.
  2. Regresión auxiliar.
  3. Factor de inflación (vif)
  4. Gráficamente con ggplot2.

==============================================================================

1. Matriz de correlaciones:

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

——————————————————————————

2. Regresión auxiliar:

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.

——————————————————————————

3. Factor de inflación (vif):

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.

——————————————————————————

4. Graficar con ggplot2 (multicolinealidad entre explicativas)

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

CONCLUSIÓN MULTICOLINEALIDAD: No existe multicolinealidad en el modelo. Variables bien especificadas

==============================================================================

Métodos para Detectar Heterocedasticidad

  1. Prueba de Breusch-Pagan-Godfrey (BPG)
  2. Prueba(s) de Goldfeld-Quandt
  3. Prueba de White
  4. Graficamente residuales vs. estimados.
  5. Graficamente residuales vs. variables explicativas

==============================================================================

1. Prueba de Breusch-Pagan-Godfrey (BPG)

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

——————————————————————————

2. Prueba(s) de Goldfeld-Quandt:

# 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

——————————————————————————

3. Prueba de White:

# 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

——————————————————————————

4. Graficamente residuales vs. estimados:

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.

——————————————————————————

5. Graficamente residuales vs. variables explicativas

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

CONCLUSIÓN HETEROCEDASTICIDAD: No se encuentra evidencia de heterocedasticidad en el modelo. Por lo tanto, se puede asumir homocedasticidad y no es necesario aplicar correcciones.