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:

  1. 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.
  2. 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.
  3. 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.
  4. 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:

Rscript R/obter_dados.R

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/.

# ============================================================
# 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")

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).

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).

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).

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).

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, patchwork
  • sidrar (apenas para R/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

  1. 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.
  2. 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.
  3. 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.
  4. Defasagem temporal. A data de coleta dos dados via SIDRA está registrada no atributo data_coleta de 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:

  1. 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”.
  2. Comentário no código-fonte — todo tribble é precedido por um comentário que identifica a fonte.
  3. Atributos do arquivo .rds — para dados extraídos via R/obter_dados.R.
  4. 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:

dados <- readRDS("data/tft_brasil.rds")

cat("Fonte      :", attr(dados, "fonte"),       "\n")
#> Fonte      : IBGE — Projeções da População do Brasil (Revisão 2018)
cat("Tabela     :", attr(dados, "tabela"),      "\n")
#> Tabela     : SIDRA 7360 — Variável: Taxa de fecundidade total
cat("URL        :", attr(dados, "url"),         "\n")
#> URL        : https://sidra.ibge.gov.br/tabela/7360
cat("Descrição  :", attr(dados, "descricao"),   "\n")
#> Descrição  : Taxa de Fecundidade Total (filhos por mulher) — Brasil, série 2000-2060
cat("Data coleta:", format(attr(dados, "data_coleta")), "\n")
#> Data coleta: 2026-03-12
cat("Linhas     :", nrow(dados),                "\n")
#> Linhas     : 61

E aqui estão as primeiras linhas do próprio conteúdo:

head(dados, 10) |>
  knitr::kable(col.names = c("Ano", "TFT (filhos por mulher)"))
Ano TFT (filhos por mulher)
2000 2.32
2001 2.15
2002 2.07
2003 2.02
2004 1.97
2005 1.95
2006 1.88
2007 1.82
2008 1.82
2009 1.77

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
De volta ao topo