Archivo de la etiqueta: plotrix

Porque no vamos a cobrar pensiones. Animación con R y pirámides de población

Estoy creando material para un módulo de un máster que voy a impartir y escribiendo sobre seguros de ahorro he llegado a crear esta animación:

Se trata de una animación con las pirámides de población de España desde 1975 hasta 2018 de 5 en 5 años. El sistema de pensiones español se basa en 5 principios:
1. principio de proporcionalidad
2. principio de universalidad
3. principio de gestión pública
4. principio de suficiencia
5. principio de reparto

La animación va directa contra el principio de reparto. En el sistema español nadie ha cotizado para garantizarse su pensión, los actuales trabajadores pagan las prestaciones de aquellos trabajadores jubilados. Si tras leer estas dos frases y mirar la animación sigues recelando de la migración de personas a España espero que tengas un buen plan de ahorro privado.

Esta animación está hecha con R, los datos están descargados del INE pero están ligeramente cocinados (no al estilo Tezanos). En https://github.com/analisisydecision/wordpress tenéis este Excel con el formato adecuado, el código empleado para realizar la animación está en https://github.com/analisisydecision/wordpress/blob/master/Piramide_poblacional.R Es un buen ejemplo de uso de plotrix y pyramid.plot espero que el código no tenga algún gazapo…

Un homenaje a Malthus con R

Hoy quería yo revindicar la figura de un tipo bastante maltratado: Thomas Malthus. Maltratado porque era un poco reaccionario y facha, y parece que eso es suficiente para que se olviden de uno, aunque fuera el tipo que más ha aportado a la demografía.Y el homenaje tenía que hacérselo con el paquete de R que más utilizo últimamente, el XML y algunos sencillos gráficos creados con R-commander. Malthus lo que venía a decir es que somos muchos, demasiados y encima la cosa tenía muy mala pinta. Parece que tiene razón, pero vamos a verlo gráficamente. Comenzamos:

library(XML)
pag="http://en.wikipedia.org/wiki/World_population"
total_tablas=readHTMLTable(pag)
str(total_tablas)

Nos interesa saber la población estimada y tenemos 17 elementos. Nos vamos a quedar con las estimaciones desde el siglo XVIII en adelante. Tenemos el problema con los formatos de los números:


poblacion=data.frame(total_tablas$`Estimated world population at various dates (in millions) [citation needed]`)
#NOS QUEDAMOS CON LOS REGISTROS QUE NOS INTERESAN
poblacion=poblacion[c(16:nrow(poblacion)-1),]
#FUNCION PARA TRANSFORMAR CARACTER A NUMERO
cambio=function(x){
x=(gsub("([[:punct:]])","",x))
x=(gsub("([[:alpha:]])","",x))
#AJUSTE A MEDIDA, POR NO COMPLICAR LA FUNCION
x=as.numeric(gsub(" 1 ","",x))}
#PODEMOS USAR SAPPLY:
poblacion$Year=cambio(poblacion$Year)
poblacion$World=cambio(poblacion$World)
poblacion$Africa=cambio(poblacion$Africa)
poblacion$Asia=cambio(poblacion$Asia)
poblacion$Europe=cambio(poblacion$Europe)
poblacion$Latin.America.Note.1.=cambio(poblacion$Latin.America.Note.1.)
poblacion$Northern.America.Note.1.=cambio(poblacion$Northern.America.Note.1.)
poblacion$Oceania=cambio(poblacion$Oceania)

Analicemos si Malthus tenía motivos para ser tan cenizo Seguir leyendo Un homenaje a Malthus con R

Ejemplo de uso del paquete XML de R

Quería poneros unos apuntes sobre el paquete XML de R. El caso es que entre todos los fregados en los que ando metidos he retomado el tema de leer páginas web con R. Y con esto he llegado a la sentencia install.packages(“XML”) y con la fiebre mundialista estoy en lo siguiente:

pag="http://es.wikipedia.org/wiki/Anexo:Finales_de_la_Copa_Mundial_de_F%C3%BAtbol"
pagina=data.frame(readHTMLTable(pag))
ganador=data.frame(substr(pagina$NULL.Ganador,3,length(pagina$NULL.Ganador)))
names(ganador)=primero
segundo=data.frame(substr(pagina$NULL.Segundo.puesto,3,length(pagina$NULL.Segundo.puesto)))
names(segundo)="segundo"

Muy sencillo, leemos la wikipedia y nos creamos un objeto con las finales de todos los mundiales. Me voy a centrar en los finalistas. Parece que tengo algún problema con las tildes y con nulos. Grafiquemos un poco:

ganador=subset(ganador,nchar(as.character(primero))>0)
segundo=subset(segundo,nchar(as.character(segundo))>0)
library(plyr)
tabla=ddply(ganador,"primero",summarise,veces=length(primero))
library(plotrix)
pie3D(tabla$veces,labels=tabla$primero,main="Campeones históricos")

Vemos que al final esto siempre lo ganan los mismos. Nos facilita una predicción.Veamos los finalistas:

finalistas=data.frame(rbind(as.matrix(ganador,dimnames=list("finalista")),
as.matrix(segundo,dimnames=list("finalista"))))
pie3D(tabla$veces,labels=tabla$primero,main="Finalistas")

Un poco vago con el nombre de las variables. A la vista de los datos la final será Brasil – Argentina. Lo que no tengo tan claro es cúal ganará… Seguiremos trabajando con XML y con plotrix.