Bibliotecas

rm(list=ls())               # limpa os objetos da ultima execução
options(scipen = 9999,      # inibe exibição de resultaos em notação científica
        digits = 8,         # limita o número de digitos das saídas do programa
        max.print = 6)      # limita o tamanho da saída do programa

library(demography)         # pacote para manipulação de dados demográficos
library(sidrar)             # pacote para manipulação de dados do SIDRA
library(magrittr)           # pacote para operadores semânticos %>%, %$%
library(dplyr)              # pacote para manipulação de dados
library(tidyr)              # pacote para manipulação de dados
library(kableExtra)         # pacote para formatar tabelas
library(readxl)             # pacote para ler e manipular arquivos xlsx
library(ggplot2)            # pacote para elaboração de gráficos
library(MortalityTables)    # pacote para manipulação de tábuas biométricas
library(knitr)              # pacote para visualização 
library(DT)                 # pacote para formatar tabelas
library(janitor)            # pacote para limpeza de nomes de colunas
library(shiny)              # pacote para criar aplicativos web

Dados e Manipulações

# Dados
pop_ne <- get_sidra(x = 1552, variable = '93', period = '2000', geo = 'Region', 
                    geo.filter = '2')

# Transformar os dados
pop_ne <- pop_ne %>%
  clean_names() %>%
  filter(forma_de_declaracao_da_idade == "Total") %>%
  select(grande_regiao, ano, sexo, idade, valor) %>%
  pivot_wider(
    names_from = sexo,
    values_from = valor,
    values_fn = \(x) x[1]  # Seleciona o primeiro valor da lista
  ) %>%
  mutate(
    # Converter idades para valores numéricos
    idade = case_when(
      idade == "Menos de 1 ano" ~ 0,
      idade == "100 anos ou mais" ~ 100,
      grepl("ano", idade) ~ as.numeric(gsub(" anos| ano", "", idade))  # Remove " anos" ou " ano" e converte
    )
  ) %>%
  arrange(idade) %>%
  drop_na(idade)

Questão 1

Preencha a tabela abaixo com as informações do Censo 2000 (Tabela 1552) relativos à população total da Região Nordeste, distribuída por idade simples, de 0 a 99 anos.

# Usar apenas as colunas idade e Total
pop_tabela <- pop_ne %>%
  select(idade, Total) %>%
  filter(idade <= 99) %>%  # Considerar idades apenas até 99 anos
  mutate(
    intervalo = cut(
      idade,
      breaks = seq(0, 100, by = 10),
      labels = c("0 a 9", "10 a 19", "20 a 29", "30 a 39", "40 a 49",
                 "50 a 59", "60 a 69", "70 a 79", "80 a 89", "90 a 99"),
      right = FALSE
    ),
    digito_final = idade %% 10  # Obter o dígito final da idade
  ) %>%
  group_by(digito_final, intervalo) %>%
  summarize(Total = sum(Total, na.rm = TRUE), .groups = "drop") %>%
  pivot_wider(
    names_from = intervalo,
    values_from = Total,
    values_fill = 0  # Preencher valores ausentes com 0
  )

# Adicionar a linha de soma total
pop_tabela <- pop_tabela %>%
  mutate(digito_final = as.character(digito_final)) %>%  # Converter para texto
  bind_rows(
    pop_tabela %>%
      summarize(across(where(is.numeric), sum)) %>%
      mutate(digito_final = "Soma")  # Linha "Soma" como texto
  )

# Exibir a tabela
pop_tabela %>%
  kable("html", caption = "CENSO 2000 - NE - População segundo idade simples até 99 anos.") %>%
  kable_styling("striped", full_width = FALSE) %>%
  column_spec(1, bold = TRUE)  # Destacar a primeira coluna
CENSO 2000 - NE - População segundo idade simples até 99 anos.
digito_final 0 a 9 10 a 19 20 a 29 30 a 39 40 a 49 50 a 59 60 a 69 70 a 79 80 a 89 90 a 99
0 996497 1050275 1036027 739539 585289 418339 318082 189773 91770 21864
1 974467 1091132 938820 645386 468898 337285 229417 137430 67304 11586
2 1011995 1136394 947087 672014 521436 360014 231620 145789 63954 11003
3 1033182 1122451 878280 653467 462222 330701 224002 138239 54336 10573
4 1044346 1149673 827736 643524 452318 309158 226484 132400 51896 9006
5 1073304 1140899 815118 640775 451782 320051 221813 135336 51124 6807
6 1022383 1105300 752113 648978 420291 299082 180670 116206 40818 5089
7 1026940 1143770 743342 613585 392932 273646 176785 99534 33688 3349
8 1022680 1140764 708409 578378 413474 268233 184612 93223 28910 3200
9 987006 1040975 664622 541194 381592 251284 159873 78718 24180 2356
Soma 10192800 11121633 8311554 6376840 4550234 3167793 2153358 1266648 507980 84833

Questão 2

Calcule o índice de Whipple (no intervalo de 23 a 62 anos) para a população total da região NE em 2000. Interprete.

# Calcular o índice de Whipple
# Dados da tabela
idade_final <- c(0:9)
populacao <- c(996497, 974467, 1011995, 1033182, 1044346, 1073304, 1022383, 1026940, 1022680, 987006,  # 0 a 9
               1050275, 1091132, 1136394, 1122451, 1149673, 1140899, 1105300, 1143770, 1140764, 1040975,  # 10 a 19
               1036027, 938820, 947087, 878280, 827736, 815118, 752113, 743342, 708409, 664622,           # 20 a 29
               739539, 645386, 672014, 653467, 643524, 640775, 648978, 613585, 578378, 541194,           # 30 a 39
               585289, 468898, 521436, 462222, 452318, 451782, 420291, 392932, 413474, 381592,           # 40 a 49
               418339, 337285, 360014, 330701, 309158, 320051, 299082, 273646, 268233, 251284,           # 50 a 59
               318082, 229417, 231620, 224002, 226484, 221813, 180670, 176785, 184612, 159873,           # 60 a 69
               189773, 137430, 145789, 138239, 132400, 135336, 116206, 99534, 93223, 78718,             # 70 a 79
               91770, 67304, 63954, 54336, 51896, 51124, 40818, 33688, 28910, 24180,                     # 80 a 89
               21864, 11586, 11003, 10573, 9006, 6807, 5089, 3349, 3200, 2356)                          # 90 a 99

# Intervalo de 23 a 62 anos
idades_23_62 <- 23:62
pop_23_62 <- populacao[24:63]

# Idades com dígito final 0 ou 5 no intervalo de 23 a 62
idades_0_5 <- c(25, 30, 35, 40, 45, 50, 55, 60)

# Idades com dígito final 0 no intervalo de 23 a 62
idades_0 <- c(30, 40, 50, 60)

# Soma das populações com dígito final 0 ou 5
pop_0_5 <- sum(populacao[idades_0_5 + 1])

# Soma das populações com dígito final 0
pop_0 <- sum(populacao[idades_0 + 1])

# População total no intervalo de 23 a 62
pop_total <- sum(pop_23_62)

# Índice de Whipple 0-5
indice_whipple5 <- (pop_0_5 / (pop_total / 5)) * 100

# Índice de Whipple 0
indice_whipple0 <- (pop_0 / (pop_total / 10)) * 100

# Resultado
cat("Índice de Whipple (0-5):", round(indice_whipple5, 2), "%\n")
## Índice de Whipple (0-5): 105.83 %
cat("Índice de Whipple (0):", round(indice_whipple0, 2), "%\n")
## Índice de Whipple (0): 101.72 %

Análise

Os valores dos Índices de Whipple obtidos para a população do Nordeste indicam que a qualidade da informação sobre a idade declarada apresenta pequenas imprecisões. O Índice de Whipple (0-5) = 105,83% enquadra-se na categoria de dados pouco precisos, conforme a classificação da ONU, o que sugere uma leve tendência ao arredondamento das idades para valores terminados em 0 ou 5. Já o Índice de Whipple (0) = 101,72% está abaixo do limite de 105%, indicando que os dados são precisos no que se refere à preferência exclusiva por idades terminadas em 0. Esses resultados apontam para uma qualidade aceitável dos dados etários, com apenas pequenas distorções.

Questão 3

Calcule o ICIS para as idades 27, 35 e 60 anos para a população total da região NE em 2000. Interprete.

# Calcular o ICIS
# Função para calcular ICIS baseado na fórmula ajustada
calcular_icis <- function(idade, populacao) {
  # Seleciona as cinco idades: idade de interesse e duas abaixo/acima
  idades_vizinhas <- (idade - 2):(idade + 2)
  pop_vizinhas <- populacao[idades_vizinhas + 1]
  
  # Calcula ICIS usando logaritmos naturais
  icis <- (populacao[idade + 1] / exp(mean(log(pop_vizinhas)))) * 100
  return(icis)
}

# Idades de interesse
idades_interesse <- c(27, 35, 60)

# Calcula ICIS para cada idade
for (idade in idades_interesse) {
  icis <- calcular_icis(idade, populacao)
  cat("ICIS para a idade", idade, ":", round(icis, 2), "%\n")
}
## ICIS para a idade 27 : 101.13 %
## ICIS para a idade 35 : 100.13 %
## ICIS para a idade 60 : 123.37 %

Análise

Os valores obtidos para o Índice de Concentração em Idades Simples (ICIS) para as idades de interesse — 27, 35 e 60 — foram de 101,13%, 100,13% e 123,37%, respectivamente. Todos os índices estão dentro do intervalo de referência proposto por Agostinho (2009), que varia de 78% a 128%, indicando que, em geral, os dados demográficos da região Nordeste para o Censo de 2000 são confiáveis para essas idades específicas. Os índices próximos de 100% refletem uma boa precisão na distribuição populacional.

Entretanto, observa-se que, à medida que o ICIS se afasta de 100%, ainda que permaneça dentro dos limites aceitáveis, ocorre uma redução na precisão das informações demográficas. Em particular, o índice de 123,37% para a idade 60 está significativamente mais distante de 100% do que os valores obtidos para as idades 27 e 35, sugerindo um desvio na distribuição dos dados populacionais dessa faixa etária. Isso pode indicar possíveis inconsistências ou particularidades nos dados dessa idade, que merecem maior investigação.

Apesar disso, os resultados gerais sugerem que os dados populacionais analisados são suficientemente confiáveis para a realização de análises estatísticas e demográficas, especialmente nas faixas etárias com ICIS mais próximos de 100%.