Versão em português da vignette principal. Para a versão em inglês e canônica, veja
vignette("01-introduction", "educabr").
Sobre o pacote
O educabr disponibiliza, sob um único esquema tidy canônico, o conjunto mais extenso de séries históricas harmonizadas sobre educação brasileira disponível em formato analítico:
- Matrículas no ensino superior — 1907 a 2024, 118 anos de cobertura, articulando sete fontes primárias distintas (IBGE Estatísticas do Século XX, Durham, Maduro Junior, Kang, INEP Sinopse, INEP Microdados e o painel CENSUP do INEP).
- Matrículas no ensino fundamental e médio — 1933 a 2010, com desagregação por cor/raça a partir de 1960 (Kang, Paese & Felix 2021).
- Anos médios de escolaridade da população adulta — 1925 a 2015, com desagregação por sexo, cor/raça, macrorregião e unidade da federação (Walter & Kang 2024).
Toda a transformação dos dados é auditável: cada linha do
output carrega o source (chave canônica em
inst/dict/vocabularies/sources.yaml) e um
source_note com a referência exata da tabela ou capítulo de
origem.
API em duas funções
Toda a interface pública gira em torno de duas funções:
# Esquema dos dois principais resultados
str(get_enrollment(level = "fundamental", year = 1950))
#> tibble [2 × 16] (S3: tbl_df/tbl/data.frame)
#> $ year : int [1:2] 1950 1950
#> $ geo_level : chr [1:2] "BR" "BR"
#> $ geo_code : chr [1:2] "BR" "BR"
#> $ geo_name : chr [1:2] "Brasil" "Brasil"
#> $ level : chr [1:2] "fundamental" "fundamental"
#> $ network : chr [1:2] "total" "total"
#> $ institution_type: chr [1:2] "total" "total"
#> $ modality : chr [1:2] "total" "total"
#> $ dim_race : chr [1:2] "total" "total"
#> $ age_group : chr [1:2] "7-14" NA
#> $ indicator : chr [1:2] "enrollment_rate" "enrollment_count"
#> $ value : num [1:2] 4.55e+01 4.73e+06
#> $ unit : chr [1:2] "percent" "count"
#> $ source : chr [1:2] "kang_paese_felix_2021" "kang_paese_felix_2021"
#> $ source_note : chr [1:2] "Kang, Paese & Felix (2021). RHE 39(2):191-218. doi:10.1017/S0212610921000112" "Kang, Paese & Felix (2021). RHE 39(2):191-218. doi:10.1017/S0212610921000112"
#> $ is_derived : logi [1:2] FALSE FALSE
str(get_schooling(year = 1950))
#> tibble [1 × 12] (S3: tbl_df/tbl/data.frame)
#> $ year : int 1950
#> $ geo_level : chr "BR"
#> $ geo_code : chr "BR"
#> $ geo_name : chr "Brasil"
#> $ dim_race : chr "total"
#> $ dim_sex : chr "total"
#> $ age_group : chr NA
#> $ indicator : chr "mean_years_schooling"
#> $ value : num 1.59
#> $ unit : chr "years"
#> $ source : chr "walter_kang_2023"
#> $ source_note: chr "Walter, J., & Kang, T. H. (2023). A new dataset of average years of schooling in Brazil, 1925-2015. FGV-IBRE working paper."
#> - attr(*, "educabr_meta")=List of 5
#> ..$ build_script : chr "data-raw/02_build_schooling_kang_fgv.R"
#> ..$ built_at : POSIXct[1:1], format: "2026-05-17 19:08:24"
#> ..$ primary_source: chr "walter_kang_2023"
#> ..$ citation : chr "Walter, J., & Kang, T. H. (2023). A new dataset of average years of schooling in Brazil, 1925-2015. FGV-IBRE working paper."
#> ..$ raw_files : chr "data-raw/sources/kang_fgv_ibre_2023/3._anos_estudo_1925_2015_v_abril2023.xlsx"Ambas retornam tibbles longas seguindo o mesmo esquema
canônico (inst/dict/schema.yaml), com colunas para a
unidade geográfica, a dimensão de desigualdade (raça, sexo, etc.), a
fonte e o valor.
Caso 1 — taxa bruta de matrícula por raça/cor
Aqui usamos a desagregação dimension = "race" para
comparar a trajetória de matrícula no ensino fundamental entre os cinco
grupos de cor/raça do IBGE entre 1960 e 2010.
ef_raca <- get_enrollment(
level = "fundamental",
indicator = "rate",
geo_level = "BR",
dimension = "race",
year = c(1960, 2010)
)
head(ef_raca)
#> # A tibble: 6 × 16
#> year geo_level geo_code geo_name level network institution_type modality
#> <int> <chr> <chr> <chr> <chr> <chr> <chr> <chr>
#> 1 1960 BR BR Brasil fundament… total total total
#> 2 1961 BR BR Brasil fundament… total total total
#> 3 1962 BR BR Brasil fundament… total total total
#> 4 1963 BR BR Brasil fundament… total total total
#> 5 1964 BR BR Brasil fundament… total total total
#> 6 1965 BR BR Brasil fundament… total total total
#> # ℹ 8 more variables: dim_race <chr>, age_group <chr>, indicator <chr>,
#> # value <dbl>, unit <chr>, source <chr>, source_note <chr>, is_derived <lgl>A diferença entre as três principais categorias (white,
black, brown) acompanha uma das narrativas
centrais da literatura sociológica sobre educação no Brasil —
convergência relativa nas matrículas obrigatórias acompanhada de
persistente desigualdade em níveis mais altos.
Caso 2 — comparação multi-fonte no ensino superior
O ensino superior brasileiro foi reconstituído por diversos
autores com metodologias ligeiramente diferentes, sobretudo
para o longo período 1933-2000 em que as fontes oficiais são esparsas. O
educabr mantém todas as estimativas
concorrentes lado a lado, permitindo comparação direta:
es_1980 <- get_enrollment(
level = "superior",
year = 1980,
network = "total",
modality = "total",
indicator = "count"
)
es_1980[, c("source", "value", "source_note")]
#> # A tibble: 4 × 3
#> source value source_note
#> <chr> <dbl> <chr>
#> 1 kang_paese_felix_2021 1377286 Kang, Paese & Felix (2021). RHE 39(2):191-218. …
#> 2 durham_2005 1377286 Durham (2005). Educação superior, pública e pri…
#> 3 kang_paese_felix_2021 1377286 Kang, Paese & Felix (2021), RHE 39(2):191-218. …
#> 4 maduro_junior_2007 1377286 Maduro Junior (2007). Taxas de matrícula e gast…Note que para 1980 várias fontes convergem para o mesmo valor (~1,38
milhão), o que sugere uma estimativa estabilizada na literatura. Para
outros anos as estimativas divergem — passar source = "..."
no get_enrollment() é o caminho recomendado para fixar uma
série única em análises secundárias.
Caso 3 — o problema dos totais reconstruídos (2000-2008)
Entre 2000 e 2008 o INEP começou a coletar matrículas em EAD
(educação a distância) em uma tabela específica do CENSUP
(tabela7.x), porém não as somou ao total
das matrículas presenciais publicadas na tabela5.x. Isso
significa que séries “totais” desse intervalo publicadas por Kang,
Durham, Maduro Junior e pela própria sinopse do INEP estão
sistematicamente subestimadas — em até 700 mil
matrículas em 2008, segundo nosso cálculo.
A partir de 2009, os microdados do CENSUP já agregam presencial e EAD no mesmo cadastro, e o problema se resolve.
Para esse intervalo de transição, o educabr
disponibiliza totais reconstruídos (reconstructed
enrollment totals) que somam o componente presencial de cada fonte
ao EAD publicado pelo INEP. Essas linhas têm
is_derived = TRUE e ficam fora do resultado padrão de
get_enrollment(); para inspecioná-las basta passar
include_derived = TRUE:
recon <- get_enrollment(
level = "superior",
year = c(2000, 2008),
network = "total",
modality = "total",
indicator = "count",
include_derived = TRUE
)
recon[recon$is_derived, c("year", "source", "value")]
#> # A tibble: 23 × 3
#> year source value
#> <int> <chr> <dbl>
#> 1 2000 durham_2005+inep_sinopse_censup 2695927
#> 2 2000 inep_sinopse_censup+inep_sinopse_censup 2695927
#> 3 2000 kang_paese_felix_2021+inep_sinopse_censup 2695927
#> 4 2000 maduro_junior_2007+inep_sinopse_censup 2695927
#> 5 2001 durham_2005+inep_sinopse_censup 3045113
#> 6 2001 inep_sinopse_censup+inep_sinopse_censup 3036113
#> 7 2001 inep_sinopse_censup+inep_sinopse_censup 3036113
#> 8 2001 kang_paese_felix_2021+inep_sinopse_censup 3036113
#> 9 2001 maduro_junior_2007+inep_sinopse_censup 3036113
#> 10 2003 inep_sinopse_censup+inep_sinopse_censup 3936933
#> # ℹ 13 more rowsO nome composto do source (ex.:
kang_paese_felix_2021+inep_sinopse_censup) explicita que se
trata de uma combinação: o componente presencial vem da
primeira fonte e o componente EAD vem da segunda. O
source_note registra a composição exata para fins de
citação.
Convenção de citação sugerida: “Total reconstruído computado a partir de {fonte_presencial} (presencial) e INEP Sinopse CENSUP (EAD), conforme metodologia documentada em
educabr(Mançano 2026).”
Caso 4 — anos médios de escolaridade por sexo
escolaridade_sexo <- get_schooling(
geo_level = "BR",
dimension = "sex"
)
tail(escolaridade_sexo)
#> # A tibble: 6 × 12
#> year geo_level geo_code geo_name dim_race dim_sex age_group indicator value
#> <int> <chr> <chr> <chr> <chr> <chr> <chr> <chr> <dbl>
#> 1 2010 BR BR Brasil total male NA mean_years… 8.03
#> 2 2011 BR BR Brasil total male NA mean_years… 8.2
#> 3 2012 BR BR Brasil total male NA mean_years… 8.39
#> 4 2013 BR BR Brasil total male NA mean_years… 8.49
#> 5 2014 BR BR Brasil total male NA mean_years… 8.63
#> 6 2015 BR BR Brasil total male NA mean_years… 8.72
#> # ℹ 3 more variables: unit <chr>, source <chr>, source_note <chr>A série mostra a inversão histórica do gender gap: em 1925 os homens tinham em média mais anos de estudo que as mulheres; ao longo do século XX a vantagem inverte e em 2015 mulheres ultrapassam homens em escolaridade média.
Painel interativo
O pacote acompanha um painel Shiny com as três séries:
educabr::run_dashboard()O painel reproduz toda a comparação multi-fonte do ensino superior de
forma interativa, com um botão “View R code” em cada aba que gera o
código educabr + ggplot2 para reproduzir a
visualização no seu ambiente R local — uma ponte direta entre exploração
no painel e análise reprodutível em script.
Fontes e citação
A lista completa de fontes com DOIs e links está na vignette
principal em inglês
(vignette("01-introduction", "educabr")). Para citar o
pacote em si:
Mançano, T. (2026). educabr: Harmonized Historical Series on Brazilian Education (versão 0.0.0.9000). https://github.com/mancano-tales/educabr
