Un gráfico de la evolución de la población Peruana con R
9 de Abril de 2012
La división de estadísticas de las Naciones Unidas, a través de su portal UNdata, pone a disposición de todos una cantidad impresionante de datos a nivel nacional. Los datos sobre el Perú se encuentran aquí.
Los datos
Como quería ver la evolución de la población Peruana según diferentes rangos de edades, descargue los datos de la población total, 0-4 años, 5-14 años, 15-24 años, 15-59 años, 60 años y más y 80 años y más. Los datos van del año 1950 a 2100 cada 5 años. Tomé los datos según un escenario de variación estimada, que es el recomendado por las Naciones Unidas. A partir de estos datos, calcule la proporción, dentro de la población total de los rangos de edades: 0-4, 5-14, 15-24, 25-59, 60-79 y 80 y más.
Para jugar con los datos, aquí esta el archivo CSV.
El código R
> # Importacion de los datos > poblacion <-read.csv("~/code/R/poblacion/evolucion_pob_peruana.csv", sep=";") |
Los datos se presentan así:
El gráfico se va a hacer en varias etapas, rango de edad por rango rango de edad.
> plot(poblacion$Años, poblacion$X0.4, ylim=c(0,100), type= 'l') |
Con esta comanda, representamos en 'X' los años y en 'Y' el rango de edad 0-4:
El parametro ylim permite definir el rango del eje 'Y'. En nuestro caso, los valores (%) van de 0 a 100. type='l' representa los datos interpolados ('l' es para line) .
En el eje 'X', tenemos valores cada 50 años (1950, 200, ...). Prefiero ver valores cada 25 años. Por eso hago:
> axis(1, c(seq(1975,2100,by=50))) |
Para ver la significación de los parametros de la función axis, help(axis).
Ahora podemos agregar a este gráfico los otros rangos de edad, uno por uno. Como quiero hacer un "area graph", para que cada rango aparesca arriba del anterior tengo que sumar los valores:
> lines(poblacion$Años, poblacion$X0.4 + poblacion$X5.14) > lines(poblacion$Años, poblacion$X0.4 + poblacion$X5.14 + poblacion$X15.24) > lines(poblacion$Años, poblacion$X0.4 + poblacion$X5.14 + poblacion$X15.24 + poblacion$X25.59) > lines(poblacion$Años, poblacion$X0.4 + poblacion$X5.14 + poblacion$X15.24 + poblacion$X25.59 + poblacion$X60.79) > lines(poblacion$Años, poblacion$X0.4 + poblacion$X5.14 + poblacion$X15.24 + poblacion$X25.59 + poblacion$X60.79 + poblacion$X80.) |
lines es una función que permite agregar una linea a un gráfico ya existante.
Último paso, para ayudar a leer el gráfico y ver la situación de la población hoy día vamos a agregar una linea vertical en 2012. Por eso, existe la función abline:
> abline(v=2012) |
Nuestro gráfico:
El resultado final
Después de editar el archivo SVG creado con R en Inkscape obtenemos un resultado mucho más facil de analizar:
Sobre la evolución de la población, nada muy sorprendente, la proporción de ancianos aumenta:
- En 1950 los menos de 25 años representaban un poco más de 60% de la población. En 2100, solamente 25%
- Los más de 60 años representaban un poco más de 5% de la población en 1950 y llegarán a casi 35% en 2100
- El rango 25-59 se mantiene globalmente estable, pasando de 34% de la población en 1950 a casi 40% en 2100