Teoría Keynesiana: ¿El ahorro depende principalmente del ingreso corriente?
Según la teoría keynesiana, el ahorro depende del ingreso corriente, pero no de manera proporcional. A medida que aumenta el ingreso, las personas tienden a ahorrar más, aunque no en la misma fracción del aumento. La relación entre ahorro e ingreso está influenciada por factores como la propensidad marginal a ahorrar, las expectativas económicas, y elementos institucionales como las políticas fiscales o tasas de interés. Así, aunque el ingreso es un factor clave, el ahorro también está determinado por otros aspectos económicos y psicológicos.
Teoría Ciclo Vital: ¿Varía según la edad y el ingreso permanente?
La teoría del ciclo vital, propuesta por Modigliani y Brumberg en 1954, sugiere que los individuos planifican su consumo y ahorro a lo largo de toda su vida con el objetivo de suavizar su consumo en el tiempo. Según este modelo, el ahorro no depende únicamente del ingreso presente, sino también del ingreso futuro esperado. Se asume que las personas buscan maximizar su utilidad derivada del consumo durante toda su vida, lo que da lugar a una función de consumo que considera la renta actual, las rentas futuras esperadas, la riqueza acumulada o heredada, la edad y otros factores. Una teoría similar fue desarrollada de manera paralela por Milton Friedman en 1957, quien introdujo la hipótesis de la renta permanente. Friedman amplió el enfoque al incluir tanto las rentas derivadas de la riqueza humana (como educación y salud) como la no humana, resultando en una función de consumo parecida a la del ciclo vital. En este caso, se asume que las rentas transitorias se destinan completamente al ahorro.
library(dplyr)
variables_keynes <- base_GEIH %>%
select("ingreso", "ahorro")
options(scipen = 999)
modelo_keynes <- lm(ahorro ~ ingreso, data = variables_keynes)
summary(modelo_keynes)
##
## Call:
## lm(formula = ahorro ~ ingreso, data = variables_keynes)
##
## Residuals:
## Min 1Q Median 3Q Max
## -365725 -4027 11349 13331 16502
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) -16501.779103006 45.131019488 -365.6 <0.0000000000000002 ***
## ingreso 0.051321214 0.000008195 6262.7 <0.0000000000000002 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 21530 on 346433 degrees of freedom
## Multiple R-squared: 0.9912, Adjusted R-squared: 0.9912
## F-statistic: 3.922e+07 on 1 and 346433 DF, p-value: < 0.00000000000000022
summary(modelo_keynes$model)
## ahorro ingreso
## Min. : -53790 Min. : 0
## 1st Qu.: 0 1st Qu.: 1300000
## Median : 115000 Median : 2300000
## Mean : 149079 Mean : 3226356
## 3rd Qu.: 190000 3rd Qu.: 3800000
## Max. :14465000 Max. :289300000
El ingreso mínimo registrado es de cero, lo que indica que algunas personas no reportan ingresos, ya sea debido al desempleo, a la informalidad laboral o a la falta de datos en la muestra. En contraste, el ingreso máximo alcanza los 289,300,000, lo que sugiere la presencia de individuos con ingresos extraordinariamente altos, probablemente provenientes del sector empresarial o de inversiones. La media del ingreso se sitúa en 3,226,356, un valor que se ve afectado por la presencia de cifras extremadamente elevadas.
En cuanto al ahorro, el valor mínimo registrado es de -53,790, posiblemente influenciado por los casos en los que el ingreso es igual a cero. Por otro lado, el ahorro máximo alcanza los 14,465,000, lo que refleja que algunos individuos tienen ingresos excepcionalmente altos. La media del ahorro es de 149,079, lo que indica que existen ciertos casos con montos de ahorro significativamente elevados que están impactando el promedio general.
library(ggplot2)
plot(variables_keynes$ingreso, variables_keynes$ahorro,
main = "Grafica de Dispersión",
xlab = "Ahorro", ylab = "Ingreso",
pch = 16, col = "blue")
abline(modelo_keynes, col = "red", lwd = 2)
library(ggplot2)
ggplot(variables_keynes, aes(y = ingreso)) +
geom_boxplot(fill = "skyblue", color = "black") +
labs(title = "Boxplot del Ingreso") +
coord_flip() + # 📌 Hace que el boxplot sea horizontal
theme_minimal()
library(ggplot2)
ggplot(variables_keynes, aes(y = ahorro)) +
geom_boxplot(fill = "lightgreen", color = "black") +
labs(title = "Boxplot del Ahorro") +
coord_flip() + # 📌 Hace que el boxplot sea horizontal
theme_minimal()
library(dplyr)
library(ggplot2)
# Calcular cuartiles y rango intercuartil (IQR)
Q1 <- quantile(base_GEIH$ingreso, 0.25, na.rm = TRUE) # Primer cuartil (Q1)
Q3 <- quantile(base_GEIH$ingreso, 0.75, na.rm = TRUE) # Tercer cuartil (Q3)
IQR <- Q3 - Q1 # Rango intercuartil
# Filtrar datos sin valores atípicos
base_sin_atipicos <- base_GEIH %>%
filter(ingreso >= (Q1 - 1.5 * IQR) & ingreso <= (Q3 + 1.5 * IQR))
variables_keynes_sin_datipicos <- base_sin_atipicos %>%
select("ahorro", "ingreso")
modelo_keynes_sin_datipicos <- lm(ahorro ~ ingreso, data = variables_keynes_sin_datipicos)
summary(modelo_keynes_sin_datipicos)
##
## Call:
## lm(formula = ahorro ~ ingreso, data = variables_keynes_sin_datipicos)
##
## Residuals:
## Min 1Q Median 3Q Max
## -105902 -10783 6939 15134 30544
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) -30544.3982874 63.6551831 -479.8 <0.0000000000000002 ***
## ingreso 0.0570046 0.0000214 2663.9 <0.0000000000000002 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 19800 on 323699 degrees of freedom
## Multiple R-squared: 0.9564, Adjusted R-squared: 0.9564
## F-statistic: 7.096e+06 on 1 and 323699 DF, p-value: < 0.00000000000000022
summary(modelo_keynes_sin_datipicos$model)
## ahorro ingreso
## Min. :-53790 Min. : 0
## 1st Qu.: 0 1st Qu.:1300000
## Median :105000 Median :2100000
## Mean :111432 Mean :2490605
## 3rd Qu.:168500 3rd Qu.:3370000
## Max. :377500 Max. :7550000
El ingreso mínimo registrado es cero, lo que sugiere que algunas personas no reportan ingresos, ya sea debido al desempleo, al trabajo informal o a la falta de información en la muestra. En contraste, el ingreso máximo es de 7,550,000, lo que indica la presencia de individuos con niveles de ingreso elevados. La media del ingreso es de 2,490,605, un valor que se ve afectado por la presencia de cifras altas.
En cuanto al ahorro, el valor mínimo registrado es de -53,790, posiblemente influenciado por los casos en los que el ingreso es igual a cero. Por otro lado, el ahorro máximo registrado alcanza los 377,500. La media del ahorro es de 111,432.
library(ggplot2)
plot(variables_keynes_sin_datipicos$ingreso, variables_keynes_sin_datipicos$ahorro,
main = "GRAFICA DE DISPERSIÓN",
xlab = "Ahorro", ylab = "Ingreso",
pch = 16, col = "violet")
abline(modelo_keynes, col = "green", lwd = 2)
``
library(ggplot2)
library(gridExtra)
# Boxplot de Ahorro
p1 <- ggplot(variables_keynes_sin_datipicos, aes(x = "", y = ahorro)) +
geom_boxplot(fill = "pink", color = "red") +
coord_flip() + # Hace el boxplot horizontal
scale_y_continuous(expand = expansion(mult = c(0.05, 0.05))) +
labs(title = "Distribución del Ahorro sin valores atípicos",
y = "Ahorro",
x = "") +
theme_minimal()
# Boxplot de Ingreso
p2 <- ggplot(variables_keynes_sin_datipicos, aes(x = "", y = ingreso)) +
geom_boxplot(fill = "pink", color = "red") +
coord_flip() + # Hace el boxplot horizontal
scale_y_continuous(expand = expansion(mult = c(0.05, 0.05))) +
labs(title = "Distribución del Ingreso sin valores atípicos",
y = "Ingreso",
x = "") +
theme_minimal()
# Mostrar ambos gráficos juntos en una misma figura
grid.arrange(p1, p2, ncol = 2) # Los pone en la misma fila (horizontal)
library(ggplot2)
ggplot(variables_keynes_sin_datipicos, aes(x = ahorro, y = ingreso)) +
geom_point(color = "violet") +
geom_smooth(method = "lm", color = "green", se = FALSE) +
labs(title = "Relación entre Ahorro e Ingreso",
x = "Ahorro", y = "Ingreso") +
theme_minimal()
variables_ciclo_vital <- base_GEIH %>%
select("ingreso", "ahorro", "edad", "edad2", "nivel_educ", "años_educ")
options(scipen = 999)
modelo_ciclo_vital <- lm(ahorro ~ ingreso + edad + edad2 + nivel_educ + años_educ, data = variables_ciclo_vital)
summary(modelo_ciclo_vital)
##
## Call:
## lm(formula = ahorro ~ ingreso + edad + edad2 + nivel_educ + años_educ,
## data = variables_ciclo_vital)
##
## Residuals:
## Min 1Q Median 3Q Max
## -340743 -3626 10475 13871 19860
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) -19687.765213070 124.982718632 -157.524 < 0.0000000000000002 ***
## ingreso 0.051219889 0.000008382 6110.765 < 0.0000000000000002 ***
## edad -47.156835344 7.437939231 -6.340 0.0000000002299861 ***
## edad2 0.684913900 0.089574124 7.646 0.0000000000000207 ***
## nivel_educ 619.022888024 17.402126781 35.572 < 0.0000000000000002 ***
## años_educ 178.926174696 16.997231677 10.527 < 0.0000000000000002 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 21440 on 346429 degrees of freedom
## Multiple R-squared: 0.9913, Adjusted R-squared: 0.9913
## F-statistic: 7.912e+06 on 5 and 346429 DF, p-value: < 0.00000000000000022
summary(modelo_ciclo_vital$model)
## ahorro ingreso edad edad2
## Min. : -53790 Min. : 0 Min. : 3.00 Min. : 9
## 1st Qu.: 0 1st Qu.: 1300000 1st Qu.: 19.00 1st Qu.: 361
## Median : 115000 Median : 2300000 Median : 34.00 Median : 1156
## Mean : 149079 Mean : 3226356 Mean : 35.91 Mean : 1703
## 3rd Qu.: 190000 3rd Qu.: 3800000 3rd Qu.: 51.00 3rd Qu.: 2601
## Max. :14465000 Max. :289300000 Max. :104.00 Max. :10816
## nivel_educ años_educ
## Min. : 1.000 Min. : 0.000
## 1st Qu.: 3.000 1st Qu.: 2.000
## Median : 5.000 Median : 2.000
## Mean : 5.561 Mean : 3.339
## 3rd Qu.: 8.000 3rd Qu.: 4.000
## Max. :99.000 Max. :99.000
El ahorro muestra una gran variabilidad dentro de la muestra, con un valor mínimo de -53,790 y un máximo de 14,465,000, lo que indica que algunos individuos han logrado acumular cantidades significativas de ahorro. La media, que se sitúa en 149,079, está influenciada por estos valores extremos, dado que el 75% de los individuos presentan un ahorro inferior a 190,000.
El ingreso presenta una distribución altamente dispersa. Su valor mínimo es 0, lo que evidencia la presencia de personas sin ingresos, mientras que el valor máximo alcanza los 289,300,000, reflejando la existencia de individuos con ingresos extraordinariamente altos. La media de ingreso, de 3,226,356, es notablemente superior a la mediana, que se ubica en 2,300,000, lo que confirma que la distribución está sesgada hacia valores elevados.
En cuanto a la edad, la muestra incluye individuos desde los 3 hasta los 104 años, con una media de 35.91 años. La variable “edad2” representa la transformación cuadrática de la edad, lo que enfatiza las diferencias entre edades más bajas y más altas.
Respecto al nivel educativo, el valor mínimo registrado es 1 y el máximo es 99, lo que podría indicar la presencia de valores atípicos. El percentil 75, con un valor de 8, sugiere que la mayoría de las personas tienen un nivel educativo medio-alto. En cuanto a los años de escolaridad, el mínimo registrado es 0, lo que posiblemente corresponde a personas sin educación formal, mientras que el máximo nuevamente es 99, lo que podría señalar errores en la base de datos.
par(mfrow = c(2, 3)) # Divide la ventana en una matriz de 2x3
plot(variables_ciclo_vital$ingreso, variables_ciclo_vital$ahorro,
main = "Ingreso vs Ahorro", xlab = "Ingreso", ylab = "Ahorro", pch = 16, col = "orange")
plot(variables_ciclo_vital$edad, variables_ciclo_vital$ahorro,
main = "Edad vs Ahorro", xlab = "Edad", ylab = "Ahorro", pch = 16, col = "orange")
plot(variables_ciclo_vital$edad2, variables_ciclo_vital$ahorro,
main = "Edad^2 vs Ahorro", xlab = "Edad^2", ylab = "Ahorro", pch = 16, col = "orange")
plot(variables_ciclo_vital$nivel_educ, variables_ciclo_vital$ahorro,
main = "Nivel Educativo vs Ahorro", xlab = "Nivel Educ", ylab = "Ahorro", pch = 16, col = "orange")
plot(variables_ciclo_vital$años_educ, variables_ciclo_vital$ahorro,
main = "Años de Educación vs Ahorro", xlab = "Años Educ", ylab = "Ahorro", pch = 16, col = "orange")
par(mfrow = c(1, 1)) # Restaurar el layout a 1 gráfico
library(ggplot2)
library(gridExtra) # Para organizar múltiples gráficos
p1 <- ggplot(variables_ciclo_vital, aes(x = "", y = ingreso)) +
geom_boxplot(fill = "blue") +
labs(title = "Ingreso") +
theme(axis.text.y = element_blank()) +
coord_flip() # Hace el boxplot horizontal
p2 <- ggplot(variables_ciclo_vital, aes(x = "", y = edad)) +
geom_boxplot(fill = "yellow") +
labs(title = "Edad") +
theme(axis.text.y = element_blank()) +
coord_flip()
p3 <- ggplot(variables_ciclo_vital, aes(x = "", y = edad2)) +
geom_boxplot(fill = "grey") +
labs(title = "Edad²") +
theme(axis.text.y = element_blank()) +
coord_flip()
p4 <- ggplot(variables_ciclo_vital, aes(x = "", y = nivel_educ)) +
geom_boxplot(fill = "orange") +
labs(title = "Nivel Educativo") +
theme(axis.text.y = element_blank()) +
coord_flip()
p5 <- ggplot(variables_ciclo_vital, aes(x = "", y = años_educ)) +
geom_boxplot(fill = "purple") +
labs(title = "Años de Educación") +
theme(axis.text.y = element_blank()) +
coord_flip()
p6 <- ggplot(variables_ciclo_vital, aes(x = "", y = ahorro)) +
geom_boxplot(fill = "green") +
labs(title = "Ahorro") +
theme(axis.text.y = element_blank()) +
coord_flip()
# Organizar todos los gráficos en una sola figura
grid.arrange(p1, p2, p3, p4, p5, p6, ncol = 3)
variables_ciclo_vital_sin_datipicos <- base_sin_atipicos %>%
select("ingreso", "ahorro", "edad", "edad2", "nivel_educ", "años_educ")
options(scipen = 999)
modelo_ciclo_vital_sin_datipicos <- lm(ahorro ~ ingreso + edad + edad2 + nivel_educ + años_educ, data = variables_ciclo_vital_sin_datipicos)
summary(modelo_ciclo_vital_sin_datipicos)
##
## Call:
## lm(formula = ahorro ~ ingreso + edad + edad2 + nivel_educ + años_educ,
## data = variables_ciclo_vital_sin_datipicos)
##
## Residuals:
## Min 1Q Median 3Q Max
## -106411 -10902 6980 15007 31132
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) -31154.951041 125.978661 -247.303 < 0.0000000000000002 ***
## ingreso 0.056985 0.000022 2589.687 < 0.0000000000000002 ***
## edad 14.167314 7.038070 2.013 0.0441 *
## edad2 -0.030829 0.084925 -0.363 0.7166
## nivel_educ -9.448692 17.342335 -0.545 0.5859
## años_educ 78.651458 16.916028 4.650 0.00000333 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 19800 on 323695 degrees of freedom
## Multiple R-squared: 0.9564, Adjusted R-squared: 0.9564
## F-statistic: 1.42e+06 on 5 and 323695 DF, p-value: < 0.00000000000000022
summary(modelo_ciclo_vital_sin_datipicos$model)
## ahorro ingreso edad edad2
## Min. :-53790 Min. : 0 Min. : 3.00 Min. : 9
## 1st Qu.: 0 1st Qu.:1300000 1st Qu.: 19.00 1st Qu.: 361
## Median :105000 Median :2100000 Median : 33.00 Median : 1089
## Mean :111432 Mean :2490605 Mean : 35.75 Mean : 1693
## 3rd Qu.:168500 3rd Qu.:3370000 3rd Qu.: 51.00 3rd Qu.: 2601
## Max. :377500 Max. :7550000 Max. :104.00 Max. :10816
## nivel_educ años_educ
## Min. : 1.000 Min. : 0.000
## 1st Qu.: 3.000 1st Qu.: 2.000
## Median : 5.000 Median : 2.000
## Mean : 5.392 Mean : 3.245
## 3rd Qu.: 8.000 3rd Qu.: 4.000
## Max. :99.000 Max. :99.000
El ahorro presenta una amplia variabilidad en la muestra. El valor mínimo es -53,790, mientras que el máximo es 377,500, reflejando que otros han acumulado un monto significativo. La media 111,432.
El ingreso muestra una gran dispersión. Su valor mínimo es 0, indicando la presencia de personas sin ingresos, mientras que el máximo alcanza 7,550,000, lo que sugiere la existencia de individuos con ingresos elevados. La media 2,490,60) es superior a la mediana 2,100,000, lo que indica que la distribución está sesgada hacia valores altos.
La edad de los individuos oscila entre 3 y 104 años, con una media de 35.75 años. La variable edad2 simplemente refleja la transformación cuadrática de la edad, aumentando la distancia entre edades más avanzadas.
El nivel educativo mínimo es 1, mientras que el máximo es 99, lo que podría reflejar valores atípicos. La media es 5.39, lo que indica que la mayoría de las personas tienen niveles educativos intermedios. En cuanto a los años de educación, los valores oscilan entre 0 y 99, lo que nuevamente podría sugerir errores en la base de datos.
par(mfrow = c(2, 3)) # Divide la ventana en una matriz de 2x3
plot(variables_ciclo_vital_sin_datipicos$ingreso, variables_ciclo_vital_sin_datipicos$ahorro,
main = "Ingreso vs Ahorro", xlab = "Ingreso", ylab = "Ahorro", pch = 16, col = "orange")
plot(variables_ciclo_vital_sin_datipicos$edad, variables_ciclo_vital_sin_datipicos$ahorro,
main = "Edad vs Ahorro", xlab = "Edad", ylab = "Ahorro", pch = 16, col = "orange")
plot(variables_ciclo_vital_sin_datipicos$edad2, variables_ciclo_vital_sin_datipicos$ahorro,
main = "Edad^2 vs Ahorro", xlab = "Edad^2", ylab = "Ahorro", pch = 16, col = "orange")
plot(variables_ciclo_vital_sin_datipicos$nivel_educ, variables_ciclo_vital_sin_datipicos$ahorro,
main = "Nivel Educativo vs Ahorro", xlab = "Nivel Educ", ylab = "Ahorro", pch = 16, col = "orange")
plot(variables_ciclo_vital_sin_datipicos$años_educ, variables_ciclo_vital_sin_datipicos$ahorro,
main = "Años de Educación vs Ahorro", xlab = "Años Educ", ylab = "Ahorro", pch = 16, col = "orange")
par(mfrow = c(1, 1)) # Restaurar el layout a 1 gráfico
library(ggplot2)
library(gridExtra) # Para organizar múltiples gráficos
p1 <- ggplot(variables_ciclo_vital_sin_datipicos, aes(x = "", y = ingreso)) +
geom_boxplot(fill = "blue") +
labs(title = "Ingreso") +
theme(axis.text.y = element_blank()) +
coord_flip() # Hace el boxplot horizontal
p2 <- ggplot(variables_ciclo_vital_sin_datipicos, aes(x = "", y = edad)) +
geom_boxplot(fill = "pink") +
labs(title = "Edad") +
theme(axis.text.y = element_blank()) +
coord_flip()
p3 <- ggplot(variables_ciclo_vital_sin_datipicos, aes(x = "", y = edad2)) +
geom_boxplot(fill = "yellow") +
labs(title = "Edad²") +
theme(axis.text.y = element_blank()) +
coord_flip()
p4 <- ggplot(variables_ciclo_vital_sin_datipicos, aes(x = "", y = nivel_educ)) +
geom_boxplot(fill = "blue") +
labs(title = "Nivel Educativo") +
theme(axis.text.y = element_blank()) +
coord_flip()
p5 <- ggplot(variables_ciclo_vital_sin_datipicos, aes(x = "", y = años_educ)) +
geom_boxplot(fill = "purple") +
labs(title = "Años de Educación") +
theme(axis.text.y = element_blank()) +
coord_flip()
p6 <- ggplot(variables_ciclo_vital_sin_datipicos, aes(x = "", y = ahorro)) +
geom_boxplot(fill = "gold") +
labs(title = "Ahorro") +
theme(axis.text.y = element_blank()) +
coord_flip()
# Organizar todos los gráficos en una sola fila horizontal
grid.arrange(p1, p2, p3, p4, p5, p6, ncol = 6)
# Organizar todos los gráficos en una sola figura
grid.arrange(p1, p2, p3, p4, p5, p6, ncol = 3)
Ahorro=B1+B2ingreso+Ui
Ahorro=B1+B2ingreso+B3edad+B4edad2+B5nivel_educ+B6años_educ+Ui
options(scipen = 999)
summary(modelo_keynes)
##
## Call:
## lm(formula = ahorro ~ ingreso, data = variables_keynes)
##
## Residuals:
## Min 1Q Median 3Q Max
## -365725 -4027 11349 13331 16502
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) -16501.779103006 45.131019488 -365.6 <0.0000000000000002 ***
## ingreso 0.051321214 0.000008195 6262.7 <0.0000000000000002 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 21530 on 346433 degrees of freedom
## Multiple R-squared: 0.9912, Adjusted R-squared: 0.9912
## F-statistic: 3.922e+07 on 1 and 346433 DF, p-value: < 0.00000000000000022
En el modelo keynesiano con datos atípicos, el ajuste es prácticamente perfecto. Esto indica que el ahorro depende significativamente del ingreso, ya que el elevado valor de R/^2 sugiere que la mayor parte de la variabilidad en el ahorro es explicada por el ingreso.
summary(modelo_keynes_sin_datipicos)
##
## Call:
## lm(formula = ahorro ~ ingreso, data = variables_keynes_sin_datipicos)
##
## Residuals:
## Min 1Q Median 3Q Max
## -105902 -10783 6939 15134 30544
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) -30544.3982874 63.6551831 -479.8 <0.0000000000000002 ***
## ingreso 0.0570046 0.0000214 2663.9 <0.0000000000000002 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 19800 on 323699 degrees of freedom
## Multiple R-squared: 0.9564, Adjusted R-squared: 0.9564
## F-statistic: 7.096e+06 on 1 and 323699 DF, p-value: < 0.00000000000000022
En el modelo keynesiano, al eliminar los datos atípicos, el ajuste se mantiene, lo que confirma que el ahorro está efectivamente relacionado con el ingreso.
summary(modelo_ciclo_vital)
##
## Call:
## lm(formula = ahorro ~ ingreso + edad + edad2 + nivel_educ + años_educ,
## data = variables_ciclo_vital)
##
## Residuals:
## Min 1Q Median 3Q Max
## -340743 -3626 10475 13871 19860
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) -19687.765213070 124.982718632 -157.524 < 0.0000000000000002 ***
## ingreso 0.051219889 0.000008382 6110.765 < 0.0000000000000002 ***
## edad -47.156835344 7.437939231 -6.340 0.0000000002299861 ***
## edad2 0.684913900 0.089574124 7.646 0.0000000000000207 ***
## nivel_educ 619.022888024 17.402126781 35.572 < 0.0000000000000002 ***
## años_educ 178.926174696 16.997231677 10.527 < 0.0000000000000002 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 21440 on 346429 degrees of freedom
## Multiple R-squared: 0.9913, Adjusted R-squared: 0.9913
## F-statistic: 7.912e+06 on 5 and 346429 DF, p-value: < 0.00000000000000022
En el modelo de Ciclo Vital, el valor de R/^2 indica que el 99.13% de la variabilidad en el ahorro es explicada por las variables incluidas. Esto sugiere que el modelo posee un gran poder explicativo, lo que podría indicar que las variables seleccionadas son altamente relevantes para predecir el ahorro.
summary(modelo_ciclo_vital_sin_datipicos)
##
## Call:
## lm(formula = ahorro ~ ingreso + edad + edad2 + nivel_educ + años_educ,
## data = variables_ciclo_vital_sin_datipicos)
##
## Residuals:
## Min 1Q Median 3Q Max
## -106411 -10902 6980 15007 31132
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) -31154.951041 125.978661 -247.303 < 0.0000000000000002 ***
## ingreso 0.056985 0.000022 2589.687 < 0.0000000000000002 ***
## edad 14.167314 7.038070 2.013 0.0441 *
## edad2 -0.030829 0.084925 -0.363 0.7166
## nivel_educ -9.448692 17.342335 -0.545 0.5859
## años_educ 78.651458 16.916028 4.650 0.00000333 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 19800 on 323695 degrees of freedom
## Multiple R-squared: 0.9564, Adjusted R-squared: 0.9564
## F-statistic: 1.42e+06 on 5 and 323695 DF, p-value: < 0.00000000000000022
En el modelo Ciclo Vital sin los datos atipicos, el modelo sigue ajustandose confirmandonos que el ahorro si esta relacionado con el ingreso.
summary(modelo_keynes)
##
## Call:
## lm(formula = ahorro ~ ingreso, data = variables_keynes)
##
## Residuals:
## Min 1Q Median 3Q Max
## -365725 -4027 11349 13331 16502
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) -16501.779103006 45.131019488 -365.6 <0.0000000000000002 ***
## ingreso 0.051321214 0.000008195 6262.7 <0.0000000000000002 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 21530 on 346433 degrees of freedom
## Multiple R-squared: 0.9912, Adjusted R-squared: 0.9912
## F-statistic: 3.922e+07 on 1 and 346433 DF, p-value: < 0.00000000000000022
El coeficiente “Intercept” representa el ahorro estimado cuando el ingreso es cero. En este caso, el modelo predice que si una persona no tiene ingresos, su ahorro esperado sería de -16,500. Sin embargo, un intercepto negativo no siempre tiene una interpretación realista, ya que en la práctica, si alguien no percibe ingresos, su capacidad de ahorro sería inexistente, pues no dispone de recursos para destinar al ahorro.
Por otro lado, el coeficiente asociado al “ingreso” indica que por cada unidad adicional de ingreso, el ahorro aumenta en 0.05132 unidades. Esto refleja una relación positiva entre ingreso y ahorro, lo que implica que a mayores ingresos, la capacidad de ahorrar también se incrementa.
Ambos coeficientes presentan un p-valor inferior a 0.05, prácticamente cercano a cero, lo que indica que son estadísticamente significativos. Esto confirma que el ingreso tiene un efecto real sobre el ahorro.
summary(modelo_keynes_sin_datipicos)
##
## Call:
## lm(formula = ahorro ~ ingreso, data = variables_keynes_sin_datipicos)
##
## Residuals:
## Min 1Q Median 3Q Max
## -105902 -10783 6939 15134 30544
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) -30544.3982874 63.6551831 -479.8 <0.0000000000000002 ***
## ingreso 0.0570046 0.0000214 2663.9 <0.0000000000000002 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 19800 on 323699 degrees of freedom
## Multiple R-squared: 0.9564, Adjusted R-squared: 0.9564
## F-statistic: 7.096e+06 on 1 and 323699 DF, p-value: < 0.00000000000000022
El coeficiente “Intercept” representa el ahorro estimado cuando el ingreso es cero,en este caso, el modelo predice que si una persona no tiene ingresos, su ahorro esperado sería de -30544.39. Sin embargo un intercepto negativo no siempre tiene una interpretación realista; como sabemos en la practica si una persona tiene como ingresos=cero, su capacidad para ahorrar seria nula ya que no dispone de recursos para destinar al ahorro
El coeficiente “ingreso” nos indica que por cada unidad adicional de ingreso, el ahorro aumenta en 0.0570046 unidades.La relación entre ingreso y ahorro es positiva, lo que significa que a mayor ingreso tendremos una capacidad mayor para ahorrar.
Ambos coeficientes tienen p-valor < 0.05 de hecho, casi 0, lo que significa que son estadísticamente significativos,esto confirma que el ingreso tiene un compactor real sobre el ahorro.
summary(modelo_ciclo_vital)
##
## Call:
## lm(formula = ahorro ~ ingreso + edad + edad2 + nivel_educ + años_educ,
## data = variables_ciclo_vital)
##
## Residuals:
## Min 1Q Median 3Q Max
## -340743 -3626 10475 13871 19860
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) -19687.765213070 124.982718632 -157.524 < 0.0000000000000002 ***
## ingreso 0.051219889 0.000008382 6110.765 < 0.0000000000000002 ***
## edad -47.156835344 7.437939231 -6.340 0.0000000002299861 ***
## edad2 0.684913900 0.089574124 7.646 0.0000000000000207 ***
## nivel_educ 619.022888024 17.402126781 35.572 < 0.0000000000000002 ***
## años_educ 178.926174696 16.997231677 10.527 < 0.0000000000000002 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 21440 on 346429 degrees of freedom
## Multiple R-squared: 0.9913, Adjusted R-squared: 0.9913
## F-statistic: 7.912e+06 on 5 and 346429 DF, p-value: < 0.00000000000000022
El coeficiente “Intercept” representa el ahorro estimado cuando todas las variables(ingreso,edad,edad2,nivel_edu,años_educ) son cero,en este caso, el modelo predice que si una persona no tiene ingresos, su ahorro esperado sería de -19,690. Sin embargo un intercepto negativo no siempre tiene una interpretación realista; como sabemos en la practica si una persona tiene como ingresos=cero, su capacidad para ahorrar seria nula ya que no dispone de recursos para destinar al ahorro
El coeficiente “ingreso” nos indica que por cada unidad adicional de ingreso, el ahorro aumenta en 0.05122 unidades.La relación entre ingreso y ahorro es positiva, lo que significa que a mayor ingreso tendremos una capacidad mayor para ahorrar.
El coeficiente negativo de la variable “edad” nos indica que a medida que aumenta la edad el ahorro disminuye en 47.16 unidades.
teniendo en cuenta las caracteristicas de la variable anterior(edad),esta tiene una relación no lineal con el ahorro. Inicialmente, el ahorro disminuye con la edad, pero este efecto se atenúa con el tiempo incluso pudiendo llegar a revertirse como lo muestra el coeficiente “edad2”(0.6849). El coeficiente positivo de edad2 refleja un ciclo de acumulación y desacumulación de activos: en la juventud, los gastos elevados(educacion,compra de vivienda o la crianza de hijos) reducen el ahorro, mientras que en la etapa avanzada de la vida, con ingresos más estables y menos obligaciones economicas, el ahorro puede aumentar nuevamente.
El coeficiente “nivel_educ” sugiere que cada nivel adicional de educación se asocia con un aumento de 619 unidades en el ahorro.Esto respalda la idea de que un mayor nivel de educación puede llevar a mejores oportunidades laborales y, por ende, a mayores ingresos y capacidad de ahorro.
El coeficiente “años_educ” nos indica que por cada año adicional de educación formal, el ahorro aumenta en 178.9 unidades. Esto refuerza la importancia de la educación en la capacidad de generar ingresos y, en consecuencia, de ahorrar.
Todos los coeficientes son estadísticamente significativos (p < 2e-16), lo que indica una alta confianza en su relación con el ahorro.Sin embargo, el “intercept” negativo podría indicar que faltan otras variables que afectan el ahorro.
summary(modelo_ciclo_vital_sin_datipicos)
##
## Call:
## lm(formula = ahorro ~ ingreso + edad + edad2 + nivel_educ + años_educ,
## data = variables_ciclo_vital_sin_datipicos)
##
## Residuals:
## Min 1Q Median 3Q Max
## -106411 -10902 6980 15007 31132
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) -31154.951041 125.978661 -247.303 < 0.0000000000000002 ***
## ingreso 0.056985 0.000022 2589.687 < 0.0000000000000002 ***
## edad 14.167314 7.038070 2.013 0.0441 *
## edad2 -0.030829 0.084925 -0.363 0.7166
## nivel_educ -9.448692 17.342335 -0.545 0.5859
## años_educ 78.651458 16.916028 4.650 0.00000333 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 19800 on 323695 degrees of freedom
## Multiple R-squared: 0.9564, Adjusted R-squared: 0.9564
## F-statistic: 1.42e+06 on 5 and 323695 DF, p-value: < 0.00000000000000022
El coeficiente “Intercept” representa el ahorro estimado cuando todas las variables(ingreso,edad,edad2,nivel_edu,años_educ) son cero,en este caso, el modelo predice que si una persona no tiene ingresos, su ahorro esperado sería de -31154.95. Sin embargo un intercepto negativo no siempre tiene una interpretación realista; como sabemos en la practica si una persona tiene como ingresos=cero, su capacidad para ahorrar seria nula ya que no dispone de recursos para destinar al ahorro
El coeficiente “ingreso” nos indica que por cada unidad adicional de ingreso, el ahorro aumenta en 0.056985 unidades.La relación entre ingreso y ahorro es positiva, lo que significa que a mayor ingreso tendremos una capacidad mayor para ahorrar.
En este modelo el coeficiente “edad” indica que, en promedio, cada año adicional de edad aumenta el ahorro en 14.167 unidades
El coeficiente negativo de “edad2” sugiere que el impacto positivo de la edad en el ahorro se desacelera con el tiempo e incluso podría revertirse en edades más avanzadas. Además su p-valor alto (0.7166) indica que no es estadísticamente significativa en este modelo.
El coeficiente “nivel_educ” aunque es negativo, su p-valor alto (0.5859) sugiere que no hay evidencia suficiente para afirmar que el nivel educativo tiene un efecto significativo sobre el ahorro en este modelo.
El coeficiente “años_educ” nos indica que, por cada año adicional de educación, el ahorro aumenta en 78.651 unidades. Su bajo p-valor (<0.001) indica que este efecto es estadísticamente significativo en este modelo.
Teniendo en cuenta los p-valor este modelo sugiere que el ingreso y los años de educación tienen un impacto positivo y significativo sobre el ahorro, mientras que la edad presenta un efecto positivo pero con una relación altamente no lineal. Sin embargo, las variables “edad2” y “nivel educ” no resultan significativos en este análisis, lo que sugiere que su impacto sobre el ahorro no es determinante dentro de este modelo específico.
library(ggplot2)
library(gridExtra)
par(mfrow = c(2, 2))
p0 <- plot(modelo_keynes$residuals, main = "Residuos del Modelo keynes", ylab = "Residuos", xlab = "Índice", col = "orange", pch = 16)
abline(h = 0, col = "green", lwd = 2)
p1 <- plot(variables_keynes$ahorro, modelo_keynes$residuals,
main = "Residuos vs ahorro",
xlab = "ahorro", ylab = "Residuos",
col = "orange", pch = 16)
abline(h = 0, col = "green", lwd = 2)
p2 <- plot(variables_keynes$ingreso, modelo_keynes$residuals,
main = "Residuos vs ingreso",
xlab = "ingreso", ylab = "Residuos",
col = "orange", pch = 16)
abline(h = 0, col = "green", lwd = 2)
library(ggplot2)
ggplot(variables_keynes, aes(x = ahorro, y = ingreso)) +
geom_point(color = "orange", alpha = 0.5) + # Puntos azules con transparencia
geom_smooth(method = "lm", color = "green", se = FALSE) + # Línea de regresión en rojo
labs(title = "Relación entre Ahorro e Ingreso",
x = "Ahorro",
y = "Ingreso") +
theme_minimal()
library(ggplot2)
library(gridExtra)
par(mfrow = c(2, 2))
p0 <- plot(modelo_keynes_sin_datipicos$residuals, main = "Residuos del Modelo keynes sin atipicos", ylab = "Residuos", xlab = "Índice", col = "orange", pch = 16)
abline(h = 0, col = "green", lwd = 2)
p1 <- plot(variables_keynes_sin_datipicos$ahorro, modelo_keynes_sin_datipicos$residuals,
main = "Residuos vs ahorro",
xlab = "ahorro", ylab = "Residuos",
col = "orange", pch = 16)
abline(h = 0, col = "green", lwd = 2)
p2 <- plot(variables_keynes_sin_datipicos$ingreso, modelo_keynes_sin_datipicos$residuals,
main = "Residuos vs ingreso",
xlab = "ingreso", ylab = "Residuos",
col = "orange", pch = 16)
abline(h = 0, col = "green", lwd = 2)
library(ggplot2)
ggplot(variables_keynes_sin_datipicos, aes(x = ahorro, y = ingreso)) +
geom_point(color = "orange", alpha = 0.5) + # Puntos azules con transparencia
geom_smooth(method = "lm", color = "purple", se = FALSE) + # Línea de regresión en rojo
labs(title = "Relación entre Ahorro e Ingreso",
x = "Ahorro",
y = "Ingreso") +
theme_minimal()
library(ggplot2)
library(gridExtra)
par(mfrow = c(2, 2))
p0 <- plot(modelo_ciclo_vital$residuals, main = "Residuos del Modelo Ciclo Vital", ylab = "Residuos", xlab = "Índice", col = "orange", pch = 16)
abline(h = 0, col = "purple", lwd = 2)
p1 <- plot(variables_ciclo_vital$ahorro, modelo_ciclo_vital$residuals,
main = "Residuos vs ahorro",
xlab = "ahorro", ylab = "Residuos",
col = "orange", pch = 16)
abline(h = 0, col = "purple", lwd = 2)
p2 <- plot(variables_ciclo_vital$ingreso, modelo_ciclo_vital$residuals,
main = "Residuos vs ingreso",
xlab = "ingreso", ylab = "Residuos",
col = "orange", pch = 16)
abline(h = 0, col = "purple", lwd = 2)
p3 <- plot(variables_ciclo_vital$edad, modelo_ciclo_vital$residuals,
main = "Residuos vs edad",
xlab = "edad", ylab = "Residuos",
col = "orange", pch = 16)
abline(h = 0, col = "purple", lwd = 2)
library(ggplot2)
library(gridExtra)
par(mfrow = c(2, 2))
p4 <- plot(variables_ciclo_vital$edad2, modelo_ciclo_vital$residuals,
main = "Residuos vs edad2",
xlab = "edad2", ylab = "Residuos",
col = "orange", pch = 16)
abline(h = 0, col = "purple", lwd = 2)
p5 <- plot(variables_ciclo_vital$nivel_educ, modelo_ciclo_vital$residuals,
main = "Residuos vs nivel_educ",
xlab = "nivel_educ", ylab = "Residuos",
col = "orange", pch = 16)
abline(h = 0, col = "purple", lwd = 2)
p6 <- plot(variables_ciclo_vital$años_educ, modelo_ciclo_vital$residuals,
main = "Residuos vs años_educ",
xlab = "años_educ", ylab = "Residuos",
col = "orange", pch = 16)
abline(h = 0, col = "purple", lwd = 2)
library(ggplot2)
library(gridExtra)
par(mfrow = c(2, 2))
p0 <- plot(modelo_ciclo_vital_sin_datipicos$residuals, main = "Residuos del Modelo Ciclo Vital sin atipicos", ylab = "Residuos", xlab = "Índice", col = "orange", pch = 16)
abline(h = 0, col = "purple", lwd = 2)
p1 <- plot(variables_ciclo_vital_sin_datipicos$ahorro, modelo_ciclo_vital_sin_datipicos$residuals,
main = "Residuos vs ahorro",
xlab = "ahorro", ylab = "Residuos",
col = "orange", pch = 16)
abline(h = 0, col = "purple", lwd = 2)
p2 <- plot(variables_ciclo_vital_sin_datipicos$ingreso, modelo_ciclo_vital_sin_datipicos$residuals,
main = "Residuos vs ingreso",
xlab = "ingreso", ylab = "Residuos",
col = "orange", pch = 16)
abline(h = 0, col = "purple", lwd = 2)
p3 <- plot(variables_ciclo_vital_sin_datipicos$edad, modelo_ciclo_vital_sin_datipicos$residuals,
main = "Residuos vs edad",
xlab = "edad", ylab = "Residuos",
col = "orange", pch = 16)
abline(h = 0, col = "purple", lwd = 2)
library(ggplot2)
library(gridExtra)
par(mfrow = c(2, 2))
p4 <- plot(variables_ciclo_vital_sin_datipicos$edad2, modelo_ciclo_vital_sin_datipicos$residuals,
main = "Residuos vs edad2",
xlab = "edad2", ylab = "Residuos",
col = "green", pch = 16)
abline(h = 0, col = "yellow", lwd = 2)
p5 <- plot(variables_ciclo_vital_sin_datipicos$nivel_educ, modelo_ciclo_vital_sin_datipicos$residuals,
main = "Residuos vs nivel_educ",
xlab = "nivel_educ", ylab = "Residuos",
col = "green", pch = 16)
abline(h = 0, col = "yellow", lwd = 2)
p6 <- plot(variables_ciclo_vital_sin_datipicos$años_educ, modelo_ciclo_vital_sin_datipicos$residuals,
main = "Residuos vs años_educ",
xlab = "años_educ", ylab = "Residuos",
col = "green", pch = 16)
abline(h = 0, col = "yellow", lwd = 2)
##¿Qué políticas podrían incrementar el ahorro? (Ej.: incentivos fiscales,educación financiera). ¿Cómo afecta la informalidad laboral (56% en Colombia) estos resultados?
El ahorro es un elemento esencial para la estabilidad financiera de los hogares, ya que permite afrontar imprevistos como emergencias médicas, desempleo o reparaciones inesperadas sin recurrir al endeudamiento. Además, brinda seguridad económica, facilita el cumplimiento de metas, impulsa la inversión y contribuye al crecimiento del patrimonio. No obstante, en Colombia, la elevada tasa de informalidad laboral (56%) dificulta que gran parte de la población pueda generar y mantener hábitos de ahorro. Por ello, es necesario implementar políticas que promuevan el ahorro y reduzcan las barreras que limitan su desarrollo.
Algunas estrategias que podrían fomentar el ahorro incluyen: 1. Implementar incentivos fiscales, como la reducción del impuesto del 4x1000 en cuentas de ahorro, ya que este gravamen se aplica a cada retiro o movimiento bancario, lo que significa que las personas pierden el 0,4% de su dinero en cada transacción. Esta situación desincentiva el ahorro, especialmente entre quienes perciben ingresos bajos. 2. Fortalecer la educación financiera a través de programas en colegios y universidades, lo que permitiría a los ciudadanos desarrollar hábitos de ahorro desde una edad temprana. 3. Promover el uso de cuentas exentas del 4x1000 para incentivar el ahorro formal.
La informalidad laboral limita considerablemente la capacidad de ahorro de la población, pues quienes trabajan en esta condición carecen de acceso a seguridad social, lo que implica la ausencia de pensiones y seguros de desempleo. Esto los obliga a depender de sus ingresos diarios, dificultando la planificación financiera a largo plazo. Además, la inestabilidad de sus ingresos impide la formación de hábitos de ahorro, ya que deben priorizar el consumo inmediato sobre la acumulación de riqueza. Para fortalecer la capacidad de ahorro en Colombia, es crucial reducir la informalidad laboral y mejorar la educación .