# ============================================================
# obter_dados.R — Coleta de dados reais de fontes oficiais
# ============================================================
#
# Este script busca dados de:
# - IBGE/SIDRA (tabelas de projeções populacionais)
# - IBGE/SIDRA (mortalidade infantil - projeções)
#
# Cada dataset é salvo como .rds em data/ com atributos de metadados:
# - fonte: instituição responsável
# - tabela: código/nome da tabela
# - url: link para acesso manual
# - descricao: o que o dado representa
# - data_coleta: quando foi baixado
# - notas: observações relevantes
#
# Para executar: source("R/obter_dados.R") ou Rscript R/obter_dados.R
# ============================================================
library(sidrar)
library(dplyr)
library(tidyr)
dir.create("data", showWarnings = FALSE)
# Função auxiliar: salvar .rds com metadados
salvar_dados <- function(df, nome_arquivo, fonte, tabela, url, descricao, notas = "") {
attr(df, "fonte") <- fonte
attr(df, "tabela") <- tabela
attr(df, "url") <- url
attr(df, "descricao") <- descricao
attr(df, "data_coleta") <- Sys.Date()
attr(df, "notas") <- notas
caminho <- file.path("data", paste0(nome_arquivo, ".rds"))
saveRDS(df, caminho)
cat("[OK]", nome_arquivo, "->", caminho, "(", nrow(df), "linhas )\n")
}
# ============================================================
# 1. IBGE Projeções (Tabela 7360) — Brasil
# TFT, TBN, TBM, Índice de Envelhecimento, etc.
# ============================================================
cat("\n=== Baixando IBGE Projeções — Brasil (tabela 7360) ===\n")
proj_br <- sidrar::get_sidra(7360, period = "all", geo = "Brazil")
names(proj_br)[c(8, 9)] <- c("ano_pub_cod", "ano_pub")
names(proj_br)[c(12, 13)] <- c("ano_proj_cod", "ano_proj")
limpar_proj <- function(df, padrao_variavel) {
df %>%
filter(grepl(padrao_variavel, Variável, ignore.case = TRUE)) %>%
mutate(
ano = as.numeric(as.character(ano_proj)),
valor = as.numeric(as.character(Valor))
) %>%
filter(!is.na(valor)) %>%
select(ano, valor) %>%
arrange(ano)
}
# 1a. Taxa de Fecundidade Total (TFT) — Brasil
tft_brasil <- limpar_proj(proj_br, "fecundidade total")
salvar_dados(tft_brasil, "tft_brasil",
fonte = "IBGE — Projeções da População do Brasil (Revisão 2018)",
tabela = "SIDRA 7360 — Variável: Taxa de fecundidade total",
url = "https://sidra.ibge.gov.br/tabela/7360",
descricao = "Taxa de Fecundidade Total (filhos por mulher) — Brasil, série 2000-2060"
)
# 1b. Taxa Bruta de Natalidade (TBN) — Brasil
tbn_brasil <- limpar_proj(proj_br, "bruta de natalidade")
salvar_dados(tbn_brasil, "tbn_brasil",
fonte = "IBGE — Projeções da População do Brasil (Revisão 2018)",
tabela = "SIDRA 7360 — Variável: Taxa bruta de natalidade",
url = "https://sidra.ibge.gov.br/tabela/7360",
descricao = "Taxa Bruta de Natalidade (por 1.000 hab.) — Brasil, série 2000-2060"
)
# 1c. Taxa Bruta de Mortalidade (TBM) — Brasil
tbm_brasil <- limpar_proj(proj_br, "bruta de mortalidade")
salvar_dados(tbm_brasil, "tbm_brasil",
fonte = "IBGE — Projeções da População do Brasil (Revisão 2018)",
tabela = "SIDRA 7360 — Variável: Taxa bruta de mortalidade",
url = "https://sidra.ibge.gov.br/tabela/7360",
descricao = "Taxa Bruta de Mortalidade (por 1.000 hab.) — Brasil, série 2010-2060"
)
# 1d. Índice de Envelhecimento — Brasil
ie_brasil <- limpar_proj(proj_br, "envelhecimento")
salvar_dados(ie_brasil, "ie_brasil",
fonte = "IBGE — Projeções da População do Brasil (Revisão 2018)",
tabela = "SIDRA 7360 — Variável: Índice de envelhecimento",
url = "https://sidra.ibge.gov.br/tabela/7360",
descricao = "Índice de Envelhecimento (idosos 65+ / jovens 0-14 × 100) — Brasil, série"
)
# 1e. Razão de Dependência Total — Brasil
rd_brasil <- limpar_proj(proj_br, "dependência total")
salvar_dados(rd_brasil, "rd_brasil",
fonte = "IBGE — Projeções da População do Brasil (Revisão 2018)",
tabela = "SIDRA 7360 — Variável: Razão de dependência total",
url = "https://sidra.ibge.gov.br/tabela/7360",
descricao = "Razão de Dependência Total — Brasil"
)
# 1f. Nascimentos — Brasil (para cálculos)
nasc_brasil <- limpar_proj(proj_br, "^Nascimentos$")
salvar_dados(nasc_brasil, "nascimentos_brasil",
fonte = "IBGE — Projeções da População do Brasil (Revisão 2018)",
tabela = "SIDRA 7360 — Variável: Nascimentos",
url = "https://sidra.ibge.gov.br/tabela/7360",
descricao = "Número de nascimentos projetados — Brasil"
)
# ============================================================
# 2. IBGE Projeções (Tabela 7360) — Por Região
# ============================================================
cat("\n=== Baixando IBGE Projeções — Regiões (tabela 7360) ===\n")
proj_reg <- sidrar::get_sidra(7360, period = "all", geo = "Region")
names(proj_reg)[c(8, 9)] <- c("ano_pub_cod", "ano_pub")
names(proj_reg)[c(12, 13)] <- c("ano_proj_cod", "ano_proj")
limpar_proj_reg <- function(df, padrao_variavel) {
df %>%
filter(grepl(padrao_variavel, Variável, ignore.case = TRUE)) %>%
mutate(
regiao = `Grande Região`,
ano = as.numeric(as.character(ano_proj)),
valor = as.numeric(as.character(Valor))
) %>%
filter(!is.na(valor)) %>%
select(regiao, ano, valor) %>%
arrange(regiao, ano)
}
# 2a. TFT por região
tft_regiao <- limpar_proj_reg(proj_reg, "fecundidade total")
salvar_dados(tft_regiao, "tft_regiao",
fonte = "IBGE — Projeções da População do Brasil (Revisão 2018)",
tabela = "SIDRA 7360 — TFT por Grande Região",
url = "https://sidra.ibge.gov.br/tabela/7360",
descricao = "Taxa de Fecundidade Total por Grande Região — série 2000-2060"
)
# 2b. TBN por região
tbn_regiao <- limpar_proj_reg(proj_reg, "bruta de natalidade")
salvar_dados(tbn_regiao, "tbn_regiao",
fonte = "IBGE — Projeções da População do Brasil (Revisão 2018)",
tabela = "SIDRA 7360 — TBN por Grande Região",
url = "https://sidra.ibge.gov.br/tabela/7360",
descricao = "Taxa Bruta de Natalidade por Grande Região — série"
)
# 2c. TBM por região
tbm_regiao <- limpar_proj_reg(proj_reg, "bruta de mortalidade")
salvar_dados(tbm_regiao, "tbm_regiao",
fonte = "IBGE — Projeções da População do Brasil (Revisão 2018)",
tabela = "SIDRA 7360 — TBM por Grande Região",
url = "https://sidra.ibge.gov.br/tabela/7360",
descricao = "Taxa Bruta de Mortalidade por Grande Região — série"
)
# ============================================================
# 3. IBGE Projeções (Tabela 7362) — MI e Esperança de Vida
# ============================================================
cat("\n=== Baixando MI e Esperança de Vida (tabela 7362) ===\n")
proj_7362 <- sidrar::get_sidra(7362, period = "all", geo = "Brazil")
names(proj_7362)[c(8, 9)] <- c("ano_pub_cod", "ano_pub")
names(proj_7362)[c(14, 15)] <- c("ano_proj_cod", "ano_proj")
limpar_7362 <- function(df, padrao_variavel, padrao_sexo = "Total") {
df %>%
filter(
grepl(padrao_variavel, Variável, ignore.case = TRUE),
Sexo == padrao_sexo
) %>%
mutate(
ano = as.numeric(as.character(ano_proj)),
valor = as.numeric(as.character(Valor))
) %>%
filter(!is.na(valor)) %>%
select(ano, valor) %>%
arrange(ano)
}
# 3a. Mortalidade Infantil — Brasil
mi_brasil <- limpar_7362(proj_7362, "mortalidade infantil")
salvar_dados(mi_brasil, "mi_brasil",
fonte = "IBGE — Projeções da População do Brasil (Revisão 2018)",
tabela = "SIDRA 7362 — Variável: Taxa de mortalidade infantil",
url = "https://sidra.ibge.gov.br/tabela/7362",
descricao = "Taxa de Mortalidade Infantil (por 1.000 NV) — Brasil, série 2000-2060",
notas = "Valores são projeções do IBGE, não dados observados do SIM. Para dados observados, consultar SIM/DATASUS."
)
# 3b. Esperança de Vida ao Nascer — Brasil (Total, Masc, Fem)
ev_total <- limpar_7362(proj_7362, "Esperança", "Total")
ev_masc <- limpar_7362(proj_7362, "Esperança", "Homens")
ev_fem <- limpar_7362(proj_7362, "Esperança", "Mulheres")
ev_brasil <- ev_total %>%
rename(total = valor) %>%
left_join(ev_masc %>% rename(masculino = valor), by = "ano") %>%
left_join(ev_fem %>% rename(feminino = valor), by = "ano")
salvar_dados(ev_brasil, "ev_brasil",
fonte = "IBGE — Projeções da População do Brasil (Revisão 2018)",
tabela = "SIDRA 7362 — Variável: Esperança de vida ao nascer",
url = "https://sidra.ibge.gov.br/tabela/7362",
descricao = "Esperança de vida ao nascer (anos) — Brasil, por sexo, série 2000-2060"
)
# 3c. MI por região
cat("\n=== Baixando MI por Região (tabela 7362) ===\n")
proj_7362_reg <- sidrar::get_sidra(7362, period = "all", geo = "Region")
names(proj_7362_reg)[c(8, 9)] <- c("ano_pub_cod", "ano_pub")
names(proj_7362_reg)[c(14, 15)] <- c("ano_proj_cod", "ano_proj")
mi_regiao <- proj_7362_reg %>%
filter(
grepl("mortalidade infantil", Variável, ignore.case = TRUE),
Sexo == "Total"
) %>%
mutate(
regiao = `Grande Região`,
ano = as.numeric(as.character(ano_proj)),
valor = as.numeric(as.character(Valor))
) %>%
filter(!is.na(valor)) %>%
select(regiao, ano, valor) %>%
arrange(regiao, ano)
salvar_dados(mi_regiao, "mi_regiao",
fonte = "IBGE — Projeções da População do Brasil (Revisão 2018)",
tabela = "SIDRA 7362 — MI por Grande Região",
url = "https://sidra.ibge.gov.br/tabela/7362",
descricao = "Taxa de Mortalidade Infantil por Grande Região — série 2000-2060"
)
# ============================================================
# 4. IBGE Projeções — População por faixa etária (pirâmide)
# Tabela 7358
# ============================================================
cat("\n=== Baixando população por faixa etária (tabela 7358) ===\n")
proj_7358 <- sidrar::get_sidra(7358, period = "all", geo = "Brazil")
names(proj_7358)[c(8, 9)] <- c("ano_pub_cod", "ano_pub")
names(proj_7358)[c(16, 17)] <- c("ano_proj_cod", "ano_proj")
piramide <- proj_7358 %>%
mutate(
ano = as.numeric(as.character(ano_proj)),
valor = as.numeric(as.character(Valor)),
sexo = proj_7358[["Sexo"]],
faixa = Idade
) %>%
filter(!is.na(valor), !is.na(ano), sexo != "Total", faixa != "Total",
ano %in% c(2000, 2010, 2020, 2030, 2040)) %>%
select(ano, sexo, faixa, valor) %>%
arrange(ano, sexo, faixa)
salvar_dados(piramide, "piramide_brasil",
fonte = "IBGE — Projeções da População do Brasil (Revisão 2018)",
tabela = "SIDRA 7358 — População por grupo de idade e sexo",
url = "https://sidra.ibge.gov.br/tabela/7358",
descricao = "População por grupo de idade, sexo e ano — Brasil (projeções), anos selecionados"
)
# ============================================================
# RESUMO FINAL
# ============================================================
cat("\n==========================================\n")
cat("COLETA FINALIZADA\n")
cat("==========================================\n")
arquivos <- list.files("data", pattern = "\\.rds$")
for (arq in arquivos) {
df <- readRDS(file.path("data", arq))
cat(sprintf(" %-25s %4d linhas | %s\n",
arq, nrow(df), attr(df, "fonte")))
}
cat("==========================================\n")Metodologia e Fontes dos Dados
Este documento descreve, com precisão, a origem de cada dado utilizado no livreto Indicadores de Saúde — Conceitos, Métodos e Aplicações com Dados do Brasil. Compromissos editoriais:
- Dados extraídos via API de fontes públicas têm a origem documentada, com tabela, URL e data de acesso; são reproduzíveis a partir do código disponível no repositório.
- Dados transcritos manualmente de fontes públicas (por indisponibilidade de API ou por requererem consulta interativa) trazem a citação completa da fonte original e a ressalva de que os valores exibidos são aproximados e não devem ser usados como estatística oficial — para uso científico ou regulatório, o leitor é sempre orientado a consultar a fonte primária.
- Dados hipotéticos ou ilustrativos, quando usados para fins exclusivamente didáticos (demonstrar um conceito epidemiológico), estão explicitamente identificados como tais na legenda do gráfico correspondente e repetidos aqui com a mesma ressalva.
- Tabelas conceituais (classificações, fórmulas, listas de referência) são apresentadas como conteúdo didático, não como dados empíricos, e citam a fonte da classificação quando aplicável.
Por opção editorial, este livro não faz afirmação genérica de que os valores exibidos são “dados reais” ou “estatísticas oficiais”. O leitor interessado em precisão numérica deve consultar diretamente as fontes citadas em cada figura e no inventário deste documento.
1 Dados extraídos via API (reproduzíveis)
Estes dados são obtidos automaticamente pelo script R/obter_dados.R, que usa o pacote sidrar para consultar a API pública do IBGE/SIDRA. Cada arquivo .rds gerado carrega atributos com fonte, tabela, url, descricao e data_coleta, inspecionáveis via attributes(readRDS("data/<arquivo>.rds")).
Para reproduzir a coleta:
1.0.1 Código completo do script de coleta
O código abaixo é lido diretamente do arquivo R/obter_dados.R a cada renderização do site — portanto, representa sempre a versão mais atual que gerou os dados em data/.
1.1 IBGE — Tabela SIDRA 7360 (Projeções da População do Brasil, Revisão 2018)
URL da tabela: https://sidra.ibge.gov.br/tabela/7360
Variáveis extraídas para o nível Brasil e para cada Grande Região (Norte, Nordeste, Sudeste, Sul, Centro-Oeste):
Arquivo (data/) |
Indicador | Série | Usado em |
|---|---|---|---|
tft_brasil.rds |
Taxa de Fecundidade Total — filhos por mulher | 2000–2060 | Cap. 2 |
tft_regiao.rds |
TFT por Grande Região | 2000–2060 | Cap. 2 |
tbn_brasil.rds |
Taxa Bruta de Natalidade (por 1.000 hab.) | 2000–2060 | Cap. 2 |
tbn_regiao.rds |
TBN por Grande Região | 2000–2060 | Cap. 2 |
tbm_brasil.rds |
Taxa Bruta de Mortalidade (por 1.000 hab.) | 2010–2060 | Cap. 3 |
tbm_regiao.rds |
TBM por Grande Região | 2010–2060 | (reserva) |
ie_brasil.rds |
Índice de Envelhecimento | série | (reserva) |
rd_brasil.rds |
Razão de Dependência Total | série | (reserva) |
nascimentos_brasil.rds |
Nascimentos projetados | série | (reserva) |
1.2 IBGE — Tabela SIDRA 7362 (Mortalidade Infantil e Esperança de Vida)
URL da tabela: https://sidra.ibge.gov.br/tabela/7362
| Arquivo | Indicador | Observação | Usado em |
|---|---|---|---|
mi_brasil.rds |
Taxa de Mortalidade Infantil — por 1.000 NV | Projeções do IBGE, não dados observados do SIM | Cap. 3 |
mi_regiao.rds |
MI por Grande Região | Projeções | Cap. 3 |
ev_brasil.rds |
Esperança de vida ao nascer (total, masculino, feminino) | Projeções | Cap. 3 |
Nota importante sobre MI: os valores representam as projeções demográficas da Revisão 2018 do IBGE. Para a mortalidade infantil observada (com base nos registros efetivos do SIM/SINASC), é necessário consultar o TabNet/DATASUS. A distinção está explicada no atributo notas do arquivo mi_brasil.rds.
1.3 IBGE — Tabela SIDRA 7358 (População por grupo de idade e sexo)
URL da tabela: https://sidra.ibge.gov.br/tabela/7358
| Arquivo | Indicador | Anos filtrados | Usado em |
|---|---|---|---|
piramide_brasil.rds |
População por faixa etária e sexo (projeções) | 2000, 2010, 2020, 2030, 2040 | Cap. 7 |
2 Dados transcritos manualmente de fontes públicas
Os indicadores abaixo foram consultados nas fontes públicas indicadas, mas digitados como tribble no próprio capítulo. Isso ocorre quando (a) a fonte não oferece API pública acessível via sidrar/CRAN; (b) a consulta requer navegação interativa no TabNet; ou (c) o dado foi extraído de relatórios/boletins em PDF. Em todos os casos, a origem primária é citada no código e na legenda do gráfico, acompanhada da ressalva de que os valores mostrados são aproximados e não devem ser usados como estatística oficial.
2.1 Capítulo 2 — Comparação internacional de TFT
tft_paises (Figura fig-tft-internacional).
- Fonte primária: ONU — World Population Prospects 2022.
- URL: https://population.un.org/wpp/
- Brasil: IBGE Projeções 2018 (coerência com os demais dados do capítulo).
- Natureza: valores oficiais do relatório WPP 2022, selecionados para ilustrar o intervalo global de TFT (Níger, Nigéria, Índia, EUA, Brasil, Canadá, Japão, Coreia do Sul).
2.2 Capítulo 3 — Mortalidade
mp_brasil — mortalidade proporcional por grupo de causas, Brasil, 2022 (Figura fig-mp-brasil).
- Fonte: SIM/DATASUS, TabNet Mortalidade por Capítulo CID-10, ano 2022.
- URL: http://tabnet.datasus.gov.br/cgi/tabcgi.exe?sim/cnv/obt10uf.def
- Ressalva explícita na legenda: “(valores aproximados — não usar como estatística oficial)”. A tabela reflete as ordens de grandeza consolidadas do TabNet à época da redação; para qualquer uso em trabalho científico, acadêmico ou decisório, a consulta direta ao TabNet é indispensável.
daly_brasil — principais causas de DALYs no Brasil (Figura fig-daly-brasil).
- Fonte: IHME — Global Burden of Disease Study 2019.
- URL: https://vizhub.healthdata.org/gbd-compare/
- Ressalva explícita: “valores ilustrativos baseados em GBD 2019 — IHME. Ordem de magnitude aproximada — consulte o GBD Results Tool para dados exatos.”
- Natureza: valores ordenados por magnitude, fiéis à hierarquia de causas do GBD 2019; os números em milhares são aproximações editoriais para fins didáticos.
2.3 Capítulo 4 — Morbidade
dengue — série histórica 2010–2024 (Figura fig-dengue-incidencia).
- Fonte primária: SINAN/SVS/Ministério da Saúde — Série histórica de casos prováveis.
- Complementação: Boletins Epidemiológicos da SVS e consolidação final de 2024 (Agência Brasil).
- Natureza: contagem de casos prováveis (em milhares) e população (IBGE projeções) transcrita dos boletins; a incidência por 100 mil hab. foi calculada a partir desses valores.
- Observação: o ano de 2024 aparece como preliminar na legenda.
dcnt — prevalência de DCNTs em adultos brasileiros (Figura fig-prevalencia-dcnt).
- Fontes primárias: IBGE — Pesquisa Nacional de Saúde (PNS) 2019, e SVS/MS — Vigitel 2023.
- Valores exatos verificados:
- PNS 2019: hipertensão 23,9%; diabetes 7,7%; depressão 10,2%; asma 5,3%; DRC 1,4% (autodeclaração de diagnóstico médico).
- Vigitel 2023: obesidade 24,3%.
- URLs: https://www.ibge.gov.br/estatisticas/sociais/saude/9160-pesquisa-nacional-de-saude.html; https://www.gov.br/saude/pt-br/centrais-de-conteudo/publicacoes/svsa/vigitel
2.4 Capítulo 5 — Cobertura vacinal
cob_vacinal — cobertura histórica 2010–2023, vacinas Tríplice Viral, Poliomielite e Pentavalente (Figura fig-cobertura-historica).
- Fonte: SI-PNI / DATASUS — TabNet, Coberturas Vacinais.
- URL: http://tabnet.datasus.gov.br/cgi/deftohtm.exe?pni/cnv/cpniuf.def
- Ressalva explícita na legenda: “(valores aproximados — não usar como estatística oficial)”.
cob_regiao — cobertura da Tríplice Viral por região (Figura fig-cobertura-regiao).
- Mesma fonte; mesma ressalva.
2.5 Capítulo 6 — Padronização
tbn_pad — TBN bruta vs. padronizada por região, Brasil, 2004 (Figura fig-tbn-padronizada).
- Fontes: IBGE/DATASUS e OPAS (2008) — Indicadores Básicos para a Saúde no Brasil: Conceitos e Aplicações, 2ª ed.
- Ressalva explícita na legenda: “(valores aproximados — não usar como estatística oficial)”.
2.6 Capítulo 7 — Transição epidemiológica
mp_historica — mortalidade proporcional por período, Brasil, 1930–2020 (Figura fig-transicao-mp).
- Fontes: SIM/DATASUS (para as décadas mais recentes) e Rouquayrol & Gurgel, Epidemiologia e Saúde, 2017 (para a reconstrução histórica).
- Ressalva explícita na legenda: “(valores aproximados — não usar como estatística oficial)”.
- Natureza: ordens de grandeza para ilustrar as quatro etapas da transição epidemiológica brasileira.
2.7 Capítulo 8 — Atenção Primária
esf — cobertura da Estratégia Saúde da Família 2008–2023 (Figura fig-cobertura-esf).
- Fonte: e-Gestor AB / Ministério da Saúde.
- URL: https://egestorab.saude.gov.br/
- Ressalva explícita: “(valores aproximados — não usar como estatística oficial)”.
icsap — Internações por Condições Sensíveis à Atenção Primária por região, 2010–2020 (Figura fig-icsap).
- Fonte: SIH/DATASUS — TabNet.
- URL: http://tabnet.datasus.gov.br/cgi/tabcgi.exe?sih/cnv/qiuf.def
- Ressalva explícita: “(valores aproximados — não usar como estatística oficial)”.
prenatal — proporção de gestantes com 7+ consultas de pré-natal por região (Figura fig-prenatal).
- Fonte: SINASC/DATASUS — TabNet.
- Ressalva explícita: “(valores aproximados — não usar como estatística oficial)”.
2.8 Capítulo 9 — Desigualdades raciais
rmm — Razão de Mortalidade Materna por raça/cor (Figura fig-rmm-raca).
- Fonte: SVS/MS — DATASUS, SIM; Painel de Mortalidade Materna.
- URL: https://www.gov.br/saude/pt-br/composicao/svsa/mortalidade-materna
- Ressalva explícita: “(valores aproximados — não usar como estatística oficial)”.
mi_raca — Mortalidade Infantil por raça/cor (Figura fig-mi-raca).
- Fonte: SVS/MS — DATASUS, SIM/SINASC — TabNet (cruzamento raça/cor do nascido vivo).
- Ressalva explícita: “(valores aproximados — não usar como estatística oficial)”.
homic — homicídios por raça/cor (Figura fig-homicidios-raca).
- Fonte: IPEA / FBSP — Atlas da Violência 2023, com dados referentes a 2021.
- URL: https://www.ipea.gov.br/atlasviolencia/
- Valores exatos verificados no Atlas: taxa de 31,0 por 100 mil hab. entre negros; 10,8 entre não negros; negros representaram 79% das vítimas.
2.9 Capítulo 10 — Limitações
subreg — estimativas de subregistro de óbitos por região (Figura fig-subregistro).
- Fonte: estimativas baseadas no projeto Busca Ativa de Óbitos e Nascimentos, SVS/MS; e em relatórios técnicos do Ministério da Saúde sobre cobertura do SIM.
- Ressalva explícita: “(valores aproximados — não usar como estatística oficial)”.
3 Exemplos hipotéticos (didáticos)
Todos os exemplos abaixo são explicitamente identificados como hipotéticos na legenda do respectivo gráfico. Existem para isolar o mecanismo epidemiológico que se quer demonstrar, livre do ruído de dados empíricos. Nenhum deles é apresentado como informação sobre o Brasil ou qualquer outro país específico.
3.1 Capítulo 3 — EUA / câncer, 1920–2011 (eua_cancer)
- Uso didático: mostrar como contagens absolutas podem exagerar uma tendência que, em taxas por 100 mil hab., é muito mais modesta.
- Base: exemplo didático adaptado de Gordis, Epidemiology, 5ª ed., 2017.
- Natureza: “valores ilustrativos aproximados” (explícito na legenda). Não devem ser citados como estatísticas dos EUA.
3.2 Capítulo 6 — Cidades A e B (cidades, pop_padrao, pad_result)
- Uso didático: demonstrar, com números redondos, por que taxas brutas enganam e como a padronização corrige o viés de estrutura etária.
- Natureza: números fabricados para o exercício. O caption da tabela descreve explicitamente o mecanismo pedagógico.
3.3 Capítulo 10 — Bairros da cidade (falacia)
- Uso didático: ilustrar a falácia ecológica — um bairro com alta renda e alta violência pode esconder profunda desigualdade interna.
- Caption explícito: “Dados hipotéticos para fins ilustrativos”.
3.4 Capítulo 10 — TVs e mortalidade infantil (espuria)
- Uso didático: ilustrar correlação espúria (ambas variáveis refletem desenvolvimento socioeconômico, não há relação causal entre elas).
- Caption explícito: “Dados hipotéticos — variável de confusão: renda/desenvolvimento”.
4 Tabelas conceituais
Estas não são “dados” em sentido estrito — são classificações, fórmulas e listas de referência extraídas da literatura epidemiológica ou da documentação oficial. Listo aqui para completude.
| Localização | Tabela | Origem da classificação |
|---|---|---|
| Cap. 1 | Categorias de indicadores (RIPSA/OPAS) | OPAS, Indicadores Básicos para a Saúde no Brasil, 2ª ed., 2008 |
| Cap. 1 | Tipos de medida epidemiológica | Literatura clássica (Last; Rouquayrol; Gordis) |
| Cap. 1 | Sistemas de informação em saúde do Brasil | Ministério da Saúde — DATASUS |
| Cap. 3 | Mortalidades específicas (fórmulas) | Literatura clássica |
| Cap. 3 | Componentes da mortalidade infantil | Literatura clássica |
| Cap. 3 | CFR vs. IFR (definições) | Literatura clássica |
| Cap. 4 | Incidência vs. prevalência | Literatura clássica |
| Cap. 4 | Exemplos de doenças de notificação compulsória | Portaria GM/MS nº 264/2020 e atualizações |
| Cap. 5 | Metas de cobertura vacinal | Programa Nacional de Imunizações (PNI) / MS |
| Cap. 6 | Interpretação do SMR | Literatura clássica |
| Cap. 7 | Fases da transição epidemiológica | Omran, AR. The Epidemiologic Transition, 1971 |
| Cap. 8 | Indicadores do Previne Brasil | Portaria GM/MS nº 3.222/2019 |
| Cap. 9 | Fontes de dados sobre saúde e raça/cor | Compilação do autor |
| Cap. 11 | Boas práticas / dimensões do poder dos dados | Elaboração do autor |
5 Funções auxiliares (R/utils.R)
Todos os capítulos começam com source("../R/utils.R"), que carrega os pacotes, define o tema gráfico padrão e disponibiliza as funções carregar_dados() e fonte_dados() usadas para acessar os .rds e extrair sua fonte documentada. Código completo:
# ============================================================
# utils.R — Funções auxiliares para o livreto Indicadores de Saúde
# ============================================================
# Pacotes necessários ----
pacotes <- c(
"tidyverse", # manipulação e visualização
"httr2", # requisições HTTP
"janitor", # limpeza de dados
"scales", # formatação de eixos
"knitr", # tabelas
"kableExtra", # tabelas avançadas
"glue", # strings interpoladas
"patchwork" # composição de gráficos
)
# Instalar pacotes faltantes
instalar_se_necessario <- function(pkgs) {
faltantes <- pkgs[!pkgs %in% installed.packages()[, "Package"]]
if (length(faltantes) > 0) {
install.packages(faltantes, repos = "https://cran.r-project.org")
}
}
# Tema padrão para gráficos ----
tema_indicadores <- function(base_size = 12) {
theme_minimal(base_size = base_size) +
theme(
plot.title = element_text(face = "bold", size = base_size * 1.2, color = "#2c3e50"),
plot.subtitle = element_text(color = "#6c757d", size = base_size * 0.9),
plot.caption = element_text(color = "#adb5bd", size = base_size * 0.7, hjust = 0),
panel.grid.minor = element_blank(),
panel.grid.major.x = element_blank(),
axis.title = element_text(color = "#495057"),
axis.text = element_text(color = "#6c757d"),
legend.position = "bottom",
legend.title = element_text(face = "bold", size = base_size * 0.85),
strip.text = element_text(face = "bold", size = base_size * 0.9)
)
}
# Paleta de cores padrão ----
cores_indicadores <- c(
"destaque" = "#2c7fb8",
"alerta" = "#d95f02",
"sucesso" = "#1b9e77",
"perigo" = "#e31a1c",
"neutro" = "#6c757d",
"branca" = "#4575b4",
"parda" = "#fc8d59",
"preta" = "#d73027",
"indigena" = "#1a9850",
"amarela" = "#fee08b"
)
# Cores para regiões do Brasil
cores_regioes <- c(
"Norte" = "#1b9e77",
"Nordeste" = "#d95f02",
"Sudeste" = "#7570b3",
"Sul" = "#e7298a",
"Centro-Oeste" = "#66a61e"
)
# Formatar números no padrão brasileiro ----
fmt_br <- function(x, digits = 1) {
formatC(x, format = "f", digits = digits, big.mark = ".", decimal.mark = ",")
}
# Tabela formatada padrão ----
tabela_indicador <- function(df, caption = NULL) {
kable(df, caption = caption, align = "l") |>
kable_styling(
bootstrap_options = c("striped", "hover", "condensed"),
full_width = FALSE,
font_size = 14
)
}
# Detectar raiz do projeto ----
raiz_projeto <- function() {
dir <- getwd()
for (i in 1:5) {
if (file.exists(file.path(dir, "_quarto.yml"))) return(dir)
dir <- dirname(dir)
}
getwd()
}
# Carregar dados reais com metadados ----
carregar_dados <- function(nome_arquivo) {
caminho <- file.path(raiz_projeto(), "data", paste0(nome_arquivo, ".rds"))
if (!file.exists(caminho)) {
stop("Arquivo de dados não encontrado: ", nome_arquivo,
"\nExecute Rscript R/obter_dados.R para baixar os dados.")
}
readRDS(caminho)
}
# Exibir fonte dos dados (string curta para caption de gráficos) ----
fonte_dados <- function(nome_arquivo) {
caminho <- file.path(raiz_projeto(), "data", paste0(nome_arquivo, ".rds"))
if (!file.exists(caminho)) return("Fonte: dados não encontrados")
df <- readRDS(caminho)
fonte <- attr(df, "fonte")
tabela <- attr(df, "tabela")
if (is.null(fonte)) fonte <- "Não informada"
if (is.null(tabela)) tabela <- ""
paste0("Fonte: ", fonte, " | ", tabela)
}6 Software e reprodutibilidade
Todo o processamento é executado em R (≥ 4.2) a partir dos arquivos .qmd. Dependências declaradas em R/utils.R:
tidyverse,scales,knitr,kableExtra,glue,patchworksidrar(apenas paraR/obter_dados.R)httr2,janitor(utilitários)
O livro é compilado com Quarto (≥ 1.4), e o freeze: auto garante que gráficos cached não sejam re-renderizados quando os dados não mudam.
7 Limitações assumidas
- Projeções ≠ observações. Os indicadores das tabelas SIDRA 7360 e 7362 são projeções demográficas do IBGE (Revisão 2018), não medições diretas. Para dados observados, consulte o SIM/SINASC via TabNet.
- Valores aproximados em figuras. Sempre que uma figura usa valores manualmente transcritos, a legenda o declara explicitamente. Não use esses números como referência numérica primária em trabalhos científicos — consulte sempre a fonte original citada.
- Dados hipotéticos. Os exemplos dos Capítulos 3, 6 e 10 listados na seção anterior são didáticos e estão marcados como tais. Não representam nenhuma realidade empírica.
- Defasagem temporal. A data de coleta dos dados via SIDRA está registrada no atributo
data_coletade cada.rds. Boletins e relatórios nacionais podem ter sido atualizados após a redação dos capítulos.
8 Como consultar a fonte de um dado específico
Para qualquer figura ou tabela do livro, a fonte pode ser recuperada por:
- Legenda do gráfico — sempre inclui a fonte e, quando aplicável, a ressalva “valores aproximados — não usar como estatística oficial” ou “dados hipotéticos”.
- Comentário no código-fonte — todo
tribbleé precedido por um comentário que identifica a fonte. - Atributos do arquivo
.rds— para dados extraídos viaR/obter_dados.R. - Este documento, que consolida tudo em um só lugar.
8.1 Demonstração ao vivo: inspecionando os metadados
O bloco abaixo é executado de verdade a cada renderização do site. Ele lê um dos .rds extraídos via API e imprime os metadados que o script de coleta gravou:
#> Fonte : IBGE — Projeções da População do Brasil (Revisão 2018)
#> Tabela : SIDRA 7360 — Variável: Taxa de fecundidade total
#> URL : https://sidra.ibge.gov.br/tabela/7360
#> Descrição : Taxa de Fecundidade Total (filhos por mulher) — Brasil, série 2000-2060
#> Data coleta: 2026-03-12
#> Linhas : 61
E aqui estão as primeiras linhas do próprio conteúdo:
8.2 Inventário automático dos arquivos em data/
A tabela a seguir é gerada automaticamente a partir da pasta data/ no momento da renderização. Se um novo .rds for adicionado (e vier acompanhado dos atributos padronizados de salvar_dados()), ele aparece aqui sem qualquer edição manual deste documento:
arquivos <- list.files("data", pattern = "\\.rds$", full.names = TRUE)
inventario <- purrr::map_dfr(arquivos, function(f) {
df <- readRDS(f)
dc <- attr(df, "data_coleta")
tibble::tibble(
Arquivo = basename(f),
Linhas = nrow(df),
Fonte = ou_travessao(attr(df, "fonte")),
Tabela = ou_travessao(attr(df, "tabela")),
`Data coleta` = if (is.null(dc)) "—" else format(dc)
)
})
knitr::kable(inventario)| Arquivo | Linhas | Fonte | Tabela | Data coleta |
|---|---|---|---|---|
| ev_brasil.rds | 61 | IBGE — Projeções da População do Brasil (Revisão 2018) | SIDRA 7362 — Variável: Esperança de vida ao nascer | 2026-03-12 |
| ie_brasil.rds | 61 | IBGE — Projeções da População do Brasil (Revisão 2018) | SIDRA 7360 — Variável: Índice de envelhecimento | 2026-03-12 |
| mi_brasil.rds | 61 | IBGE — Projeções da População do Brasil (Revisão 2018) | SIDRA 7362 — Variável: Taxa de mortalidade infantil | 2026-03-12 |
| mi_regiao.rds | 305 | IBGE — Projeções da População do Brasil (Revisão 2018) | SIDRA 7362 — MI por Grande Região | 2026-03-12 |
| nascimentos_brasil.rds | 61 | IBGE — Projeções da População do Brasil (Revisão 2018) | SIDRA 7360 — Variável: Nascimentos | 2026-03-12 |
| piramide_brasil.rds | 1074 | IBGE — Projeções da População do Brasil (Revisão 2018) | SIDRA 7358 — População por grupo de idade e sexo | 2026-03-12 |
| rd_brasil.rds | 61 | IBGE — Projeções da População do Brasil (Revisão 2018) | SIDRA 7360 — Variável: Razão de dependência total | 2026-03-12 |
| tbm_brasil.rds | 51 | IBGE — Projeções da População do Brasil (Revisão 2018) | SIDRA 7360 — Variável: Taxa bruta de mortalidade | 2026-03-12 |
| tbm_regiao.rds | 255 | IBGE — Projeções da População do Brasil (Revisão 2018) | SIDRA 7360 — TBM por Grande Região | 2026-03-12 |
| tbn_brasil.rds | 61 | IBGE — Projeções da População do Brasil (Revisão 2018) | SIDRA 7360 — Variável: Taxa bruta de natalidade | 2026-03-12 |
| tbn_regiao.rds | 305 | IBGE — Projeções da População do Brasil (Revisão 2018) | SIDRA 7360 — TBN por Grande Região | 2026-03-12 |
| tft_brasil.rds | 61 | IBGE — Projeções da População do Brasil (Revisão 2018) | SIDRA 7360 — Variável: Taxa de fecundidade total | 2026-03-12 |
| tft_regiao.rds | 305 | IBGE — Projeções da População do Brasil (Revisão 2018) | SIDRA 7360 — TFT por Grande Região | 2026-03-12 |