Pirâmide etária de MS: projeções do IBGE 2024

Autor

Adriano Marcos Rodrigues Figueiredo

Data de Publicação

22 de agosto de 2024

Licença

This work is licensed under the Creative Commons Attribution-ShareAlike 4.0 International License. To view a copy of this license, visit http://creativecommons.org/licenses/by-sa/4.0/ or send a letter to Creative Commons, PO Box 1866, Mountain View, CA 94042, USA.

License: CC BY-SA 4.0

Quarto is open source software licensed under the GNU GPL v2. The Quarto source code is available at https://github.com/quarto-dev/. Quarto is a registered trademark of RStudio.

Citação

Sugestão de citação: FIGUEIREDO, Adriano Marcos Rodrigues. Pirâmide etária de MS: Projeções do IBGE 2024. Campo Grande-MS, Brasil: RStudio/Rpubs, 2024. Disponível em <https://rpubs.com/amrofi/piramide_2024_MS>. DOI: 10.13140/RG.2.2.30531.00806

Este é um artigo rápido para criar uma pirâmide etária em valores absolutos (o leitor pode preferir fazer em porcentagem do total), considerando os dados de Homens e Mulheres extraído divulgação das projeções populacionais do IBGE de 22-08-2024 (<https://www.ibge.gov.br/estatisticas/sociais/populacao/9109-projecao-da-populacao.html?edicao=41053&t=resultados>).

Passo 1) Chamar pacotes.

Código
library(tidyverse)
#library(sidrar) # não puxei do Sidra

Passo 2) Carregar dados. Coloquei a rotina para extrair os dados da planilha eletrônica de dados por grupo quinquenal (<https://ftp.ibge.gov.br/Projecao_da_Populacao/Projecao_da_Populacao_2024/projecoes_2024_tab2_grupo_quinquenal.xlsx>)

Código
library(readxl)
dados <- read_excel("projecoes_2024_tab2_grupo_quinquenal.xlsx", 
    sheet = "MS")

Passo 3) Fazer o plot. Usei o ggplot2 para desenhar a pirâmide etária de MS.

0.1 Exemplo do dataset para 2000:

Código
library(tidyverse)
dados %>%
  filter(`Ano`=="2000" & `Grupo de idade`!="Total") %>%
  select(`Grupo de idade`:Ano) %>%
    mutate(
         Valor = ifelse(Sexo == "Mulheres",-Valor, Valor)
         )-> piramide_MS
piramide_MS %>% 
  print(n = 40, width = Inf)
# A tibble: 38 × 4
   `Grupo de idade`   Valor Sexo       Ano
   <chr>              <dbl> <chr>    <dbl>
 1 00-04             107676 Homens    2000
 2 05-09             111743 Homens    2000
 3 10-14             113294 Homens    2000
 4 15-19             111386 Homens    2000
 5 20-24             100760 Homens    2000
 6 25-29              89092 Homens    2000
 7 30-34              84437 Homens    2000
 8 35-39              77767 Homens    2000
 9 40-44              66797 Homens    2000
10 45-49              55458 Homens    2000
11 50-54              42937 Homens    2000
12 55-59              34143 Homens    2000
13 60-64              27977 Homens    2000
14 65-69              20876 Homens    2000
15 70-74              14851 Homens    2000
16 75-79               9733 Homens    2000
17 80-84               5751 Homens    2000
18 85-89               2826 Homens    2000
19 90+                 1302 Homens    2000
20 00-04            -106522 Mulheres  2000
21 05-09            -112392 Mulheres  2000
22 10-14            -112377 Mulheres  2000
23 15-19            -111139 Mulheres  2000
24 20-24            -102264 Mulheres  2000
25 25-29             -91061 Mulheres  2000
26 30-34             -87281 Mulheres  2000
27 35-39             -80675 Mulheres  2000
28 40-44             -68306 Mulheres  2000
29 45-49             -54549 Mulheres  2000
30 50-54             -41345 Mulheres  2000
31 55-59             -32550 Mulheres  2000
32 60-64             -26106 Mulheres  2000
33 65-69             -20166 Mulheres  2000
34 70-74             -15029 Mulheres  2000
35 75-79             -10258 Mulheres  2000
36 80-84              -6303 Mulheres  2000
37 85-89              -3538 Mulheres  2000
38 90+                -1807 Mulheres  2000

0.2 Ano 2000

Código
library(tidyverse)
dados %>%
  filter(`Ano`=="2000" & `Grupo de idade`!="Total") %>%
  select(`Grupo de idade`:Ano) %>%
    mutate(
         Valor = ifelse(Sexo == "Mulheres",-Valor, Valor)
         )-> piramide_MS
  
ggplot() +
  geom_bar(data=piramide_MS, 
           aes(y=Valor, x = `Grupo de idade`, fill = Sexo), 
           stat="identity", alpha = 0.4, width=1) +
  scale_fill_manual(values = c("Mulheres" = "red", 
                               "Homens" = "blue")) +
  coord_flip() +
  theme_bw() +
  ggtitle("Pirâmide etária da população em MS, 2000",
          subtitle="Projeções Populacionais 2024") +
    labs(caption = "Fonte: Elaboração própria. Dados básicos do IBGE(2024).", 
        size = 8) +
  scale_y_continuous(labels = abs) +
  ylab("Número de pessoas")

0.3 Ano 2010

Código
library(tidyverse)
dados %>%
  filter(`Ano`=="2010" & `Grupo de idade`!="Total") %>%
  select(`Grupo de idade`:Ano) %>%
    mutate(
         Valor = ifelse(Sexo == "Mulheres",-Valor, Valor)
         )-> piramide_MS
  
ggplot() +
  geom_bar(data=piramide_MS, 
           aes(y=Valor, x = `Grupo de idade`, fill = Sexo), 
           stat="identity", alpha = 0.4, width=1) +
  scale_fill_manual(values = c("Mulheres" = "red", 
                               "Homens" = "blue")) +
  coord_flip() +
  theme_bw() +
  ggtitle("Pirâmide etária da população em MS, 2010",
          subtitle="Projeções Populacionais 2024") +
    labs(caption = "Fonte: Elaboração própria. Dados básicos do IBGE(2024).", 
        size = 8) +
  scale_y_continuous(labels = abs) +
  ylab("Número de pessoas")

0.4 Ano 2020

Código
library(tidyverse)
dados %>%
  filter(`Ano`=="2020" & `Grupo de idade`!="Total") %>%
  select(`Grupo de idade`:Ano) %>%
    mutate(
         Valor = ifelse(Sexo == "Mulheres",-Valor, Valor)
         )-> piramide_MS
  
ggplot() +
  geom_bar(data=piramide_MS, 
           aes(y=Valor, x = `Grupo de idade`, fill = Sexo), 
           stat="identity", alpha = 0.4, width=1) +
  scale_fill_manual(values = c("Mulheres" = "red", 
                               "Homens" = "blue")) +
  coord_flip() +
  theme_bw() +
  ggtitle("Pirâmide etária da população em MS, 2020",
          subtitle="Projeções Populacionais 2024") +
    labs(caption = "Fonte: Elaboração própria. Dados básicos do IBGE(2024).", 
        size = 8) +
  scale_y_continuous(labels = abs) +
  ylab("Número de pessoas")

0.5 Ano 2024

Código
library(tidyverse)
dados %>%
  filter(`Ano`=="2024" & `Grupo de idade`!="Total") %>%
  select(`Grupo de idade`:Ano) %>%
    mutate(
         Valor = ifelse(Sexo == "Mulheres",-Valor, Valor)
         )-> piramide_MS
  
ggplot() +
  geom_bar(data=piramide_MS, 
           aes(y=Valor, x = `Grupo de idade`, fill = Sexo), 
           stat="identity", alpha = 0.4, width=1) +
  scale_fill_manual(values = c("Mulheres" = "red", 
                               "Homens" = "blue")) +
  coord_flip() +
  theme_bw() +
  ggtitle("Pirâmide etária da população em MS, 2024",
          subtitle="Projeções Populacionais 2024") +
    labs(caption = "Fonte: Elaboração própria. Dados básicos do IBGE(2024).", 
        size = 8) +
  scale_y_continuous(labels = abs) +
  ylab("Número de pessoas")

0.6 Ano 2030

Código
library(tidyverse)
dados %>%
  filter(`Ano`=="2030" & `Grupo de idade`!="Total") %>%
  select(`Grupo de idade`:Ano) %>%
    mutate(
         Valor = ifelse(Sexo == "Mulheres",-Valor, Valor)
         )-> piramide_MS
  
ggplot() +
  geom_bar(data=piramide_MS, 
           aes(y=Valor, x = `Grupo de idade`, fill = Sexo), 
           stat="identity", alpha = 0.4, width=1) +
  scale_fill_manual(values = c("Mulheres" = "red", 
                               "Homens" = "blue")) +
  coord_flip() +
  theme_bw() +
  ggtitle("Pirâmide etária da população em MS, 2030",
          subtitle="Projeções Populacionais 2024") +
    labs(caption = "Fonte: Elaboração própria. Dados básicos do IBGE(2024).", 
        size = 8) +
  scale_y_continuous(labels = abs) +
  ylab("Número de pessoas")

0.7 Ano 2040

Código
library(tidyverse)
dados %>%
  filter(`Ano`=="2040" & `Grupo de idade`!="Total") %>%
  select(`Grupo de idade`:Ano) %>%
    mutate(
         Valor = ifelse(Sexo == "Mulheres",-Valor, Valor)
         )-> piramide_MS
  
ggplot() +
  geom_bar(data=piramide_MS, 
           aes(y=Valor, x = `Grupo de idade`, fill = Sexo), 
           stat="identity", alpha = 0.4, width=1) +
  scale_fill_manual(values = c("Mulheres" = "red", 
                               "Homens" = "blue")) +
  coord_flip() +
  theme_bw() +
  ggtitle("Pirâmide etária da população em MS, 2040",
          subtitle="Projeções Populacionais 2024") +
    labs(caption = "Fonte: Elaboração própria. Dados básicos do IBGE(2024).", 
        size = 8) +
  scale_y_continuous(labels = abs) +
  ylab("Número de pessoas")

0.8 Ano 2050

Código
library(tidyverse)
dados %>%
  filter(`Ano`=="2050" & `Grupo de idade`!="Total") %>%
  select(`Grupo de idade`:Ano) %>%
    mutate(
         Valor = ifelse(Sexo == "Mulheres",-Valor, Valor)
         )-> piramide_MS
  
ggplot() +
  geom_bar(data=piramide_MS, 
           aes(y=Valor, x = `Grupo de idade`, fill = Sexo), 
           stat="identity", alpha = 0.4, width=1) +
  scale_fill_manual(values = c("Mulheres" = "red", 
                               "Homens" = "blue")) +
  coord_flip() +
  theme_bw() +
  ggtitle("Pirâmide etária da população em MS, 2050",
          subtitle="Projeções Populacionais 2024") +
    labs(caption = "Fonte: Elaboração própria. Dados básicos do IBGE(2024).", 
        size = 8) +
  scale_y_continuous(labels = abs) +
  ylab("Número de pessoas")

0.9 Ano 2060

Código
library(tidyverse)
dados %>%
  filter(`Ano`=="2060" & `Grupo de idade`!="Total") %>%
  select(`Grupo de idade`:Ano) %>%
    mutate(
         Valor = ifelse(Sexo == "Mulheres",-Valor, Valor)
         )-> piramide_MS
  
ggplot() +
  geom_bar(data=piramide_MS, 
           aes(y=Valor, x = `Grupo de idade`, fill = Sexo), 
           stat="identity", alpha = 0.4, width=1) +
  scale_fill_manual(values = c("Mulheres" = "red", 
                               "Homens" = "blue")) +
  coord_flip() +
  theme_bw() +
  ggtitle("Pirâmide etária da população em MS, 2060",
          subtitle="Projeções Populacionais 2024") +
    labs(caption = "Fonte: Elaboração própria. Dados básicos do IBGE(2024).", 
        size = 8) +
  scale_y_continuous(labels = abs) +
  ylab("Número de pessoas")

0.10 Ano 2070

Código
library(tidyverse)
dados %>%
  filter(`Ano`=="2070" & `Grupo de idade`!="Total") %>%
  select(`Grupo de idade`:Ano) %>%
    mutate(
         Valor = ifelse(Sexo == "Mulheres",-Valor, Valor)
         )-> piramide_MS
  
ggplot() +
  geom_bar(data=piramide_MS, 
           aes(y=Valor, x = `Grupo de idade`, fill = Sexo), 
           stat="identity", alpha = 0.4, width=1) +
  scale_fill_manual(values = c("Mulheres" = "red", 
                               "Homens" = "blue")) +
  coord_flip() +
  theme_bw() +
  ggtitle("Pirâmide etária da população em MS, 2070",
          subtitle="Projeções Populacionais 2024") +
    labs(caption = "Fonte: Elaboração própria. Dados básicos do IBGE(2024).", 
        size = 8) +
  scale_y_continuous(labels = abs) +
  ylab("Número de pessoas")