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
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)
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
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 |
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 %
## Í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.
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%.