Pau Piera Palacios(paupiepa@alumni.uv.es)
Mario GarcĆa Zamora(magarza2@alumni.uv.es)
RubƩn Campos Campos (rucamcam@alumni.uv.es).
Universitat de ValĆØnciaTrabajo elaborado para la asignatura āProgramaciĆ³n y manejo de datos en la era del Big Dataā de la Universitat de ValĆØncia durante el curso 2021-2022. El repo del trabajo estĆ” aquĆ.
La pĆ”gina web de la asignatura y los trabajos de mis compaƱeros pueden verse aquĆ.
El principal anĆ”lisis de este trabajo va a ser el Sistema de pensiones espaƱol y las diversas variables que lo envuelven al mismo. Dentro de estas variables podemos encontrar variables demogrĆ”ficas como pueden ser la esperanza de vida, la tasa de natalidadā¦ tambiĆ©n vamos a analizar diversas variables econĆ³micas relacionadas tanto con el mercado laboral como en el gasto en pensionesā¦
Las pensiones en EspaƱa se han convertido en un tema abordable para su estudio y anĆ”lisis. Podemos decir que el sistema de pensiones se ve afectado por 2 grandes grupos de variables: la demografĆa y el mercado laboral.
Para que lo entendamos, existen dos tipos de sistemas de pensiones:
Sistema de Reparto: los trabajadores del momento pagan unas cotizaciones a la seguridad social que estƔn destinadas al pago de las pensiones de dicho momento (Es decir, los trabajadores les pagan a los pensionistas y, cuando se jubilen, los antiguos trabajadores cobrarƔn gracias a los futuros trabajadores)
Sistema de CapitalizaciĆ³n: cada trabajador hace sus aportaciones y, cuando se jubile, cobrarĆ” dichas aportaciones (actualizadas)
En EspaƱa el sistema que tenemos es el de reparto. Por tanto, este sistema funciona correctamente si la corriente de ingresos (trabajadores) y pagos (pensionistas) estƔ equilibrada. En el momento en el que ese equilibrio se rompe de manera no transitoria, el problema se agrava y hay que abordarlo para que el sistema de pensiones sea sostenible.
ĀæQuĆ© estĆ” pasando con el sistema de pensiones espaƱol? ĀæFunciona correctamente? ĀæEs sostenible? Algunos expertos afirman que el sistema estĆ” quebrado:
Y otros, no piensan igual:
Vista la problemĆ”tica tanto del tema como de las posibles soluciones y la pasividad de los polĆticos, como la gran mayorĆa dependeremos de una pensiĆ³n en el futuro, queremos ver si los conductores del sistema nacional de pensiones nos llevan hacia la deriva o si todo esto es otro discurso populista de los polĆticos para hacer oposiciĆ³n.
Nos ha llevado un tiempo extraer todos los datos necesarios, la mayorĆa son obtenidos del INE, aunque tambiĆ©n tenemos datos de Eurostat y del Banco de EspaƱa. Nos hemos descargado los datos en csv, algunos estaban bien, pero otros daban problemas debido a que no los reconocĆa como numĆ©ricos, los nombres de las variables eran demasiado largos, por lo que era incĆ³modo a la hora de trabajar y habĆa mucha informaciĆ³n que sobraba.
Una vez extraidos nuestros datos en formato .csv, nos ha tocado arreglarlos con Rstudio ya que muchas veces R no los detectava con formato numerico, no podiamos representar bien los grƔficos o simplemente queriamos explicar unos datos a partir de otros y nos ha tocado juntarlos en un mismo Dataframe
#- Cargamos el df del paro que anteriormente hemos descargado del INE
df_paro <- rio::import("./datos/tasa_paro.csv")
df_paro <- df_paro %>%
select(Paro, Periodos)
#Ahora cargamos los datos del df de la tasa de actividad nacional para poder compararlos con la tasa de paro nacional.
df_actividad <- rio::import("./datos/tasa_actividad.csv")
df_actividad <- df_actividad %>%
select(Periodos, Tasa_Actividad)
#- Vamos a juntar el df de la tasa de actividad y la tasa de paro para poder hacer un grƔfico donde se representen ambas tasas.
df_union <- inner_join(df_actividad, df_paro)
#Vamos a comparar la evoluciĆ³n de la tasa de natalidad y del indice de envejecimiento para tener conocimiento de la evoluciĆ³n que han tenido estas variables demogrĆ”ficas.
df_natalidad <- rio::import("./datos/tasa_natalidad.csv")
df_indice <- rio::import("./datos/indice_envejecimiento.csv")
df_indice <- df_indice %>%
filter(Periodo != 2021) %>%
rename(Periodos = "Periodo")
df_indice$Total <- as.numeric(df_indice$Total)
df_union_2 <- inner_join(df_natalidad, df_indice)
df_union_2 <- df_union_2 %>%
select(Periodos, Tasa_Natalidad, Total)
#Cargamos el df de los ocupados por grupo de edad.
df_edad <- rio::import("./datos/ocup_edad.csv")
df_edad$Total <- as.numeric(df_edad$Total)
df_edad <- df_edad %>%
mutate(fecha = lubridate::yq(Periodo)) %>%
filter(fecha == "2021-07-01")
#Vamos a cargar los datos referentes a la edad de emancipacion de los jovenes en EspaƱa
df_eman <- rio::import("./datos/edad_emancipacion.csv")
df_eman <- df_eman %>%
filter(!(Tramo_Edad %in% "16-34 edad"))
df_var <- df_eman %>%
pivot_wider(names_from = Periodo, values_from = Porcentaje)
df_var <- janitor::clean_names(df_var)
names(df_var)
#> [1] "tramo_edad" "x2008" "x2018"
df_var <- df_var %>%
mutate(variacion = (x2018 - x2008)/x2008)
#- Vamos a arreglar los datos de la pension media y del salario medio que encontramos en los siguientes df.
df_pens_med <- rio::import("./datos/pension_media.csv")
df_w_med <- rio::import("./datos/salario_medio.csv")
df_w_med$w_med_anual <- as.numeric(df_w_med$w_med_anual)
#- Vamos a unir los df de la pension media y del salario medio para observar la variacion entre ambas variables
df_union_3 <- inner_join(df_pens_med, df_w_med)
df_union_3 <- df_union_3 %>%
select(periodo, pension_media_anual, w_med_anual) %>%
mutate(porcentaje = (pension_media_anual/w_med_anual)*100)
#Vamos a arreglar los datos referentes a la evoluciĆ³n de la esperanza de vida en EspaƱa
df_vida <- rio::import("./datos/esperanza_vida.csv")
df_vida <- df_vida %>%
select("geo", "TIME_PERIOD", "OBS_VALUE") %>%
rename(pais = "geo", periodo = "TIME_PERIOD", esperanza_vida = "OBS_VALUE")
#nos quedamos con los datos que queremos mostrar
df_vida <- df_vida %>%
filter(pais %in% c("FR", "ES", "IT", "PT", "AL") )
#Arreglamos los datos del Fondo de Reserva de las pensiones
df_fondo <- rio::import("./datos/fondo_reserva.csv")
df_fondo$millones_euros <- as.numeric(df_fondo$millones_euros)
#Cargamos y arreglamos los df de la piramide poblacional y de la proyeccion
df_piramide <- rio::import("./datos/piramide_pob.csv")
df_piramide$Total <- as.numeric(df_piramide$Total)
df_piramide_20 <- df_piramide %>%
filter(`AƱo` == 2020) %>%
arrange(`AƱo`)
df_proyeccion <- rio::import("./datos/proyeccion_2070.csv")
df_proyeccion$total_red <- as.numeric(df_proyeccion$total_red)
#Creamos los df para los aƱos que queremos mostrar.
df_proyeccion_36 <- df_proyeccion %>%
filter(Periodo == 2036)
df_proyeccion_50 <- df_proyeccion %>%
filter(Periodo == 2050)
df_proyeccion_70 <- df_proyeccion %>%
filter(Periodo == 2070)
#A partir de aqui empieza lo bueno
df_alternativas <- rio::import("./datos/otras_alternativas.csv")
df_alternativas <- janitor::clean_names(df_alternativas)
df_alternativas_4 <- df_alternativas %>%
rename(Ef_y_De = efectivo_y_dep_a3sitos_2) %>%
rename(capital = participaciones_en_el_capital_y_en_fi_2) %>%
rename(year = fecha) %>%
rename(cotizadas = acciones_cotizadas_2) %>%
rename(no_cotizadas = acciones_no_cotizadas_2)%>%
mutate(participaciones = participaciones_en_fi_y_acciones_de_soc_de_inversi_a3n_2 + otras_participaciones_2) %>%
rename(cash = efectivo_2) %>%
mutate( depositos = dep_a3sitos_transferibles_2 + otros_dep_a3sitos_2)
df_alternativas_4 <- df_alternativas_4 %>%
select(year, capital, cotizadas, no_cotizadas, participaciones, cash, Ef_y_De, depositos) %>%
rename(efectivo = cash) %>%
rename(acciones = capital) %>%
rename(efectivo_y_depositos = Ef_y_De)
df_alternativas <- df_alternativas %>%
rename(year = fecha) %>%
rename(total = todos_los_instrumentos) %>%
rename(oro = oro_monetario_y_deg_2) %>%
rename(Ef_y_De = efectivo_y_dep_a3sitos_2) %>%
rename(deuda = valores_representativos_de_deuda_2) %>%
rename(loan = pr_a_c_stamos_2) %>%
rename(capital = participaciones_en_el_capital_y_en_fi_2) %>%
rename(pensiones_priv = sistemas_de_seguros_pensiones_y_garant_a_as_estandarizadas_2) %>%
rename(otros = otros_activos_pasivos_2)
df_alternativas <- df_alternativas %>%
select(year, total, oro, Ef_y_De, deuda, loan, capital, pensiones_priv, otros)
df_alternativas_2 <- df_alternativas %>%
filter(year == 2020)
df_alternativas_2$comprobacion = rowSums (df_alternativas_2[ , 3:9])
df_alternativas_2 <- df_alternativas_2 %>%
select(-total) %>% rename(total = comprobacion)
df_alternativas_2 <- df_alternativas_2 %>% pivot_longer(cols = 2:8, names_to = "Activos", values_to = "Miles_de_euros")
df_alternativas_2$porcentaje <- prop.table(df_alternativas_2$Miles_de_euros)
df_alternativas_2$porcentaje <- round(prop.table(df_alternativas_2$Miles_de_euros), 7)*100
df_alternativas[, c(1:9)] <- sapply(df_alternativas[, c(1:9)], as.numeric)
df_alternativas_3 <- df_alternativas%>%
select(-c(total)) %>%
pivot_longer(cols = 2:8, names_to = "Activos", values_to = "Miles_de_euros")
#Vamos a arreglar los datos para poder hacer una tabla
df_piramide <- rio::import("./datos/piramide_pob.csv")
df_piramide$Total <- as.numeric(df_piramide$Total)
df_piramide2 <- df_piramide %>%
select(-`EspaƱoles/Extranjeros`) %>%
rename(Periodo = AƱo) %>%
rename(total_red = Total) %>%
rename(Edad = `Edad (grupos quinquenales)`)
df_proy <- rio::import("./datos/proyeccion_2070.csv")
df_proy$total_red <- as.numeric(df_proy$total_red)
df_proy2 <- df_proy %>%
select (-Total)
df_uni <- full_join(df_piramide2 , df_proy2)
df_uni2 <- df_uni %>%
filter(c(Edad == "0-4 aƱos" | Edad == "65-69 aƱos"))
#Vamos a arreglar los datos para poder hacer un mapa comparativo entre paises sobre el ahorro privado
df_ahorro <- rio::import("./datos/ahorro_privado.xls")
df_ahorro <- df_ahorro %>%
select(-c(`Indicator Name`)) %>%
pivot_longer(cols = 4:64, names_to = "Year", values_to = "ahorro_PIB")
data(World)
df_ahorro_1 <- janitor::clean_names(df_ahorro)
df_ahorro_1 <- df_ahorro_1 %>%
filter(year == 2020) %>%
select(country_code, ahorro_pib)
world <- World ; rm(World)
world <- world %>% rename(country_code = iso_a3)
df_mapa <- inner_join(world, df_ahorro_1)
En la parte superior y en color rojo podemos ver la tasa de envejecimiento, mientras que en la parte inferior y en color azul encontramos la tasa de natalidad.
Claramente se aprecia que la evoluciĆ³n de la natalidad ha sido decreciente, mientras que la tasa de envejecimiento ha aumentado.
p2 <- ggplot(df_union_2) +
geom_line(aes(Periodos, Tasa_Natalidad, color = "Tasa_Natalidad")) +
geom_point(aes(Periodos, Tasa_Natalidad, color = "Tasa_Natalidad")) +
geom_line(aes(Periodos, Total, color = "Indice_envejecimiento"))+
geom_point(aes(Periodos, Total, color = "Indice_envejecimiento"))+
scale_y_continuous(name = "Indice de envejecimiento",
sec.axis = sec_axis(~./5, name = "Tasa Natalidad",
labels = function(b) { paste0(round(b * 4, 0), "%")})) +
labs(title = "ComparaciĆ³n Tasa de Natalidad e Ćndice de Envejecimiento",
subtitle = "Datos extraidos del INEBase") +
theme_minimal()
ggplotly(p2)
En este caso se puede apreciar la clara tendencia alcista en la evoluciĆ³n de la esperanza de vida. Hace aƱos, ejemplo en 1980, en EspaƱa la gente morĆa de media a los 75 aƱos. Los Ćŗltimos datos, 2019, nos indican que de media la poblaciĆ³n espaƱola fallece a los 84 aƱos.
Por tanto,el avance del sistema de bienestar hace que la gente viva mĆ”s aƱos en edad de jubilaciĆ³n por lo que aumentan los gastos del sistema
Sin embargo esto no es un caso aislado del sistema espaƱol, pues afecta a todas las economĆas desarrolladas.
p11 <- ggplot(df_vida) +
aes(x = periodo, y = esperanza_vida, colour = pais) +
geom_line(size = 1) +
theme_minimal() +
theme(plot.subtitle = element_text(size = 11)) +labs(title = "EvoluciĆ³n de la esperanza de vida por paises",
x = "Periodo", y = "AƱos de vida", subtitle = "Datos extraidos de Eurostat")
ggplotly(p11)
En este caso podemos apreciar las imĆ”genes que resumen, aunque de manera aproximada, la inestabilidad del sistema. El problema de disminuciĆ³n de ingresos junto al aumento de gastos se agravarĆ” en el futuro segĆŗn las proyecciones del INE. ĀæY si hacemos un nuevo baby boom? Algunos economistas hablan de que un nuevo baby boom ayudarĆa a solucionar el problema, puesto que aumentarĆa los ingresos potenciales. Sin embargo, este enfoque es miope, ya que no se estĆ” teniendo en cuenta que en el futuro, cuando la generaciĆ³n del nuevo baby boom sea anciana, serĆa necesario otro incremento masivo de la natalidad, entrando asĆ en un bucle de necesidad de incremento de la poblaciĆ³n.
Pan para hoy y hambre para maƱana
p13 <- ggplot(df_piramide, aes(x = `Edad (grupos quinquenales)`,
y = `Total`,
fill = Sexo)) +
geom_col(data = subset(df_piramide, Sexo == "Hombres") %>%
mutate(`Total` = - `Total`),
width = 0.5, fill = "blue") +
geom_col(data = subset(df_piramide, Sexo == "Mujeres"),
width = 0.5, fill = "pink") +
coord_flip()+labs(title = "Piramide Poblacional aƱo 2020 ",
y = "Miles de Personas", subtitle = "Datos extraidos del INEBase")
ggplotly(p13)
En relaciĆ³n con la posible soluciĆ³n del baby boom, desde nuestro punto de vista, el principal problema reside en la edad de emancipaciĆ³n. Si les preguntamos a nuestros abuelos o padres a quĆ© edad empezaron a trabajar probablemente escuchemos un intervalo de edad de 13-18 aƱos. Sin embargo, a dĆa de hoy esa edad es mucho mĆ”s tardĆa. Por lo tanto el principal problema lo podemos ver en que la gente entra mĆ”s tarde al mercado laboral junto a que ahora se vive mĆ”s aƱos.Por ello que los politicos estĆ”n alargando la edad de jubilaciĆ³n.
p8 <- ggplot(df_eman) +
aes(x = Tramo_Edad, fill = Tramo_Edad, weight = Porcentaje) +
geom_bar() +
scale_fill_viridis_d(option = "viridis",
direction = 1) +
theme_minimal() +
facet_wrap(vars(Periodo)) + theme(plot.subtitle = element_text(size = 11),
axis.title = element_text(size = 13),
plot.title = element_text(size = 16)) +labs(title = "Porcentaje de Emancipados por edad",
x = "Tramo de Edad", y = "Porcentaje de emancipados",
subtitle = "Datos extraidos del BBVA Research Foundation")
ggplotly(p8)
p9 <- ggplot(df_var) +
aes(x = tramo_edad, fill = tramo_edad, weight = variacion) +
geom_bar() +
scale_fill_viridis_d(option = "viridis",
direction = 1) +
theme_minimal() + theme(plot.subtitle = element_text(size = 10)) +labs(title = "VariaciĆ³n porcentual de emancipados 2018 - 2008",
x = "Tramo de Edad", y = "VariaciĆ³n de emancipados",
fill = "Tramo de Edad", subtitle = "Datos extraidos del BBVA Research")
ggplotly(p9)
En este caso podemos apreciar que ambas variables se mueven al unĆsono pero de manera inversa. AsĆ, cuando el paro disminuye, aumenta la tasa de actividad y viceversa. DĆa tras dĆa podemos escuchar y/o leer en las noticias el preocupante problema del paro espaƱol, por ejemplo aquĆ
Desde el punto de vista del sistema de pensiones espaƱol, que recordemos que es un sistema de reparto (los trabajadores de ahora pagan a los pensionistas de ahora), esto influye en la menor capacidad recaudatoria de dicho sistema y, por tanto, provoca una gran inestabilidad.
p4 <- ggplot(df_union) +
geom_bar(aes(Periodos, Tasa_Actividad), stat = "identity", fill = "grey") +
geom_line(aes(Periodos, Paro), size = 1) +
geom_point(aes(Periodos, Paro), size = 2) +
labs(title = "ComparaciĆ³n Tasa de Paro y de Actividad",
subtitle = "Datos para el periodo 2002 - 2020",
caption = "Datos provenientes del INEBase",
y = "Tasa de Paro y Actividad") +
theme_minimal()
ggplotly(p4)
Este anĆ”lisis va en lĆnea al anterior. En este caso cabe destacar que para que el sistema recibiera una bocanada de aire esperanzador, la fuerza motriz del mercado laboral deberĆa ser principalmente las edades de 20 a 50 aƱos. AsĆ conseguirĆamos que las pensiones estuvieran mĆ”s garantizadas que ahora mismo. Sin embargo, se puede apreciar claramente la baja tasa de ocupaciĆ³n a edades de entre 20 y 30 aƱos, cosa que preocupa y mucho. ConcrĆ©tamente, segĆŗn fuentes documentales EspaƱa tiene la tasa de paro juvenil mĆ”s alta de los paĆses miembros de la UniĆ³n Europea
p10 <- ggplot(df_edad) +
aes(x = Edad, fill = Edad, weight = Total) +
geom_bar() +
scale_fill_viridis_d(option = "viridis",
direction = 1) +
theme_minimal()+labs(title = "Ocupados por grupo de Edad en 2021",
x = NULL, y = "Miles de Personas", subtitle = "Datos extraidos del INEBase")
ggplotly(p10)
Primero que nada debemos entender que el fondo de reserva es el ālugarā donde, en Ć©pocas de superĆ”vit, se depositan las aportaciones que sobran (cosa que hace que el fondo aumente) y, en Ć©pocas deficitarias, se utiliza para tomar dinero para pagar a los pensionistas (disminuye el fondo de reserva).
Claramente se puede apreciar que en la Ć©poca precrisis (antes de 2008) el mercado laboral espaƱol estaba en auge, cosa que permitĆa que la cantidad ingresada en la seguridad social fuera superior a la cantidad gastada (cotizaciones > pensiones), provocando un superĆ”vit del fondo de reserva. Sin embargo, estĆ” claro que la crisis tuvo gran incidencia en el mercado laboral espaƱol. La gran tasa de paro junto al aumento del nĀŗ de pensionistas provocĆ³ el gran declive de lo que comĆŗnmente se conoce como la āhucha de las pensionesā. Muchos economistas califican este grĆ”fico como una imĆ”gen de la estructura deficitaria de dicho sistema. AdemĆ”s, el problema no es tanto que lo hayamos utilizado durante aƱos de malestar econĆ³mico nacional, sinĆ³ que las proyecciones y el anĆ”lisis de variables no parecen prometer una recuperaciĆ³n del superĆ”vit
p12 <- ggplot(df_fondo) +
aes(x = periodo, y = millones_euros) +
geom_line(size = 1, colour = "#066DD1") +
geom_point()+labs(title = "EvoluciĆ³n del Fondo de Reserva 2000 - 2019",
x = "Periodo", y = "Millones de Euros",
subtitle = "Datos extraidos del INEBase") +
theme_minimal()
ggplotly(p12)
En palabras sencillas, la tasa de cobertura o de reemplazo de las pensiones nos indica el porcentaje del salario que cobramos como pensiĆ³n. La calculamos dividiendo nuestra pensiĆ³n entre nuestro Ćŗltimo salario. AsĆ medimos si el sistema es capaz de mantener nuestra capacidad adquisitiva. A modo de ejemplo, si un trabajador cobra 600ā¬ de pensiĆ³n y su Ćŗltimo salario era de 1.000ā¬, la tasa de cobertura es de (600/1000 *100) 60% . Es decir, al pasar de ser trabajador a pensionista, estamos perdiendo un 40% de poder adquisitivo (respecto al Ćŗltimo dĆa que trabajamos).
Podemos apreciar que la tendencia evolutiva ha sido ascendiente, claro ejemplo del fomento del estado de bienestar. SIn embargo, mĆ”s que la evoluciĆ³n pasada, lo que tenemos que preguntarnos es si aumentar o mantener la tasa de cobertura serĆ” viable segĆŗn los nefastos pronĆ³sticos que los economistas diagnostican.
p7 <- ggplot(df_union_3, aes(periodo, porcentaje)) +
geom_line(size = 0.8) +
geom_point() +
theme(axis.line = element_line(size = 0.5),
panel.grid.major = element_line(size = 0),
axis.text = element_text(size = 12),
panel.background = element_rect(fill = "gray85"),
plot.background = element_rect(fill = "white")) +labs(title = "Tasa de cobertura o reemplazo de la pensiĆ³n media",
x = "Periodo", y = "Porcentaje", subtitle = "Datos extraidos del INEBase ") +
theme_minimal()
ggplotly(p7)
Para analizar la viabilidad del sistema de pensiones es importante analizar si existen alternativas reales a la pensiĆ³n pĆŗblica en estos momentos en EspaƱa. Queremos averiguar si es factible pensar que el ahorro privado es suficiente para compensar unas pensiones futuras, en caso de que este sistema fracase. Para ello hemos investigado cĆ³mo se distribuye el ahorro privado en EspaƱa y cĆ³mo ha ido evolucionando este en los Ćŗltimos aƱos.
Primero, hemos elaborado este mapa para observar en el aƱo 2020, quĆ© porcentaje del PIB ocupa el ahorro privado en casi todos los paĆses del mundo. Vemos que en EspaƱa se sitĆŗa en el 21,3%. Como se aprecia en el mapa, los niveles mĆ”s altos de ahorro se encuentran en los paĆses del norte de Europa y el sur de Asia, nos sorprende especialmente los casos de Marruecos, UzbequistĆ”n y Bangladesh. PaĆses como Suiza, Noruega y Suecia cuentan con sistemas de pensiones mixtos, es decir, un porcentaje de las pensiones es pagado por el paĆs y otro por el propio ahorro privado del beneficiario. Es por ello que cuentan con grandes porcentajes de ahorro privado con respecto al PIB, ya que el propio sistema favorece a ello.
mypalette <- colorNumeric( palette="Greys", domain=df_mapa$ahorro_pib,na.color="transparent")
mytext <- paste(
"PaĆs: ", df_mapa$name,"<br/>",
"SituaciĆ³n econĆ³mica:", df_mapa$economy, "<br/>",
"Porcentaje de ahorro: ", df_mapa$ahorro_pib,
sep="") %>%
lapply(htmltools::HTML)
mapa <- leaflet(df_mapa) %>%
addTiles() %>%
setView( lat=10, lng=0 , zoom=2) %>%
addPolygons(
fillColor = ~mypalette(ahorro_pib),
stroke=TRUE,
fillOpacity = 0.9,
color="white",
weight=0.3,
label = mytext,
labelOptions = labelOptions(
style = list("font-weight" = "normal", padding = "3px 8px"),
textsize = "13px",
direction = "auto"
)
) %>%
addLegend( pal=mypalette, values=~ahorro_pib, opacity=0.9, title = "% de ahorro en el PIB", position = "bottomleft" )
mapa
En la siguiente tabla observamos el porcentaje de ahorro en relaciĆ³n al PIB en todos los paĆses que tenemos datos en 2020 y la diferencia con la media total. Observamos como EspaƱa se sitĆŗa 1 punto porcentual por debajo de la media total, que es del 22,37%. Si filtramos de mayor a menor podemos apreciar como Singapur es el paĆs del mundo con mayor ahorro, con mĆ”s del 40%, otro paĆs que cuenta con un sistema de capitalizaciĆ³n (igual que Suecia y Noruega). De esta manera, es el propio trabajador el que, por ley, ahorra dinero durante toda su vida para gastarlo cuando se jubile, y el paĆs ofrece una ayuda para aquellos que no alcancen el mĆnimo ahorrado. Eso explica porcentajes tan altos de ahorro.
Entre los paĆses con menor tasa de ahorro encontramos a Grecia, Ucrania o Reino Unido. Mientras los 2 primeros cuentan con sistemas de reparto puramente pĆŗblico, como en EspaƱa, sorprende el caso de Reino Unido, en el cual las pensiones pĆŗblicas no superan el 30% del salario medio del paĆs.
df_tabla <- df_ahorro %>%
filter(Year == 2020) %>%
drop_na() %>%
mutate(diferencia = ahorro_PIB - mean(ahorro_PIB , na.rm = TRUE)) %>%
select('Country Name', ahorro_PIB, diferencia)
library(DT)
DT::datatable(df_tabla)
Pero, dentro de EspaƱa, ĀæcĆ³mo se distribuye el ahorro? ĀæLe estamos sacando toda la rentabilidad posible? Vemos como la mayor parte del ahorro se distribuye en capital (acciones y participaciones), efectivo y depĆ³sitos, valores representativos de deuda (bonos, obligaciones, pagarĆ©s, etc.) y prĆ©stamos. El activo mĆ”s rentable histĆ³ricamente son las acciones, por lo que no estĆ” mal en ese sentido, aunque habrĆa que analizar en quĆ© acciones se invierte principalmente y cuĆ”n rentables son estas para sacar una conclusiĆ³n. Por otro lado, el efectivo y los depĆ³sitos son los activos menos rentables posibles (nula o negativa si contamos la inflaciĆ³n).
g1 <- ggplot(df_alternativas_2, aes(x=1, y=porcentaje, fill= Activos)) +
geom_bar(stat="identity") +
geom_text(aes(label = paste0(round(porcentaje,1),"%")),
position = position_stack(vjust = 0.5)) +
coord_polar(theta = "y") +
theme_void()+labs(title = "Ahorro privado en 2020", x = NULL,
subtitle = "Datos extraidos del Banco de EspaƱa")
g1
En este grĆ”fico observamos el crecimiento de las diferentes partidas durante los Ćŗltimos 20 aƱos, es interesante como el capital ha crecido mĆ”s que el resto de partidas, aunque con mayor volatilidad, ya que se puede apreciar la caĆda en los aƱos de crisis (2008-2014).
plot_dinamico <- df_alternativas_3 %>%
ggplot(aes(x = Activos,
y = Miles_de_euros,
fill= Activos )) +
geom_bar(stat= "identity",
color = "grey",
show.legend = FALSE) +
geom_text(aes(label = as.numeric(Miles_de_euros)),
position = position_stack(),
vjust= 1,
hjust= -0.1,
size = 4,
color = "black")+
scale_fill_manual(values = c("orange", "darkgrey", "green", "red", "blue", "yellow", "purple")) +
scale_y_continuous(labels = scales::comma) +
theme_minimal()+
enter_appear() +
transition_states(year,
transition_length = 5,
state_length = 5) +
labs(title = " Volumen de los activos financieros por aƱo \n Year : {closest_state}",
subtitle = "En miles de euros",
y = "",
x = "",
caption = "Banco de EspaƱa") +
theme(panel.grid.major.x = element_blank(),
plot.title = element_text(size = 18,
face = "bold",
hjust = 0.5),
plot.subtitle = element_text(size=14,
face = "plain",
hjust = 0.5)) + coord_flip()
plot_dinamico
Pero, dentro de EspaƱa, ĀæcĆ³mo se distribuye el ahorro? ĀæLe estamos sacando toda la rentabilidad posible? Vemos como la mayor parte del ahorro se distribuye en capital (acciones y participaciones), efectivo y depĆ³sitos, valores representativos de deuda (bonos, obligaciones, pagarĆ©s, etc.) y prĆ©stamos. El activo mĆ”s rentable histĆ³ricamente son las acciones, por lo que no estĆ” mal en ese sentido, aunque habrĆa que analizar en quĆ© acciones se invierte principalmente y cuĆ”n rentables son estas para sacar una conclusiĆ³n. Por otro lado, el efectivo y los depĆ³sitos son los activos menos rentables posibles (nula o negativa si contamos la inflaciĆ³n).
sketch = htmltools::withTags(table(
class = 'display',
thead(
tr(th(rowspan = 2, 'AƱo'),
th(colspan = 3, 'Acciones'),
th(colspan = 2, 'Efectivo y depĆ³sitos')),
tr(lapply(rep(c('cotizadas', 'no cotizadas', 'participaciones', 'efectivo', 'depĆ³sitos'), 1), th)
)
)
))
print(sketch)
df_alternativas_5 <- df_alternativas_4%>%
select(-c("acciones", "efectivo_y_depositos"))
datatable(df_alternativas_5, container = sketch, rownames = FALSE)
Entonces Āæes viable el sistema de pensiones en EspaƱa? ĀæquĆ© ocurrirĆ” dentro de 20 aƱos? Bueno, como hemos podido analizar, existen preocupantes datos en cuanto a lo que el sistema se refiere. Las alarmas suenan cuando analizamos las variables demogrĆ”ficas, donde el baby boom de los aƱos aƱos 60 en relaciĆ³n con la reducciĆ³n constante de la natalidad de los Ćŗltimos 30-40 aƱos hacen prever un nĆŗmero de jubilados futuros que puede llegar a ser insostenible.
El mercado laboral no deja mejores impresiones, con tasas de paro altĆsimas y empleo demasiado bajo entre las personas de 20 y 30 aƱos. Este dato puede afectar a la tasa de natalidad del futuro, ya que si estos grupos de edad no tienen una estabilidad econĆ³mica es probable que pospongan la decisiĆ³n de tener hijos o, incluso, la desestimen. Pero, ademĆ”s de eso, ĀæquiĆ©n va a pagar las pensiones dentro de 20 aƱos si los que hoy tienen 30 no tienen trabajo?
La financiaciĆ³n de las pensiones tampoco arroja seƱales positivas, ya que durante la crisis el fondo de reserva se redujo considerablemente y, ademĆ”s, la tasa de cobertura no deja de aumentar.
Y las alternativas no nos dejan datos del todo horribles, pero siguen sin estar a niveles de los mejores sistemas de pensiones del mundo, ademĆ”s de un excesivo peso en el ahorro de los depĆ³sitos y el efectivo. Por todo esto, nuestra conclusiĆ³n es que hay suficientes alarmas para, al menos, preocuparse y hacerse ciertas preguntas. ĀæConfiamos en que dentro de 15, 20 aƱos, cuando nuestros padres se jubilen, tendrĆ”n una pensiĆ³n pĆŗblica digna como merecen? Āæla tendremos nosotros dentro de 40 aƱos? ĀæquĆ© soluciones podemos encontrar como individuos particulares? Āæy quĆ© decisiones puede tomar el Estado?
Para la realizaciĆ³n de nuestro trabajo nos hemos basado en las siguientes pĆ”ginas web y bases de datos:
- Session info --------------------------------------------------------------
hash: child: light skin tone, bottle with popping cork, family: man, boy
setting value
version R version 4.1.1 (2021-08-10)
os Windows 10 x64 (build 19042)
system x86_64, mingw32
ui RTerm
language (EN)
collate Spanish_Spain.1252
ctype Spanish_Spain.1252
tz Europe/Paris
date 2021-12-17
pandoc 2.11.4 @ C:/Program Files/RStudio/bin/pandoc/ (via rmarkdown)
- Packages -------------------------------------------------------------------
package * version date (UTC) lib source
abind 1.4-5 2016-07-21 [1] CRAN (R 4.1.0)
assertthat 0.2.1 2019-03-21 [1] CRAN (R 4.1.1)
backports 1.3.0 2021-10-27 [1] CRAN (R 4.1.1)
base64enc 0.1-3 2015-07-28 [1] CRAN (R 4.1.0)
bit 4.0.4 2020-08-04 [1] CRAN (R 4.1.1)
bit64 4.0.5 2020-08-30 [1] CRAN (R 4.1.1)
broom 0.7.10 2021-10-31 [1] CRAN (R 4.1.1)
bslib 0.3.1 2021-10-06 [1] CRAN (R 4.1.1)
cellranger 1.1.0 2016-07-27 [1] CRAN (R 4.1.1)
class 7.3-19 2021-05-03 [2] CRAN (R 4.1.1)
classInt 0.4-3 2020-04-07 [1] CRAN (R 4.1.1)
cli 3.1.0 2021-10-27 [1] CRAN (R 4.1.1)
clipr 0.7.1 2020-10-08 [1] CRAN (R 4.1.1)
codetools 0.2-18 2020-11-04 [2] CRAN (R 4.1.1)
colorspace 2.0-2 2021-06-24 [1] CRAN (R 4.1.1)
crayon 1.4.2 2021-10-29 [1] CRAN (R 4.1.1)
crosstalk 1.2.0 2021-11-04 [1] CRAN (R 4.1.1)
curl 4.3.2 2021-06-23 [1] CRAN (R 4.1.1)
data.table 1.14.2 2021-09-27 [1] CRAN (R 4.1.2)
DBI 1.1.1 2021-01-15 [1] CRAN (R 4.1.1)
dbplyr 2.1.1 2021-04-06 [1] CRAN (R 4.1.1)
desc 1.4.0 2021-09-28 [1] CRAN (R 4.1.1)
details 0.2.1 2020-01-12 [1] CRAN (R 4.1.1)
dichromat 2.0-0 2013-01-24 [1] CRAN (R 4.1.0)
digest 0.6.28 2021-09-23 [1] CRAN (R 4.1.1)
dplyr * 1.0.7 2021-06-18 [1] CRAN (R 4.1.1)
DT * 0.19 2021-09-02 [1] CRAN (R 4.1.1)
e1071 1.7-9 2021-09-16 [1] CRAN (R 4.1.1)
ellipsis 0.3.2 2021-04-29 [1] CRAN (R 4.1.1)
evaluate 0.14 2019-05-28 [1] CRAN (R 4.1.1)
fansi 0.5.0 2021-05-25 [1] CRAN (R 4.1.1)
farver 2.1.0 2021-02-28 [1] CRAN (R 4.1.1)
fastmap 1.1.0 2021-01-25 [1] CRAN (R 4.1.1)
forcats * 0.5.1 2021-01-27 [1] CRAN (R 4.1.1)
foreign 0.8-81 2020-12-22 [2] CRAN (R 4.1.1)
fs 1.5.0 2020-07-31 [1] CRAN (R 4.1.1)
generics 0.1.1 2021-10-25 [1] CRAN (R 4.1.1)
gganimate * 1.0.7 2020-10-15 [1] CRAN (R 4.1.1)
ggplot2 * 3.3.5 2021-06-25 [1] CRAN (R 4.1.1)
ggrepel * 0.9.1 2021-01-15 [1] CRAN (R 4.1.1)
ggspatial * 1.1.5 2021-01-04 [1] CRAN (R 4.1.2)
ggthemes * 4.2.4 2021-01-20 [1] CRAN (R 4.1.1)
gifski * 1.4.3-1 2021-05-02 [1] CRAN (R 4.1.1)
glue 1.5.0 2021-11-07 [1] CRAN (R 4.1.2)
gt * 0.3.1 2021-08-07 [1] CRAN (R 4.1.1)
gtable 0.3.0 2019-03-25 [1] CRAN (R 4.1.1)
haven 2.4.3 2021-08-04 [1] CRAN (R 4.1.1)
here 1.0.1 2020-12-13 [1] CRAN (R 4.1.1)
highr 0.9 2021-04-16 [1] CRAN (R 4.1.1)
hms 1.1.1 2021-09-26 [1] CRAN (R 4.1.1)
htmltools 0.5.2 2021-08-25 [1] CRAN (R 4.1.1)
htmlwidgets 1.5.4 2021-09-08 [1] CRAN (R 4.1.1)
httr 1.4.2 2020-07-20 [1] CRAN (R 4.1.1)
janitor 2.1.0 2021-01-05 [1] CRAN (R 4.1.1)
jquerylib 0.1.4 2021-04-26 [1] CRAN (R 4.1.1)
jsonlite 1.7.2 2020-12-09 [1] CRAN (R 4.1.1)
kableExtra * 1.3.4 2021-02-20 [1] CRAN (R 4.1.1)
KernSmooth 2.23-20 2021-05-03 [2] CRAN (R 4.1.1)
klippy * 0.0.0.9500 2021-11-16 [1] Github (rlesur/klippy@378c247)
knitr * 1.36 2021-09-29 [1] CRAN (R 4.1.1)
labeling 0.4.2 2020-10-20 [1] CRAN (R 4.1.0)
lattice 0.20-44 2021-05-02 [2] CRAN (R 4.1.1)
lazyeval 0.2.2 2019-03-15 [1] CRAN (R 4.1.1)
leafem * 0.1.6 2021-05-24 [1] CRAN (R 4.1.1)
leaflet * 2.0.4.1 2021-01-07 [1] CRAN (R 4.1.1)
leaflet.providers 1.9.0 2019-11-09 [1] CRAN (R 4.1.1)
leafsync 0.1.0 2019-03-05 [1] CRAN (R 4.1.1)
lifecycle 1.0.1 2021-09-24 [1] CRAN (R 4.1.1)
lubridate 1.8.0 2021-10-07 [1] CRAN (R 4.1.1)
lwgeom 0.2-8 2021-10-06 [1] CRAN (R 4.1.1)
magrittr 2.0.1 2020-11-17 [1] CRAN (R 4.1.1)
modelr 0.1.8 2020-05-19 [1] CRAN (R 4.1.1)
munsell 0.5.0 2018-06-12 [1] CRAN (R 4.1.1)
openxlsx 4.2.4 2021-06-16 [1] CRAN (R 4.1.1)
patchwork * 1.1.1 2020-12-17 [1] CRAN (R 4.1.1)
pillar 1.6.4 2021-10-18 [1] CRAN (R 4.1.1)
pjpv2020.01 * 0.0.0.9000 2021-11-06 [1] Github (perezp44/pjpv2020.01@6c6065f)
pkgconfig 2.0.3 2019-09-22 [1] CRAN (R 4.1.1)
plotly * 4.10.0 2021-10-09 [1] CRAN (R 4.1.1)
plyr 1.8.6 2020-03-03 [1] CRAN (R 4.1.1)
png 0.1-7 2013-12-03 [1] CRAN (R 4.1.0)
prettyunits 1.1.1 2020-01-24 [1] CRAN (R 4.1.1)
progress 1.2.2 2019-05-16 [1] CRAN (R 4.1.1)
proxy 0.4-26 2021-06-07 [1] CRAN (R 4.1.1)
purrr * 0.3.4 2020-04-17 [1] CRAN (R 4.1.1)
R6 2.5.1 2021-08-19 [1] CRAN (R 4.1.1)
raster 3.5-2 2021-10-11 [1] CRAN (R 4.1.1)
RColorBrewer 1.1-2 2014-12-07 [1] CRAN (R 4.1.0)
Rcpp 1.0.7 2021-07-07 [1] CRAN (R 4.1.1)
readr * 2.0.2 2021-09-27 [1] CRAN (R 4.1.1)
readxl 1.3.1 2019-03-13 [1] CRAN (R 4.1.1)
reprex 2.0.1 2021-08-05 [1] CRAN (R 4.1.1)
rio 0.5.27 2021-06-21 [1] CRAN (R 4.1.1)
rlang 0.4.12 2021-10-18 [1] CRAN (R 4.1.1)
rmarkdown 2.11 2021-09-14 [1] CRAN (R 4.1.1)
rnaturalearth * 0.1.0 2017-03-21 [1] CRAN (R 4.1.1)
rnaturalearthdata * 0.1.0 2017-02-21 [1] CRAN (R 4.1.1)
rprojroot 2.0.2 2020-11-15 [1] CRAN (R 4.1.1)
rstudioapi 0.13 2020-11-12 [1] CRAN (R 4.1.1)
rvest 1.0.2 2021-10-16 [1] CRAN (R 4.1.1)
sass 0.4.0 2021-05-12 [1] CRAN (R 4.1.1)
scales 1.1.1 2020-05-11 [1] CRAN (R 4.1.1)
sessioninfo 1.2.1 2021-11-02 [1] CRAN (R 4.1.1)
sf * 1.0-3 2021-10-07 [1] CRAN (R 4.1.1)
snakecase 0.11.0 2019-05-25 [1] CRAN (R 4.1.1)
sp 1.4-5 2021-01-10 [1] CRAN (R 4.1.1)
stars 0.5-3 2021-06-08 [1] CRAN (R 4.1.1)
stringi 1.7.5 2021-10-04 [1] CRAN (R 4.1.1)
stringr * 1.4.0 2019-02-10 [1] CRAN (R 4.1.1)
svglite 2.0.0 2021-02-20 [1] CRAN (R 4.1.1)
systemfonts 1.0.3 2021-10-13 [1] CRAN (R 4.1.1)
terra 1.4-11 2021-10-11 [1] CRAN (R 4.1.1)
tibble * 3.1.6 2021-11-07 [1] CRAN (R 4.1.2)
tidyr * 1.1.4 2021-09-27 [1] CRAN (R 4.1.1)
tidyselect 1.1.1 2021-04-30 [1] CRAN (R 4.1.1)
tidyverse * 1.3.1 2021-04-15 [1] CRAN (R 4.1.1)
tmap * 3.3-2 2021-06-16 [1] CRAN (R 4.1.1)
tmaptools 3.1-1 2021-01-19 [1] CRAN (R 4.1.1)
tweenr 1.0.2 2021-03-23 [1] CRAN (R 4.1.1)
tzdb 0.2.0 2021-10-27 [1] CRAN (R 4.1.1)
units 0.7-2 2021-06-08 [1] CRAN (R 4.1.1)
usethis 2.1.3 2021-10-27 [1] CRAN (R 4.1.1)
utf8 1.2.2 2021-07-24 [1] CRAN (R 4.1.1)
vctrs 0.3.8 2021-04-29 [1] CRAN (R 4.1.1)
vembedr * 0.1.5.9000 2021-12-15 [1] Github (ijlyttle/vembedr@f270a72)
viridisLite 0.4.0 2021-04-13 [1] CRAN (R 4.1.1)
webshot 0.5.2 2019-11-22 [1] CRAN (R 4.1.1)
withr 2.4.3 2021-11-30 [1] CRAN (R 4.1.2)
xfun 0.28 2021-11-04 [1] CRAN (R 4.1.2)
XML 3.99-0.8 2021-09-17 [1] CRAN (R 4.1.1)
xml2 1.3.2 2020-04-23 [1] CRAN (R 4.1.1)
yaml 2.2.1 2020-02-01 [1] CRAN (R 4.1.0)
zip 2.2.0 2021-05-31 [1] CRAN (R 4.1.1)
[1] C:/Users/Pau/Documents/R/win-library/4.1
[2] C:/Program Files/R/R-4.1.1/library
------------------------------------------------------------------------------