Este relatório implementa um pipeline reproduzível de análise da relação entre clima escolar e desigualdade racial de proficiência em escolas públicas de Manaus (AM) e Belém (PA), usando os microdados do SAEB 2023 e do Censo Escolar 2023.
Pergunta central: clima escolar reduz a brecha de proficiência entre alunos brancos e não-brancos?
O documento segue a sequência dos scripts originais do projeto:
| Seção | Script de origem |
|---|---|
| 1. Configuração do ambiente | 00_setup.R |
| 2. Download dos microdados | 01_download_microdados.R |
| 3. Diagnóstico inicial | 02_diagnostico.R |
| 4. Índice de clima (AFE) | 02_clima_escolar.R |
| 5. Tratamento e integração | 03_tratamento_integracao.R |
| 6. Análise descritiva e modelos multinível (aluno) | 03_analise_descritiva_multinivel.R |
| 7. Análise descritiva e modelos multinível (escola) | 04_analise_descritiva_modelagem_multinivel.R |
| 8. Probabilidade predita — modelos probit | 05_probabilidade_predita_probit.R |
Execute esta seção uma única vez, antes de rodar o restante do documento. Ela instala os pacotes necessários e inicializa o
renvpara controle de versões. Em outras máquinas, substitua porrenv::restore().
pkgs <- c(
"renv", "here", "tidyverse", "psych", "ggplot2",
"data.table", "lme4", "lmerTest", "patchwork",
"gt", "broom.mixed", "labelled", "emmeans",
"ggpubr", "cowplot", "scales", "performance",
"readxl", "writexl"
)
installed <- rownames(installed.packages())
to_install <- pkgs[!pkgs %in% installed]
if (length(to_install) > 0) {
message("Instalando: ", paste(to_install, collapse = ", "))
install.packages(to_install)
} else {
message("Todos os pacotes já estão instalados.")
}
if (!file.exists("renv.lock")) {
renv::init()
} else {
message("renv já inicializado. Use renv::restore() se necessário.")
}
dirs <- c("data/raw", "data/clean", "scripts", "outputs/figuras",
"outputs/tabelas", "docs")
for (d in dirs) {
path <- here::here(d)
if (!dir.exists(path)) {
dir.create(path, recursive = TRUE)
message("Criado: ", d)
}
}Execute esta seção uma única vez (ou quando dados novos estiverem disponíveis). Os ZIPs do SAEB e do Censo Escolar são grandes (~500 MB); o download pode levar de 10 a 30 minutos. Os arquivos ficam em
data/raw/.
library(data.table)
library(here)
library(readxl)
library(writexl)
ano_saeb <- 2023
ano_censo <- 2023
dir_data <- here("data")
dir_raw <- here("data", "raw")
options(timeout = 600)
if (!dir.exists(dir_raw)) dir.create(dir_raw, recursive = TRUE)
# Função auxiliar: extrair arquivos de um ZIP por padrão de nome
extrair_do_zip <- function(zip_path, destdir, patterns) {
conteudo <- unzip(zip_path, list = TRUE)$Name
lapply(patterns, function(p) {
alvo <- conteudo[grepl(p, conteudo, ignore.case = TRUE)]
if (length(alvo) == 0) {
message("Arquivos disponíveis no ZIP:\n", paste(conteudo, collapse = "\n"))
stop("Nenhum arquivo encontrado com o padrão: '", p, "'")
}
alvo <- alvo[1]
unzip(zip_path, files = alvo, exdir = destdir, junkpaths = TRUE)
file.path(destdir, basename(alvo))
})
}
# ── SAEB ──────────────────────────────────────────────────────────────────────
zip_saeb <- file.path(dir_data, paste0("saeb_", ano_saeb, ".zip"))
if (!file.exists(zip_saeb)) {
url_saeb <- paste0(
"https://download.inep.gov.br/microdados/microdados_saeb_", ano_saeb, ".zip"
)
message("Baixando microdados SAEB ", ano_saeb, " ...")
download.file(url_saeb, destfile = zip_saeb, mode = "wb")
}
caminho_aluno_5ef <- file.path(dir_raw, "TS_ALUNO_5EF.csv")
caminho_aluno_9ef <- file.path(dir_raw, "TS_ALUNO_9EF.csv")
if (!file.exists(caminho_aluno_5ef) || !file.exists(caminho_aluno_9ef)) {
extrair_do_zip(
zip_path = zip_saeb,
destdir = dir_raw,
patterns = c("TS_ALUNO_5EF\\.csv$", "TS_ALUNO_9EF\\.csv$")
)
}
# ── Censo Escolar ─────────────────────────────────────────────────────────────
zip_censo <- file.path(dir_data, paste0("censo_", ano_censo, ".zip"))
if (!file.exists(zip_censo)) {
url_censo <- paste0(
"https://download.inep.gov.br/dados_abertos/microdados_censo_escolar_",
ano_censo, ".zip"
)
message("Baixando microdados Censo Escolar ", ano_censo, " ...")
download.file(url_censo, destfile = zip_censo, mode = "wb")
}
caminho_censo <- file.path(dir_raw, "microdados_ed_basica_2023.csv")
if (!file.exists(caminho_censo)) {
extrair_do_zip(
zip_path = zip_censo,
destdir = dir_raw,
patterns = c("microdados_ed_basica.*\\.csv$")
)
}
# ── Filtros ───────────────────────────────────────────────────────────────────
# Código IBGE: Manaus = 1302603 | Belém = 1501402
municipios <- c(Manaus = 1302603L, Belem = 1501402L)
REDES_PUBLICAS <- c(2L, 3L) # Estadual + Municipal
ufs_alvo <- c(13L, 15L) # AM e PA
aluno_5ef <- fread(caminho_aluno_5ef, sep = ";", encoding = "Latin-1")
aluno_9ef <- fread(caminho_aluno_9ef, sep = ";", encoding = "Latin-1")
censo <- fread(caminho_censo, sep = ";", encoding = "Latin-1")
aluno_5ef <- aluno_5ef[ID_UF %in% ufs_alvo]
aluno_9ef <- aluno_9ef[ID_UF %in% ufs_alvo]
censo <- censo[CO_MUNICIPIO %in% municipios & TP_DEPENDENCIA %in% REDES_PUBLICAS]
dir_clean <- here("data", "clean")
if (!dir.exists(dir_clean)) dir.create(dir_clean, recursive = TRUE)
fwrite(aluno_9ef, file.path(dir_clean, "aluno_9ef_filtrado.csv"), sep = ";", bom = TRUE)
# ── IDEB por escola ───────────────────────────────────────────────────────────
ideb_ai <- as.data.table(read_xlsx(
here("data", "raw", "divulgacao_anos_iniciais_escolas_2023.xlsx"), skip = 9
))
ideb_af <- as.data.table(read_xlsx(
here("data", "raw", "divulgacao_anos_finais_escolas_2023.xlsx"), skip = 9
))
ideb_ai <- ideb_ai[CO_MUNICIPIO %in% municipios]
ideb_af <- ideb_af[CO_MUNICIPIO %in% municipios]
write_xlsx(ideb_ai, file.path(dir_clean, "ideb_anos_iniciais_2023.xlsx"))
write_xlsx(ideb_af, file.path(dir_clean, "ideb_anos_finais_2023.xlsx"))
fwrite(ideb_ai, file.path(dir_clean, "ideb_anos_iniciais_2023.csv"), sep = ";", bom = TRUE)
fwrite(ideb_af, file.path(dir_clean, "ideb_anos_finais_2023.csv"), sep = ";", bom = TRUE)
message("Download e extração concluídos. Arquivos em data/raw/ e data/clean/")Antes de qualquer transformação, exploramos os dados brutos para verificar dimensões, tipos, taxas de missing e distribuições das variáveis de interesse.
aluno_5ef <- fread(here("data", "raw", "TS_ALUNO_5EF.csv"),
sep = ";", encoding = "Latin-1")
aluno_9ef <- fread(here("data", "raw", "TS_ALUNO_9EF.csv"),
sep = ";", encoding = "Latin-1")
censo <- fread(here("data", "raw", "microdados_ed_basica_2023.csv"),
sep = ";", encoding = "Latin-1")
# Filtros do projeto
aluno_5ef <- aluno_5ef[ID_UF %in% c(13L, 15L)]
aluno_9ef <- aluno_9ef[ID_UF %in% c(13L, 15L)]
censo <- censo[CO_MUNICIPIO %in% c(1302603L, 1501402L) &
TP_DEPENDENCIA %in% c(2L, 3L)]## Rows: 193,097
## Columns: 153
## $ ID_SAEB <int> 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2…
## $ ID_REGIAO <int> 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1…
## $ ID_UF <int> 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 1…
## $ ID_MUNICIPIO <int> 6322244, 6322244, 6322244, 6322244, 6322244, 6322244, 6322244…
## $ ID_AREA <int> 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2…
## $ ID_ESCOLA <int> 61417592, 61417592, 61417592, 61417592, 61417592, 61417592, 6…
## $ IN_PUBLICA <int> 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1…
## $ ID_LOCALIZACAO <int> 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1…
## $ ID_TURMA <int> 1680768, 1680768, 1680768, 1680768, 1680768, 1680768, 1680768…
## $ ID_SERIE <int> 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9…
## $ ID_ALUNO <int> 49584102, 49584103, 49584104, 49584421, 49584422, 49584426, 4…
## $ IN_SITUACAO_CENSO <int> 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1…
## $ IN_PREENCHIMENTO_LP <int> 1, 1, 1, 0, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 0…
## $ IN_PREENCHIMENTO_MT <int> 1, 1, 1, 0, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 0…
## $ IN_PREENCHIMENTO_CH <int> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, N…
## $ IN_PREENCHIMENTO_CN <int> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, N…
## $ IN_PRESENCA_LP <int> 1, 1, 1, 0, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 0…
## $ IN_PRESENCA_MT <int> 1, 1, 1, 0, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 0…
## $ IN_PRESENCA_CH <int> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, N…
## $ IN_PRESENCA_CN <int> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, N…
## $ ID_CADERNO_LP <int> 21, 6, 4, 12, 18, 10, 16, 11, 3, 8, 5, 14, 2, 13, 15, 19, 9, …
## $ ID_BLOCO_1_LP <int> 7, 6, 4, 5, 4, 3, 2, 4, 3, 1, 5, 7, 2, 6, 1, 5, 2, 6, 1, 3, 7…
## $ ID_BLOCO_2_LP <int> 3, 7, 5, 7, 7, 5, 5, 6, 4, 3, 6, 2, 3, 1, 4, 1, 4, 2, 2, 6, 1…
## $ ID_CADERNO_MT <int> 21, 6, 4, 12, 18, 10, 16, 11, 3, 8, 5, 14, 2, 13, 15, 19, 9, …
## $ ID_BLOCO_1_MT <int> 7, 6, 4, 5, 4, 3, 2, 4, 3, 1, 5, 7, 2, 6, 1, 5, 2, 6, 1, 3, 7…
## $ ID_BLOCO_2_MT <int> 3, 7, 5, 7, 7, 5, 5, 6, 4, 3, 6, 2, 3, 1, 4, 1, 4, 2, 2, 6, 1…
## $ ID_CADERNO_CH <int> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, N…
## $ ID_BLOCO_1_CH <int> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, N…
## $ ID_BLOCO_2_CH <int> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, N…
## $ NU_BLOCO_1_ABERTA_CH <int> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, N…
## $ NU_BLOCO_2_ABERTA_CH <int> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, N…
## $ ID_CADERNO_CN <int> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, N…
## $ ID_BLOCO_1_CN <int> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, N…
## $ ID_BLOCO_2_CN <int> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, N…
## $ ID_BLOCO_3_CN <int> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, N…
## $ NU_BLOCO_1_ABERTA_CN <int> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, N…
## $ NU_BLOCO_2_ABERTA_CN <int> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, N…
## $ TX_RESP_BLOCO1_LP <chr> "CBDADCDDAABAB", "ACCCCDDDAAABD", "DBDCABCBABBCB", ".........…
## $ TX_RESP_BLOCO2_LP <chr> "DBDBACCBDDAAC", "CBABBADDBBADD", "ABBCCCADADDCA", ".........…
## $ TX_RESP_BLOCO1_MT <chr> "BDABDCADBACDC", "DBAADACDCCACC", "ACCBDDCDBDCAB", ".........…
## $ TX_RESP_BLOCO2_MT <chr> "CACBADCCCABAB", "CDABBDBDBCBBA", "DCADDDCCCACAD", ".........…
## $ TX_RESP_BLOCO1_CH <chr> "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "…
## $ TX_RESP_BLOCO2_CH <chr> "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "…
## $ CO_CONCEITO_Q1_CH <chr> "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "…
## $ CO_CONCEITO_Q2_CH <chr> "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "…
## $ TX_RESP_BLOCO1_CN <chr> "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "…
## $ TX_RESP_BLOCO2_CN <chr> "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "…
## $ TX_RESP_BLOCO3_CN <chr> "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "…
## $ CO_CONCEITO_Q1_CN <chr> "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "…
## $ CO_CONCEITO_Q2_CN <chr> "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "…
## $ IN_PROFICIENCIA_LP <int> 1, 1, 1, 0, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 0…
## $ IN_PROFICIENCIA_MT <int> 1, 1, 1, 0, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 0…
## $ IN_PROFICIENCIA_CH <int> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, N…
## $ IN_PROFICIENCIA_CN <int> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, N…
## $ IN_AMOSTRA <int> 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0…
## $ ESTRATO <int> 632224431, 632224431, 632224431, 632224431, 632224431, 632224…
## $ ESTRATO_CIENCIAS <int> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, N…
## $ PESO_ALUNO_LP <dbl> 1.117647, 1.117647, 1.117647, NA, 1.117647, 1.117647, 1.11764…
## $ PROFICIENCIA_LP <dbl> 0.664078, -0.345934, 0.268573, NA, -0.342888, -0.380394, -0.2…
## $ ERRO_PADRAO_LP <dbl> 0.344047, 0.350199, 0.303507, NA, 0.367067, 0.352434, 0.33168…
## $ PROFICIENCIA_LP_SAEB <dbl> 286.5713, 230.9263, 264.7816, NA, 231.0941, 229.0278, 237.565…
## $ ERRO_PADRAO_LP_SAEB <dbl> 18.95471, 19.29364, 16.72122, NA, 20.22295, 19.41677, 18.2736…
## $ PESO_ALUNO_MT <dbl> 1.117647, 1.117647, 1.117647, NA, 1.117647, 1.117647, 1.11764…
## $ PROFICIENCIA_MT <dbl> 0.551429, 0.860011, -0.515347, NA, -0.227114, -0.236465, -0.0…
## $ ERRO_PADRAO_MT <dbl> 0.341722, 0.327249, 0.536262, NA, 0.575194, 0.441098, 0.51522…
## $ PROFICIENCIA_MT_SAEB <dbl> 280.7850, 298.0324, 221.1604, NA, 237.2705, 236.7478, 246.930…
## $ ERRO_PADRAO_MT_SAEB <dbl> 19.09964, 18.29071, 29.97293, NA, 32.14893, 24.65399, 28.7968…
## $ PESO_ALUNO_CH <dbl> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, N…
## $ PROFICIENCIA_CH <dbl> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, N…
## $ ERRO_PADRAO_CH <dbl> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, N…
## $ PROFICIENCIA_CH_SAEB <dbl> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, N…
## $ ERRO_PADRAO_CH_SAEB <dbl> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, N…
## $ PESO_ALUNO_CN <dbl> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, N…
## $ PROFICIENCIA_CN <dbl> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, N…
## $ ERRO_PADRAO_CN <dbl> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, N…
## $ PROFICIENCIA_CN_SAEB <dbl> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, N…
## $ ERRO_PADRAO_CN_SAEB <dbl> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, N…
## $ IN_PREENCHIMENTO_QUESTIONARIO <int> 1, 1, 1, 0, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 0…
## $ IN_INSE <int> 1, 1, 1, 0, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 0…
## $ INSE_ALUNO <dbl> 3.41, 4.20, 2.50, NA, 3.38, 3.61, 3.73, 4.56, 3.46, NA, 3.48,…
## $ NU_TIPO_NIVEL_INSE <int> 2, 3, 1, 1, 2, 2, 2, 4, 2, 1, 2, 2, 2, 2, 3, 3, 1, 2, 3, 1, 1…
## $ PESO_ALUNO_INSE <dbl> 1.117647, 1.117647, 1.117647, NA, 1.117647, 1.117647, 1.11764…
## $ TX_RESP_Q01 <chr> "B", "A", "B", ".", "B", "B", "A", "A", "A", ".", "B", "A", "…
## $ TX_RESP_Q02 <chr> "F", "D", "F", ".", "F", "E", "D", "E", "C", ".", "B", "B", "…
## $ TX_RESP_Q03 <chr> "A", "A", "A", ".", "A", "A", "A", "A", "A", ".", "A", "A", "…
## $ TX_RESP_Q04 <chr> "C", "C", "A", ".", "A", "C", "C", "B", "C", ".", "C", "C", "…
## $ TX_RESP_Q05a <chr> "B", "A", "A", ".", "B", "A", "A", "A", "A", ".", "A", "A", "…
## $ TX_RESP_Q05b <chr> ".", "A", "A", ".", ".", "A", "A", "A", "A", ".", "A", "A", "…
## $ TX_RESP_Q05c <chr> ".", "A", "A", ".", ".", "A", "A", "A", "A", ".", "A", "B", "…
## $ TX_RESP_Q06 <chr> "C", "E", "E", ".", "E", "E", "B", "E", "D", ".", "D", "E", "…
## $ TX_RESP_Q07a <chr> "B", "B", "B", ".", "B", "A", "B", "A", "B", ".", "B", "B", "…
## $ TX_RESP_Q07b <chr> ".", "A", "B", ".", "B", "B", "B", "A", "B", ".", "B", "B", "…
## $ TX_RESP_Q07c <chr> ".", "A", "A", ".", ".", "A", "A", "B", "A", ".", "A", "A", "…
## $ TX_RESP_Q07d <chr> ".", "B", "A", ".", ".", "A", "A", "B", "A", ".", "A", "A", "…
## $ TX_RESP_Q07e <chr> "B", "B", "B", ".", "B", "B", "A", "A", "B", ".", "A", "B", "…
## $ TX_RESP_Q08 <chr> "B", "C", "B", ".", "B", "B", "D", "A", "B", ".", "C", "A", "…
## $ TX_RESP_Q09 <chr> ".", "B", "B", ".", "B", "C", "D", "A", "A", ".", "F", "F", "…
## $ TX_RESP_Q10a <chr> "C", "B", "A", ".", "B", "B", "B", "B", "B", ".", "B", "B", "…
## $ TX_RESP_Q10b <chr> "C", "B", "C", ".", "B", "C", "C", "C", "B", ".", "C", "C", "…
## $ TX_RESP_Q10c <chr> "C", "C", "C", ".", "C", "C", "C", "C", "B", ".", "C", "C", "…
## $ TX_RESP_Q10d <chr> "C", "B", "A", ".", "C", "C", "C", "C", "B", ".", "C", "C", "…
## $ TX_RESP_Q10e <chr> "C", "C", "C", ".", "C", "C", "C", "C", "B", ".", "C", "C", "…
## $ TX_RESP_Q10f <chr> "C", "C", "B", ".", "C", "B", "C", "C", "B", ".", "C", "B", "…
## $ TX_RESP_Q11a <chr> "B", "B", "A", ".", "B", "B", "B", "B", "A", ".", "B", "B", "…
## $ TX_RESP_Q11b <chr> "B", "B", "A", ".", "B", "B", "B", "B", "B", ".", "B", "B", "…
## $ TX_RESP_Q11c <chr> "B", "B", "B", ".", "B", "B", "B", "B", "B", ".", "B", "B", "…
## $ TX_RESP_Q12a <chr> "B", "B", "B", ".", "B", "B", "B", "B", "B", ".", "B", "B", "…
## $ TX_RESP_Q12b <chr> "A", "D", "A", ".", ".", "A", "*", "C", "A", ".", "A", "A", "…
## $ TX_RESP_Q12c <chr> "D", "D", "A", ".", "D", "D", "B", "C", "D", ".", "C", "C", "…
## $ TX_RESP_Q12d <chr> "B", "C", "B", ".", "B", "B", "B", "B", "C", ".", "B", "B", "…
## $ TX_RESP_Q12e <chr> "B", "B", "B", ".", "B", "B", "A", "C", "B", ".", "C", "C", "…
## $ TX_RESP_Q12f <chr> "A", "A", "A", ".", "A", "A", "A", "A", "A", ".", "A", "A", "…
## $ TX_RESP_Q12g <chr> "B", "D", "A", ".", "B", "B", "C", "D", "C", ".", "B", "B", "…
## $ TX_RESP_Q13a <chr> "A", "A", "A", ".", "A", "B", "A", "B", "A", ".", "A", "A", "…
## $ TX_RESP_Q13b <chr> "B", "A", "A", ".", "A", "A", "A", "B", "A", ".", "A", "A", "…
## $ TX_RESP_Q13c <chr> "B", "A", "A", ".", "B", "A", "B", "A", "B", ".", "B", "B", "…
## $ TX_RESP_Q13d <chr> "A", "A", "A", ".", "A", "B", "B", "B", "A", ".", "B", "B", "…
## $ TX_RESP_Q13e <chr> "A", "A", "A", ".", "A", "A", "A", "A", "A", ".", "A", "A", "…
## $ TX_RESP_Q13f <chr> "A", "A", "A", ".", "A", "A", "A", "A", "A", ".", "A", "B", "…
## $ TX_RESP_Q13g <chr> "B", "B", "A", ".", "B", "B", "B", "B", "B", ".", "B", "A", "…
## $ TX_RESP_Q13h <chr> "A", "B", "A", ".", "B", "A", "B", "B", "A", ".", "A", "B", "…
## $ TX_RESP_Q13i <chr> "A", "A", "A", ".", "A", "A", "A", "A", "A", ".", "A", "B", "…
## $ TX_RESP_Q14 <chr> "A", "A", "C", ".", "A", "C", "A", "A", "A", ".", "B", "A", "…
## $ TX_RESP_Q15a <chr> "A", "A", "A", ".", "A", "A", ".", "A", "A", ".", "A", "A", "…
## $ TX_RESP_Q15b <chr> "A", "B", "A", ".", "A", "A", "B", "A", "B", ".", "A", "B", "…
## $ TX_RESP_Q16 <chr> "H", "A", "A", ".", "A", "H", "A", "A", "A", ".", "A", "A", "…
## $ TX_RESP_Q17 <chr> "C", "A", "B", ".", "A", "A", "B", "C", "B", ".", "B", "A", "…
## $ TX_RESP_Q18 <chr> "A", "A", "A", ".", "A", "A", "A", "A", "A", ".", "A", "B", "…
## $ TX_RESP_Q19 <chr> "A", "A", "B", ".", "A", "C", "C", "C", "B", ".", "A", "A", "…
## $ TX_RESP_Q20 <chr> "A", "B", "B", ".", "A", "B", "A", "A", "A", ".", "A", "A", "…
## $ TX_RESP_Q21a <chr> "B", "B", "A", ".", "B", "B", "B", "C", "D", ".", "B", "C", "…
## $ TX_RESP_Q21b <chr> "B", "A", "A", ".", "B", "A", "B", "B", "D", ".", "B", "A", "…
## $ TX_RESP_Q21c <chr> "C", "A", "D", ".", "D", "B", "B", "D", "D", ".", "A", "B", "…
## $ TX_RESP_Q21d <chr> "D", "A", "A", ".", "A", "A", "A", "B", "D", ".", "C", "A", "…
## $ TX_RESP_Q21e <chr> "D", "C", "A", ".", "D", "A", "B", "D", "D", ".", "A", "B", "…
## $ TX_RESP_Q22a <chr> "C", "B", "A", ".", "B", "A", "B", "B", "C", ".", "B", "A", "…
## $ TX_RESP_Q22b <chr> "C", "B", "B", ".", "B", "C", "B", "B", "C", ".", "A", "B", "…
## $ TX_RESP_Q22c <chr> "C", "B", "B", ".", "C", "A", "C", "B", "C", ".", "D", "A", "…
## $ TX_RESP_Q22d <chr> "C", "B", "A", ".", "B", "A", "B", "B", "C", ".", "D", "A", "…
## $ TX_RESP_Q22e <chr> "C", "B", "A", ".", "C", "A", "B", "B", "C", ".", "A", "B", "…
## $ TX_RESP_Q22f <chr> "C", "D", "A", ".", "B", "A", "A", "C", "C", ".", "D", "A", "…
## $ TX_RESP_Q22g <chr> "C", "B", "A", ".", "A", "A", "A", "C", "A", ".", "A", "B", "…
## $ TX_RESP_Q22h <chr> "C", "B", "A", ".", "A", "A", "A", "A", "A", ".", "A", "C", "…
## $ TX_RESP_Q23a <chr> "B", "A", "B", ".", "B", "A", "A", "A", "A", ".", "B", "C", "…
## $ TX_RESP_Q23b <chr> "B", "A", "B", ".", "B", "A", "A", "A", "A", ".", "A", "A", "…
## $ TX_RESP_Q23c <chr> "B", "A", "A", ".", "B", "A", "B", "A", "B", ".", "B", "B", "…
## $ TX_RESP_Q23d <chr> "B", "A", "B", ".", "B", "A", "A", "A", "B", ".", "A", "A", "…
## $ TX_RESP_Q23e <chr> "B", "A", "C", ".", "B", "A", "C", "D", "B", ".", "C", "B", "…
## $ TX_RESP_Q23f <chr> "B", "A", "C", ".", "B", "A", "B", "B", "B", ".", "B", "A", "…
## $ TX_RESP_Q23g <chr> "B", "A", "B", ".", "B", "A", "A", "B", "A", ".", "B", "A", "…
## $ TX_RESP_Q23h <chr> ".", "A", "A", ".", "B", "A", "A", "A", "A", ".", "A", "C", "…
## $ TX_RESP_Q23i <chr> "B", "A", "A", ".", "B", "A", "A", "A", "A", ".", "A", "A", "…
## $ TX_RESP_Q24 <chr> "C", "C", "D", ".", "C", "A", "C", "A", "A", ".", ".", "D", "…
## Rows: 1,149
## Columns: 408
## $ NU_ANO_CENSO <int> 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, …
## $ NO_REGIAO <chr> "Norte", "Norte", "Norte", "Norte", "Norte", "Norte", "Norte…
## $ CO_REGIAO <int> 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, …
## $ NO_UF <chr> "Amazonas", "Amazonas", "Amazonas", "Amazonas", "Amazonas", …
## $ SG_UF <chr> "AM", "AM", "AM", "AM", "AM", "AM", "AM", "AM", "AM", "AM", …
## $ CO_UF <int> 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, …
## $ NO_MUNICIPIO <chr> "Manaus", "Manaus", "Manaus", "Manaus", "Manaus", "Manaus", …
## $ CO_MUNICIPIO <int> 1302603, 1302603, 1302603, 1302603, 1302603, 1302603, 130260…
## $ NO_REGIAO_GEOG_INTERM <chr> "Manaus", "Manaus", "Manaus", "Manaus", "Manaus", "Manaus", …
## $ CO_REGIAO_GEOG_INTERM <int> 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, …
## $ NO_REGIAO_GEOG_IMED <chr> "Manaus", "Manaus", "Manaus", "Manaus", "Manaus", "Manaus", …
## $ CO_REGIAO_GEOG_IMED <int> 130001, 130001, 130001, 130001, 130001, 130001, 130001, 1300…
## $ NO_MESORREGIAO <chr> "Centro Amazonense", "Centro Amazonense", "Centro Amazonense…
## $ CO_MESORREGIAO <int> 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, 1303, …
## $ NO_MICRORREGIAO <chr> "Manaus", "Manaus", "Manaus", "Manaus", "Manaus", "Manaus", …
## $ CO_MICRORREGIAO <int> 13007, 13007, 13007, 13007, 13007, 13007, 13007, 13007, 1300…
## $ CO_DISTRITO <int> 130260305, 130260305, 130260305, 130260305, 130260305, 13026…
## $ NO_ENTIDADE <chr> "CEJA PROF AGENOR FERREIRA LIMA", "CMEI HUMBERTO DE ALENCAR …
## $ CO_ENTIDADE <int> 13025104, 13025120, 13025180, 13025562, 13025570, 13025767, …
## $ TP_DEPENDENCIA <int> 2, 3, 3, 3, 3, 2, 3, 3, 3, 3, 2, 2, 2, 3, 3, 3, 3, 3, 3, 3, …
## $ TP_CATEGORIA_ESCOLA_PRIVADA <int> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, …
## $ TP_LOCALIZACAO <int> 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, …
## $ TP_LOCALIZACAO_DIFERENCIADA <int> 0, 0, 0, 0, 0, 0, 0, NA, 0, 0, 0, 0, 0, 0, 0, 0, 0, NA, 0, 0…
## $ DS_ENDERECO <chr> "AV ANDRE ARAUJO", "R. 22", "R. BELO HORIZONTE", "R. A-10", …
## $ NU_ENDERECO <chr> "99", "S/N", "S/N", "S/N", "S/N", "69", "575", "S/N", "S/N",…
## $ DS_COMPLEMENTO <chr> "", "CONJUNTO CASTELO BRA", "", "CONJ. AJURICABA", "N S DAS …
## $ NO_BAIRRO <chr> "ALEIXO", "PARQUE 10 DE NOVEMBRO", "COMPENSA", "ALVORADA", "…
## $ CO_CEP <int> 69060000, 69055400, 69035100, 69046120, 69053035, 69059420, …
## $ NU_DDD <int> 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, NA, 92, 92, 92, 92, …
## $ NU_TELEFONE <int> 32169619, 32364787, 36252639, 32147044, 35846404, 993463259,…
## $ TP_SITUACAO_FUNCIONAMENTO <int> 1, 1, 1, 1, 1, 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 1, 1, …
## $ CO_ORGAO_REGIONAL <chr> "00004", "00004", "00002", "00005", "00004", "00003", "00002…
## $ DT_ANO_LETIVO_INICIO <chr> "06FEB23:00:00:00", "06FEB23:00:00:00", "06FEB23:00:00:00", …
## $ DT_ANO_LETIVO_TERMINO <chr> "20DEC23:00:00:00", "21DEC23:00:00:00", "19DEC23:00:00:00", …
## $ IN_VINCULO_SECRETARIA_EDUCACAO <int> 1, 1, 1, 1, 1, 1, 1, NA, 1, 1, 1, 1, 1, 1, 1, 1, 1, NA, 1, 1…
## $ IN_VINCULO_SEGURANCA_PUBLICA <int> 0, 0, 0, 0, 0, 0, 0, NA, 0, 0, 0, 0, 1, 0, 0, 0, 0, NA, 0, 0…
## $ IN_VINCULO_SECRETARIA_SAUDE <int> 0, 0, 0, 0, 0, 0, 0, NA, 0, 0, 0, 0, 0, 0, 0, 0, 0, NA, 0, 0…
## $ IN_VINCULO_OUTRO_ORGAO <int> 0, 0, 0, 0, 0, 0, 0, NA, 0, 0, 0, 0, 0, 0, 0, 0, 0, NA, 0, 0…
## $ IN_PODER_PUBLICO_PARCERIA <int> 0, 0, 0, 0, 0, 0, 0, NA, 0, 0, 0, 0, 0, 0, 0, 0, 0, NA, 0, 0…
## $ TP_PODER_PUBLICO_PARCERIA <int> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, …
## $ IN_FORMA_CONT_TERMO_COLABORA <int> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, …
## $ IN_FORMA_CONT_TERMO_FOMENTO <int> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, …
## $ IN_FORMA_CONT_ACORDO_COOP <int> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, …
## $ IN_FORMA_CONT_PRESTACAO_SERV <int> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, …
## $ IN_FORMA_CONT_COOP_TEC_FIN <int> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, …
## $ IN_FORMA_CONT_CONSORCIO_PUB <int> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, …
## $ IN_FORMA_CONT_MU_TERMO_COLAB <int> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, …
## $ IN_FORMA_CONT_MU_TERMO_FOMENTO <int> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, …
## $ IN_FORMA_CONT_MU_ACORDO_COOP <int> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, …
## $ IN_FORMA_CONT_MU_PREST_SERV <int> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, …
## $ IN_FORMA_CONT_MU_COOP_TEC_FIN <int> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, …
## $ IN_FORMA_CONT_MU_CONSORCIO_PUB <int> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, …
## $ IN_FORMA_CONT_ES_TERMO_COLAB <int> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, …
## $ IN_FORMA_CONT_ES_TERMO_FOMENTO <int> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, …
## $ IN_FORMA_CONT_ES_ACORDO_COOP <int> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, …
## $ IN_FORMA_CONT_ES_PREST_SERV <int> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, …
## $ IN_FORMA_CONT_ES_COOP_TEC_FIN <int> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, …
## $ IN_FORMA_CONT_ES_CONSORCIO_PUB <int> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, …
## $ IN_MANT_ESCOLA_PRIVADA_EMP <int> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, …
## $ IN_MANT_ESCOLA_PRIVADA_ONG <int> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, …
## $ IN_MANT_ESCOLA_PRIVADA_OSCIP <int> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, …
## $ IN_MANT_ESCOLA_PRIV_ONG_OSCIP <int> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, …
## $ IN_MANT_ESCOLA_PRIVADA_SIND <int> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, …
## $ IN_MANT_ESCOLA_PRIVADA_SIST_S <int> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, …
## $ IN_MANT_ESCOLA_PRIVADA_S_FINS <int> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, …
## $ NU_CNPJ_ESCOLA_PRIVADA <int64> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA…
## $ NU_CNPJ_MANTENEDORA <int64> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA…
## $ TP_REGULAMENTACAO <int> 1, 1, 1, 1, 1, 1, 1, NA, 1, 1, 1, 1, 1, 1, 1, 1, 1, NA, 1, 1…
## $ TP_RESPONSAVEL_REGULAMENTACAO <int> 2, 3, 3, 3, 3, 2, 3, NA, 3, 3, 2, 2, 2, 3, 3, 3, 3, NA, 3, 3…
## $ CO_ESCOLA_SEDE_VINCULADA <int> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, …
## $ CO_IES_OFERTANTE <int> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, …
## $ IN_LOCAL_FUNC_PREDIO_ESCOLAR <int> 1, 1, 1, 1, 1, 1, 1, NA, 1, 1, 1, 1, 1, 1, 1, 1, 1, NA, 1, 1…
## $ TP_OCUPACAO_PREDIO_ESCOLAR <int> 2, 1, 1, 3, 1, 1, 2, NA, 1, 1, 1, 1, 2, 3, 1, 1, 1, NA, 1, 1…
## $ IN_LOCAL_FUNC_SOCIOEDUCATIVO <int> 0, 0, 0, 0, 0, 0, 0, NA, 0, 0, 0, 0, 0, 0, 0, 0, 0, NA, 0, 0…
## $ IN_LOCAL_FUNC_UNID_PRISIONAL <int> 0, 0, 0, 0, 0, 0, 0, NA, 0, 0, 0, 0, 0, 0, 0, 0, 0, NA, 0, 0…
## $ IN_LOCAL_FUNC_PRISIONAL_SOCIO <int> 0, 0, 0, 0, 0, 0, 0, NA, 0, 0, 0, 0, 0, 0, 0, 0, 0, NA, 0, 0…
## $ IN_LOCAL_FUNC_GALPAO <int> 0, 0, 0, 0, 0, 0, 0, NA, 0, 0, 0, 0, 0, 0, 0, 0, 0, NA, 0, 0…
## $ TP_OCUPACAO_GALPAO <int> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, …
## $ IN_LOCAL_FUNC_SALAS_OUTRA_ESC <int> 0, 0, 0, 0, 0, 0, 0, NA, 0, 0, 0, 0, 0, 0, 0, 0, 0, NA, 0, 0…
## $ IN_LOCAL_FUNC_OUTROS <int> 0, 0, 0, 0, 0, 0, 0, NA, 0, 0, 0, 0, 0, 0, 0, 0, 0, NA, 0, 0…
## $ IN_PREDIO_COMPARTILHADO <int> 0, 0, 0, 0, 0, 0, 0, NA, 0, 0, 0, 0, 0, 0, 0, 0, 0, NA, 0, 0…
## $ IN_AGUA_POTAVEL <int> 1, 1, 1, 1, 1, 1, 1, NA, 1, 1, 1, 1, 1, 1, 1, 1, 1, NA, 1, 1…
## $ IN_AGUA_REDE_PUBLICA <int> 1, 1, 1, 0, 0, 1, 1, NA, 1, 0, 1, 0, 1, 1, 1, 0, 1, NA, 0, 0…
## $ IN_AGUA_POCO_ARTESIANO <int> 1, 0, 0, 1, 1, 1, 0, NA, 1, 1, 1, 1, 1, 1, 1, 1, 0, NA, 1, 1…
## $ IN_AGUA_CACIMBA <int> 0, 0, 0, 0, 0, 0, 0, NA, 0, 0, 0, 0, 0, 0, 0, 0, 0, NA, 0, 0…
## $ IN_AGUA_FONTE_RIO <int> 0, 0, 0, 0, 0, 0, 0, NA, 0, 0, 0, 0, 0, 0, 0, 0, 0, NA, 0, 0…
## $ IN_AGUA_INEXISTENTE <int> 0, 0, 0, 0, 0, 0, 0, NA, 0, 0, 0, 0, 0, 0, 0, 0, 0, NA, 0, 0…
## $ IN_ENERGIA_REDE_PUBLICA <int> 1, 1, 1, 1, 1, 1, 1, NA, 1, 1, 1, 1, 1, 1, 1, 1, 1, NA, 1, 1…
## $ IN_ENERGIA_GERADOR_FOSSIL <int> 0, 0, 0, 0, 0, 0, 0, NA, 0, 0, 0, 0, 0, 0, 0, 0, 0, NA, 0, 0…
## $ IN_ENERGIA_RENOVAVEL <int> 0, 0, 0, 0, 0, 0, 0, NA, 0, 0, 0, 0, 0, 0, 0, 0, 0, NA, 0, 0…
## $ IN_ENERGIA_INEXISTENTE <int> 0, 0, 0, 0, 0, 0, 0, NA, 0, 0, 0, 0, 0, 0, 0, 0, 0, NA, 0, 0…
## $ IN_ESGOTO_REDE_PUBLICA <int> 1, 1, 0, 0, 0, 0, 1, NA, 0, 0, 0, 1, 0, 0, 0, 0, 0, NA, 0, 1…
## $ IN_ESGOTO_FOSSA_SEPTICA <int> 0, 0, 1, 1, 1, 1, 0, NA, 1, 1, 1, 0, 1, 1, 1, 1, 1, NA, 1, 0…
## $ IN_ESGOTO_FOSSA_COMUM <int> 0, 0, 0, 0, 0, 0, 0, NA, 0, 0, 0, 0, 0, 0, 0, 0, 0, NA, 0, 0…
## $ IN_ESGOTO_FOSSA <int> 0, 0, 1, 1, 1, 1, 0, NA, 1, 1, 1, 0, 1, 1, 1, 1, 1, NA, 1, 0…
## $ IN_ESGOTO_INEXISTENTE <int> 0, 0, 0, 0, 0, 0, 0, NA, 0, 0, 0, 0, 0, 0, 0, 0, 0, NA, 0, 0…
## $ IN_LIXO_SERVICO_COLETA <int> 1, 1, 1, 1, 1, 1, 1, NA, 1, 1, 1, 1, 1, 1, 1, 1, 1, NA, 1, 1…
## $ IN_LIXO_QUEIMA <int> 0, 0, 0, 0, 0, 0, 0, NA, 0, 0, 0, 0, 0, 0, 0, 0, 0, NA, 0, 0…
## $ IN_LIXO_ENTERRA <int> 0, 0, 0, 0, 0, 0, 0, NA, 0, 0, 0, 0, 0, 0, 0, 0, 0, NA, 0, 0…
## $ IN_LIXO_DESTINO_FINAL_PUBLICO <int> 0, 0, 0, 0, 0, 0, 0, NA, 0, 0, 0, 0, 0, 0, 0, 0, 0, NA, 0, 0…
## $ IN_LIXO_DESCARTA_OUTRA_AREA <int> 0, 0, 0, 0, 0, 0, 0, NA, 0, 0, 0, 0, 0, 0, 0, 0, 0, NA, 0, 0…
## $ IN_TRATAMENTO_LIXO_SEPARACAO <int> 0, 0, 0, 0, 0, 0, 0, NA, 0, 0, 0, 0, 0, 0, 0, 0, 0, NA, 0, 0…
## $ IN_TRATAMENTO_LIXO_REUTILIZA <int> 0, 0, 0, 0, 0, 0, 0, NA, 0, 0, 0, 0, 0, 0, 0, 0, 0, NA, 0, 0…
## $ IN_TRATAMENTO_LIXO_RECICLAGEM <int> 0, 0, 0, 0, 0, 0, 0, NA, 0, 0, 0, 0, 0, 0, 0, 0, 0, NA, 0, 0…
## $ IN_TRATAMENTO_LIXO_INEXISTENTE <int> 1, 1, 1, 1, 1, 1, 1, NA, 1, 1, 1, 1, 1, 1, 1, 1, 1, NA, 1, 1…
## $ IN_ALMOXARIFADO <int> 0, 1, 1, 1, 1, 0, 1, NA, 1, 1, 0, 0, 1, 1, 1, 0, 0, NA, 1, 1…
## $ IN_AREA_VERDE <int> 0, 1, 0, 0, 0, 0, 0, NA, 0, 0, 0, 0, 0, 0, 0, 1, 0, NA, 1, 1…
## $ IN_AUDITORIO <int> 0, 0, 0, 0, 0, 1, 0, NA, 0, 0, 0, 1, 0, 0, 0, 0, 0, NA, 0, 1…
## $ IN_BANHEIRO <int> 1, 1, 1, 1, 1, 1, 1, NA, 1, 1, 1, 1, 1, 1, 1, 1, 1, NA, 1, 1…
## $ IN_BANHEIRO_EI <int> 0, 1, 0, 0, 0, 0, 0, NA, 0, 1, 0, 0, 0, 0, 1, 1, 1, NA, 1, 1…
## $ IN_BANHEIRO_PNE <int> 0, 0, 0, 0, 1, 1, 0, NA, 1, 1, 0, 0, 1, 0, 1, 1, 0, NA, 0, 1…
## $ IN_BANHEIRO_FUNCIONARIOS <int> 1, 1, 1, 1, 1, 1, 1, NA, 1, 1, 1, 1, 1, 1, 1, 1, 1, NA, 1, 1…
## $ IN_BANHEIRO_CHUVEIRO <int> 0, 0, 0, 0, 1, 0, 0, NA, 0, 0, 0, 0, 1, 1, 1, 1, 0, NA, 0, 1…
## $ IN_BIBLIOTECA <int> 0, 1, 1, 1, 1, 1, 0, NA, 0, 1, 0, 1, 1, 0, 0, 0, 0, NA, 0, 1…
## $ IN_BIBLIOTECA_SALA_LEITURA <int> 0, 1, 1, 1, 1, 1, 1, NA, 1, 1, 0, 1, 1, 1, 0, 0, 0, NA, 0, 1…
## $ IN_COZINHA <int> 0, 1, 1, 1, 1, 1, 1, NA, 1, 1, 1, 1, 1, 1, 1, 1, 1, NA, 1, 1…
## $ IN_DESPENSA <int> 0, 1, 1, 0, 1, 0, 1, NA, 1, 1, 0, 0, 1, 1, 1, 1, 0, NA, 1, 0…
## $ IN_DORMITORIO_ALUNO <int> 0, 0, 0, 0, 0, 0, 0, NA, 0, 0, 0, 0, 0, 0, 0, 0, 0, NA, 0, 0…
## $ IN_DORMITORIO_PROFESSOR <int> 0, 0, 0, 0, 0, 0, 0, NA, 0, 0, 0, 0, 0, 0, 0, 0, 0, NA, 0, 0…
## $ IN_LABORATORIO_CIENCIAS <int> 0, 0, 0, 0, 0, 1, 0, NA, 0, 0, 0, 1, 1, 0, 0, 0, 0, NA, 0, 0…
## $ IN_LABORATORIO_INFORMATICA <int> 0, 0, 1, 1, 1, 0, 0, NA, 1, 1, 1, 0, 1, 0, 0, 0, 1, NA, 0, 1…
## $ IN_LABORATORIO_EDUC_PROF <int> 0, 0, 0, 0, 0, 0, 0, NA, 0, 0, 0, 0, 0, 0, 0, 0, 0, NA, 0, 0…
## $ IN_PATIO_COBERTO <int> 0, 0, 0, 1, 1, 0, 1, NA, 0, 1, 0, 0, 1, 1, 1, 0, 0, NA, 1, 0…
## $ IN_PATIO_DESCOBERTO <int> 0, 0, 0, 0, 0, 0, 0, NA, 0, 0, 0, 0, 0, 0, 0, 0, 0, NA, 0, 1…
## $ IN_PARQUE_INFANTIL <int> 0, 1, 0, 0, 0, 0, 0, NA, 0, 1, 0, 0, 0, 0, 1, 0, 1, NA, 1, 0…
## $ IN_PISCINA <int> 0, 0, 0, 0, 0, 0, 0, NA, 0, 0, 0, 0, 0, 0, 0, 0, 0, NA, 0, 0…
## $ IN_QUADRA_ESPORTES <int> 0, 0, 1, 0, 0, 1, 0, NA, 0, 0, 0, 1, 1, 0, 0, 0, 0, NA, 0, 1…
## $ IN_QUADRA_ESPORTES_COBERTA <int> 0, 0, 1, 0, 0, 1, 0, NA, 0, 0, 0, 1, 1, 0, 0, 0, 0, NA, 0, 1…
## $ IN_QUADRA_ESPORTES_DESCOBERTA <int> 0, 0, 0, 0, 0, 1, 0, NA, 0, 0, 0, 0, 0, 0, 0, 0, 0, NA, 0, 0…
## $ IN_REFEITORIO <int> 0, 1, 1, 1, 1, 0, 0, NA, 1, 1, 1, 0, 1, 1, 1, 1, 1, NA, 1, 1…
## $ IN_SALA_ATELIE_ARTES <int> 0, 0, 0, 0, 0, 0, 0, NA, 0, 0, 0, 0, 0, 0, 0, 0, 0, NA, 0, 0…
## $ IN_SALA_MUSICA_CORAL <int> 0, 0, 0, 0, 0, 0, 0, NA, 0, 0, 0, 0, 0, 0, 0, 0, 0, NA, 0, 0…
## $ IN_SALA_ESTUDIO_DANCA <int> 0, 0, 0, 0, 0, 0, 0, NA, 0, 0, 0, 0, 0, 0, 0, 0, 0, NA, 0, 0…
## $ IN_SALA_MULTIUSO <int> 0, 0, 0, 0, 0, 0, 0, NA, 0, 0, 0, 0, 0, 0, 0, 0, 0, NA, 0, 0…
## $ IN_SALA_ESTUDIO_GRAVACAO <int> 0, 0, 0, 0, 0, 0, 0, NA, 0, 0, 0, 0, 0, 0, 0, 0, 0, NA, 0, 0…
## $ IN_SALA_OFICINAS_EDUC_PROF <int> 0, 0, 0, 0, 0, 0, 0, NA, 0, 0, 0, 0, 0, 0, 0, 0, 0, NA, 0, 0…
## $ IN_SALA_DIRETORIA <int> 1, 1, 1, 1, 0, 1, 1, NA, 1, 0, 1, 1, 1, 1, 1, 1, 1, NA, 1, 1…
## $ IN_SALA_LEITURA <int> 0, 0, 0, 0, 0, 0, 1, NA, 1, 0, 0, 0, 1, 1, 0, 0, 0, NA, 0, 0…
## $ IN_SALA_PROFESSOR <int> 1, 1, 1, 1, 1, 1, 1, NA, 1, 0, 1, 1, 1, 1, 1, 0, 0, NA, 1, 1…
## $ IN_SALA_REPOUSO_ALUNO <int> 0, 0, 0, 0, 0, 0, 0, NA, 0, 0, 0, 0, 0, 0, 0, 0, 0, NA, 0, 0…
## $ IN_SECRETARIA <int> 1, 1, 1, 1, 1, 1, 1, NA, 1, 1, 1, 1, 1, 1, 1, 1, 1, NA, 1, 1…
## $ IN_SALA_ATENDIMENTO_ESPECIAL <int> 1, 1, 1, 1, 0, 0, 1, NA, 0, 1, 1, 1, 0, 0, 0, 1, 0, NA, 0, 1…
## $ IN_TERREIRAO <int> 0, 0, 0, 0, 0, 0, 0, NA, 0, 0, 0, 0, 0, 0, 0, 0, 0, NA, 0, 0…
## $ IN_VIVEIRO <int> 0, 0, 0, 0, 0, 0, 0, NA, 0, 0, 0, 0, 0, 0, 0, 0, 0, NA, 0, 0…
## $ IN_DEPENDENCIAS_OUTRAS <int> 0, 0, 0, 0, 0, 0, 0, NA, 0, 0, 0, 0, 0, 0, 0, 0, 0, NA, 0, 0…
## $ IN_ACESSIBILIDADE_CORRIMAO <int> 0, 0, 0, 0, 0, 1, 0, NA, 0, 1, 0, 0, 1, 0, 0, 0, 0, NA, 0, 0…
## $ IN_ACESSIBILIDADE_ELEVADOR <int> 1, 0, 0, 0, 0, 0, 0, NA, 0, 0, 0, 0, 1, 0, 0, 0, 0, NA, 0, 0…
## $ IN_ACESSIBILIDADE_PISOS_TATEIS <int> 0, 0, 0, 0, 1, 0, 1, NA, 0, 0, 0, 1, 0, 0, 0, 0, 0, NA, 0, 1…
## $ IN_ACESSIBILIDADE_VAO_LIVRE <int> 0, 0, 0, 0, 1, 0, 0, NA, 0, 0, 0, 0, 1, 0, 0, 0, 0, NA, 0, 0…
## $ IN_ACESSIBILIDADE_RAMPAS <int> 0, 1, 0, 0, 0, 1, 0, NA, 1, 1, 0, 0, 1, 0, 1, 1, 0, NA, 0, 0…
## $ IN_ACESSIBILIDADE_SINAL_SONORO <int> 0, 0, 0, 0, 0, 0, 0, NA, 0, 0, 0, 1, 1, 0, 0, 0, 0, NA, 0, 0…
## $ IN_ACESSIBILIDADE_SINAL_TATIL <int> 0, 0, 0, 0, 0, 0, 0, NA, 0, 0, 0, 0, 0, 0, 0, 1, 0, NA, 0, 0…
## $ IN_ACESSIBILIDADE_SINAL_VISUAL <int> 0, 0, 0, 0, 0, 0, 0, NA, 0, 0, 0, 0, 0, 0, 0, 0, 1, NA, 0, 0…
## $ IN_ACESSIBILIDADE_INEXISTENTE <int> 0, 0, 1, 1, 0, 0, 0, NA, 0, 0, 1, 0, 0, 1, 0, 0, 0, NA, 1, 0…
## $ QT_SALAS_UTILIZADAS_DENTRO <int> 20, 9, 10, 9, 9, 16, 10, NA, 10, 12, 15, 20, 47, 10, 7, 10, …
## $ QT_SALAS_UTILIZADAS_FORA <int> 0, 0, 0, 0, 0, 0, 0, NA, 0, 0, 0, 0, 0, 0, 0, 0, 0, NA, 0, 0…
## $ QT_SALAS_UTILIZADAS <int> 20, 9, 10, 9, 9, 16, 10, NA, 10, 12, 15, 20, 47, 10, 7, 10, …
## $ QT_SALAS_UTILIZA_CLIMATIZADAS <int> 20, 9, 10, 9, 9, 16, 10, NA, 10, 12, 15, 20, 47, 10, 7, 10, …
## $ QT_SALAS_UTILIZADAS_ACESSIVEIS <int> 0, 0, 0, 0, 0, 0, 0, NA, 0, 0, 0, 0, 0, 0, 0, 0, 0, NA, 0, 0…
## $ IN_EQUIP_PARABOLICA <int> 0, 0, 0, 0, 0, 0, 0, NA, 0, 0, 0, 0, 0, 0, 0, 0, 0, NA, 0, 0…
## $ IN_COMPUTADOR <int> 0, 1, 1, 1, 1, 1, 1, NA, 1, 1, 1, 0, 1, 1, 1, 1, 1, NA, 1, 1…
## $ IN_EQUIP_COPIADORA <int> 0, 1, 0, 0, 0, 0, 0, NA, 0, 0, 1, 0, 1, 0, 1, 0, 0, NA, 0, 0…
## $ IN_EQUIP_IMPRESSORA <int> 1, 1, 1, 1, 1, 1, 1, NA, 1, 1, 1, 1, 1, 1, 1, 1, 1, NA, 1, 1…
## $ IN_EQUIP_IMPRESSORA_MULT <int> 0, 1, 0, 0, 1, 1, 0, NA, 1, 0, 0, 0, 1, 1, 1, 1, 0, NA, 0, 0…
## $ IN_EQUIP_SCANNER <int> 0, 0, 0, 0, 0, 1, 0, NA, 0, 0, 0, 0, 1, 0, 0, 0, 0, NA, 0, 0…
## $ IN_EQUIP_NENHUM <int> 0, 0, 0, 0, 0, 0, 0, NA, 0, 0, 0, 0, 0, 0, 0, 0, 0, NA, 0, 0…
## $ IN_EQUIP_DVD <int> 0, 1, 0, 1, 1, 1, 0, NA, 1, 0, 0, 1, 1, 0, 1, 0, 1, NA, 0, 0…
## $ QT_EQUIP_DVD <int> 0, 1, 0, 2, 2, 1, 0, NA, 3, 0, 0, 2, 1, 0, 1, 0, 1, NA, 0, 0…
## $ IN_EQUIP_SOM <int> 0, 0, 0, 1, 1, 1, 0, NA, 1, 0, 1, 1, 1, 1, 1, 0, 1, NA, 1, 1…
## $ QT_EQUIP_SOM <int> 0, 0, 0, 3, 4, 1, 0, NA, 1, 0, 1, 2, 3, 2, 5, 0, 1, NA, 3, 1…
## $ IN_EQUIP_TV <int> 1, 1, 1, 1, 1, 1, 1, NA, 1, 1, 1, 1, 1, 1, 1, 1, 1, NA, 1, 1…
## $ QT_EQUIP_TV <int> 2, 1, 2, 7, 2, 3, 4, NA, 6, 14, 1, 2, 4, 2, 1, 6, 3, NA, 5, …
## $ IN_EQUIP_LOUSA_DIGITAL <int> 0, 0, 0, 0, 0, 0, 0, NA, 0, 0, 0, 0, 1, 0, 0, 0, 0, NA, 0, 0…
## $ QT_EQUIP_LOUSA_DIGITAL <int> 0, 0, 0, 0, 0, 0, 0, NA, 0, 0, 0, 0, 1, 0, 0, 0, 0, NA, 0, 0…
## $ IN_EQUIP_MULTIMIDIA <int> 0, 1, 1, 1, 1, 1, 1, NA, 1, 1, 1, 1, 1, 1, 1, 1, 1, NA, 1, 1…
## $ QT_EQUIP_MULTIMIDIA <int> 0, 1, 1, 2, 2, 3, 4, NA, 5, 3, 5, 4, 19, 1, 1, 1, 1, NA, 2, …
## $ IN_DESKTOP_ALUNO <int> 0, 0, 1, 1, 1, 1, 0, NA, 1, 1, 1, 0, 1, 0, 0, 0, 1, NA, 0, 1…
## $ QT_DESKTOP_ALUNO <int> 0, 0, 11, 3, 4, 2, 0, NA, 11, 5, 6, 0, 2, 0, 0, 0, 1, NA, 0,…
## $ IN_COMP_PORTATIL_ALUNO <int> 0, 0, 0, 1, 1, 1, 0, NA, 0, 1, 0, 0, 0, 0, 0, 0, 1, NA, 0, 1…
## $ QT_COMP_PORTATIL_ALUNO <int> 0, 0, 0, 14, 16, 2, 0, NA, 0, 3, 0, 0, 0, 0, 0, 0, 1, NA, 0,…
## $ IN_TABLET_ALUNO <int> 0, 1, 0, 1, 0, 1, 1, NA, 1, 1, 1, 0, 0, 1, 1, 1, 1, NA, 1, 1…
## $ QT_TABLET_ALUNO <int> 0, 48, 0, 11, 0, 100, 60, NA, 34, 30, 15, 0, 0, 30, 30, 30, …
## $ IN_INTERNET <int> 1, 1, 1, 1, 1, 1, 1, NA, 1, 1, 1, 1, 1, 1, 1, 1, 1, NA, 1, 1…
## $ IN_INTERNET_ALUNOS <int> 1, 1, 1, 1, 1, 1, 1, NA, 1, 1, 1, 0, 0, 1, 1, 0, 1, NA, 1, 0…
## $ IN_INTERNET_ADMINISTRATIVO <int> 1, 1, 1, 1, 1, 1, 1, NA, 1, 1, 1, 1, 1, 1, 1, 1, 1, NA, 1, 1…
## $ IN_INTERNET_APRENDIZAGEM <int> 0, 1, 0, 0, 1, 1, 1, NA, 1, 1, 1, 1, 0, 1, 1, 1, 1, NA, 1, 0…
## $ IN_INTERNET_COMUNIDADE <int> 0, 0, 0, 0, 0, 0, 0, NA, 1, 0, 0, 0, 0, 0, 0, 0, 1, NA, 0, 0…
## $ IN_ACESSO_INTERNET_COMPUTADOR <int> 9, 1, 1, 1, 1, 0, 1, NA, 1, 1, 1, 0, 0, 1, 1, 0, 1, NA, 1, 0…
## $ IN_ACES_INTERNET_DISP_PESSOAIS <int> 9, 0, 0, 0, 0, 1, 0, NA, 0, 0, 1, 0, 0, 0, 0, 0, 0, NA, 0, 0…
## $ TP_REDE_LOCAL <int> 0, 1, 3, 3, 3, 3, 1, NA, 3, 1, 3, 9, 1, 3, 1, 1, 1, NA, 1, 3…
## $ IN_BANDA_LARGA <int> 1, 1, 1, 1, 1, 0, 1, NA, 1, 1, 1, 1, 1, 1, 1, 1, 1, NA, 1, 1…
## $ IN_PROF_ADMINISTRATIVOS <int> 1, 1, 1, 1, 0, 1, 0, NA, 1, 1, 1, 1, 1, 0, 0, 1, 1, NA, 1, 1…
## $ QT_PROF_ADMINISTRATIVOS <int> 5, 1, 1, 1, 0, 1, 0, NA, 1, 4, 5, 3, 7, 0, 0, 3, 2, NA, 2, 4…
## $ IN_PROF_SERVICOS_GERAIS <int> 1, 1, 1, 1, 1, 1, 1, NA, 1, 1, 1, 1, 1, 1, 1, 1, 0, NA, 1, 0…
## $ QT_PROF_SERVICOS_GERAIS <int> 5, 3, 1, 1, 2, 12, 3, NA, 4, 4, 2, 3, 16, 5, 2, 5, 0, NA, 2,…
## $ IN_PROF_BIBLIOTECARIO <int> 1, 1, 0, 1, 1, 1, 1, NA, 0, 1, 1, 1, 1, 0, 0, 0, 0, NA, 0, 1…
## $ QT_PROF_BIBLIOTECARIO <int> 2, 2, 0, 1, 1, 4, 2, NA, 0, 2, 2, 2, 3, 0, 0, 0, 0, NA, 0, 1…
## $ IN_PROF_SAUDE <int> 0, 1, 0, 0, 0, 0, 0, NA, 0, 1, 0, 0, 0, 0, 0, 1, 0, NA, 0, 0…
## $ QT_PROF_SAUDE <int> 0, 2, 0, 0, 0, 0, 0, NA, 0, 1, 0, 0, 0, 0, 0, 1, 0, NA, 0, 0…
## $ IN_PROF_COORDENADOR <int> 0, 0, 0, 0, 0, 0, 0, NA, 0, 0, 0, 0, 0, 0, 1, 0, 0, NA, 0, 0…
## $ QT_PROF_COORDENADOR <int> 0, 0, 0, 0, 0, 0, 0, NA, 0, 0, 0, 0, 0, 0, 1, 0, 0, NA, 0, 0…
## $ IN_PROF_FONAUDIOLOGO <int> 0, 0, 0, 0, 0, 0, 0, NA, 0, 0, 0, 0, 0, 0, 0, 0, 0, NA, 0, 0…
## $ QT_PROF_FONAUDIOLOGO <int> 0, 0, 0, 0, 0, 0, 0, NA, 0, 0, 0, 0, 0, 0, 0, 0, 0, NA, 0, 0…
## $ IN_PROF_NUTRICIONISTA <int> 0, 0, 0, 0, 0, 0, 0, NA, 0, 0, 0, 0, 0, 0, 0, 0, 0, NA, 0, 0…
## $ QT_PROF_NUTRICIONISTA <int> 0, 0, 0, 0, 0, 0, 0, NA, 0, 0, 0, 0, 0, 0, 0, 0, 0, NA, 0, 0…
## $ IN_PROF_PSICOLOGO <int> 0, 0, 0, 0, 0, 0, 0, NA, 0, 0, 0, 0, 0, 0, 0, 0, 0, NA, 0, 0…
## $ QT_PROF_PSICOLOGO <int> 0, 0, 0, 0, 0, 0, 0, NA, 0, 0, 0, 0, 0, 0, 0, 0, 0, NA, 0, 0…
## $ IN_PROF_ALIMENTACAO <int> 0, 1, 0, 0, 1, 1, 1, NA, 1, 0, 0, 1, 1, 1, 1, 1, 0, NA, 1, 0…
## $ QT_PROF_ALIMENTACAO <int> 0, 2, 0, 0, 1, 9, 2, NA, 2, 0, 0, 6, 13, 2, 2, 2, 0, NA, 1, …
## $ IN_PROF_PEDAGOGIA <int> 0, 1, 1, 1, 1, 1, 1, NA, 1, 1, 0, 0, 1, 0, 1, 1, 0, NA, 1, 0…
## $ QT_PROF_PEDAGOGIA <int> 0, 2, 2, 1, 1, 2, 1, NA, 2, 2, 0, 0, 5, 0, 1, 2, 0, NA, 1, 0…
## $ IN_PROF_SECRETARIO <int> 1, 1, 1, 0, 1, 1, 1, NA, 1, 1, 1, 1, 1, 1, 1, 1, 0, NA, 0, 1…
## $ QT_PROF_SECRETARIO <int> 1, 1, 1, 0, 1, 1, 1, NA, 1, 1, 1, 1, 1, 1, 1, 1, 0, NA, 0, 1…
## $ IN_PROF_SEGURANCA <int> 1, 0, 0, 0, 0, 1, 1, NA, 0, 0, 1, 1, 1, 0, 1, 0, 0, NA, 1, 0…
## $ QT_PROF_SEGURANCA <int> 1, 0, 0, 0, 0, 2, 1, NA, 0, 0, 1, 2, 2, 0, 1, 0, 0, NA, 1, 0…
## $ IN_PROF_MONITORES <int> 0, 0, 0, 1, 1, 0, 0, NA, 1, 0, 0, 0, 0, 0, 0, 0, 0, NA, 0, 0…
## $ QT_PROF_MONITORES <int> 0, 0, 0, 1, 1, 0, 0, NA, 1, 0, 0, 0, 0, 0, 0, 0, 0, NA, 0, 0…
## $ IN_PROF_GESTAO <int> 1, 1, 1, 1, 1, 1, 1, NA, 0, 1, 1, 1, 1, 0, 0, 1, 1, NA, 1, 1…
## $ QT_PROF_GESTAO <int> 1, 1, 1, 1, 1, 1, 1, NA, 0, 1, 1, 2, 1, 0, 0, 1, 1, NA, 1, 1…
## $ IN_PROF_ASSIST_SOCIAL <int> 0, 0, 0, 0, 0, 0, 0, NA, 0, 0, 0, 0, 0, 0, 0, 0, 0, NA, 0, 0…
## $ QT_PROF_ASSIST_SOCIAL <int> 0, 0, 0, 0, 0, 0, 0, NA, 0, 0, 0, 0, 0, 0, 0, 0, 0, NA, 0, 0…
## $ IN_PROF_TRAD_LIBRAS <int> 0, 0, 0, 0, 0, 0, 0, NA, 0, 0, 0, 0, 0, 0, 0, 0, 0, NA, 0, 0…
## $ QT_PROF_TRAD_LIBRAS <int> 0, 0, 0, 0, 0, 0, 0, NA, 0, 0, 0, 0, 0, 0, 0, 0, 0, NA, 0, 0…
## $ IN_ALIMENTACAO <int> 1, 1, 1, 1, 1, 1, 1, NA, 1, 1, 1, 1, 1, 1, 1, 1, 1, NA, 1, 1…
## $ IN_MATERIAL_PED_MULTIMIDIA <int> 0, 0, 1, 0, 1, 1, 0, NA, 1, 0, 1, 0, 0, 0, 0, 0, 0, NA, 1, 1…
## $ IN_MATERIAL_PED_INFANTIL <int> 0, 1, 0, 0, 0, 0, 0, NA, 0, 1, 0, 0, 0, 0, 1, 1, 1, NA, 1, 0…
## $ IN_MATERIAL_PED_CIENTIFICO <int> 0, 0, 0, 0, 0, 1, 0, NA, 0, 0, 0, 0, 0, 0, 1, 1, 0, NA, 1, 0…
## $ IN_MATERIAL_PED_DIFUSAO <int> 0, 0, 1, 1, 1, 1, 0, NA, 1, 0, 0, 0, 1, 1, 1, 1, 0, NA, 1, 0…
## $ IN_MATERIAL_PED_MUSICAL <int> 0, 0, 0, 0, 0, 1, 0, NA, 0, 0, 1, 0, 0, 0, 0, 0, 0, NA, 0, 0…
## $ IN_MATERIAL_PED_JOGOS <int> 0, 0, 0, 0, 1, 1, 1, NA, 1, 0, 0, 1, 0, 1, 1, 1, 0, NA, 1, 1…
## $ IN_MATERIAL_PED_ARTISTICAS <int> 1, 0, 0, 0, 0, 0, 0, NA, 0, 0, 1, 0, 0, 0, 0, 1, 0, NA, 0, 0…
## $ IN_MATERIAL_PED_PROFISSIONAL <int> 0, 0, 0, 0, 0, 0, 0, NA, 0, 0, 0, 0, 0, 0, 0, 0, 0, NA, 0, 0…
## $ IN_MATERIAL_PED_DESPORTIVA <int> 0, 0, 0, 0, 1, 1, 1, NA, 1, 0, 1, 0, 1, 1, 0, 0, 0, NA, 1, 1…
## $ IN_MATERIAL_PED_INDIGENA <int> 0, 0, 0, 0, 0, 0, 0, NA, 0, 0, 0, 0, 0, 0, 0, 0, 0, NA, 0, 0…
## $ IN_MATERIAL_PED_ETNICO <int> 0, 0, 0, 0, 0, 0, 0, NA, 0, 0, 0, 0, 0, 0, 0, 0, 0, NA, 1, 0…
## $ IN_MATERIAL_PED_CAMPO <int> 0, 0, 0, 0, 0, 0, 0, NA, 0, 0, 0, 0, 0, 0, 0, 0, 0, NA, 0, 0…
## $ IN_MATERIAL_PED_BIL_SURDOS <int> 0, 0, 0, 0, 0, 0, 0, NA, 0, 0, 0, 0, 0, 0, 0, 0, 0, NA, 0, 0…
## $ IN_MATERIAL_PED_NENHUM <int> 0, 0, 0, 0, 0, 0, 0, NA, 0, 0, 0, 0, 0, 0, 0, 0, 0, NA, 0, 0…
## $ IN_EDUCACAO_INDIGENA <int> 0, 0, 0, 0, 0, 0, 0, NA, 0, 0, 0, 0, 0, 0, 0, 0, 0, NA, 0, 0…
## $ TP_INDIGENA_LINGUA <int> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, …
## $ CO_LINGUA_INDIGENA_1 <int> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, …
## $ CO_LINGUA_INDIGENA_2 <int> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, …
## $ CO_LINGUA_INDIGENA_3 <int> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, …
## $ IN_EXAME_SELECAO <int> 0, 0, 0, 0, 0, 0, 0, NA, 0, 0, 0, 0, 0, 0, 0, 0, 0, NA, 0, 0…
## $ IN_RESERVA_PPI <int> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, …
## $ IN_RESERVA_RENDA <int> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, …
## $ IN_RESERVA_PUBLICA <int> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, …
## $ IN_RESERVA_PCD <int> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, …
## $ IN_RESERVA_OUTROS <int> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, …
## $ IN_RESERVA_NENHUMA <int> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, …
## $ IN_REDES_SOCIAIS <int> 0, 1, 0, 0, 0, 1, 0, NA, 0, 0, 0, 1, 1, 0, 0, 0, 0, NA, 0, 0…
## $ IN_ESPACO_ATIVIDADE <int> 0, 0, 1, 0, 0, 0, 0, NA, 0, 0, 0, 1, 0, 0, 0, 0, 0, NA, 0, 0…
## $ IN_ESPACO_EQUIPAMENTO <int> 0, 0, 0, 0, 1, 0, 0, NA, 0, 0, 0, 0, 0, 0, 0, 0, 0, NA, 0, 0…
## $ IN_ORGAO_ASS_PAIS <int> 0, 0, 0, 0, 0, 0, 0, NA, 0, 0, 0, 0, 0, 0, 0, 0, 0, NA, 0, 0…
## $ IN_ORGAO_ASS_PAIS_MESTRES <int> 0, 0, 0, 0, 0, 0, 0, NA, 0, 0, 1, 1, 0, 0, 0, 0, 0, NA, 0, 0…
## $ IN_ORGAO_CONSELHO_ESCOLAR <int> 1, 1, 1, 1, 1, 1, 1, NA, 1, 1, 0, 1, 1, 1, 1, 1, 1, NA, 1, 1…
## $ IN_ORGAO_GREMIO_ESTUDANTIL <int> 0, 0, 0, 0, 1, 1, 0, NA, 1, 0, 1, 1, 0, 1, 0, 0, 0, NA, 0, 0…
## $ IN_ORGAO_OUTROS <int> 0, 0, 0, 0, 0, 0, 0, NA, 0, 0, 0, 0, 0, 0, 0, 0, 0, NA, 0, 0…
## $ IN_ORGAO_NENHUM <int> 0, 0, 0, 0, 0, 0, 0, NA, 0, 0, 0, 0, 0, 0, 0, 0, 0, NA, 0, 0…
## $ TP_PROPOSTA_PEDAGOGICA <int> 1, 1, 1, 0, 1, 2, 1, NA, 1, 1, 1, 1, 1, 1, 1, 1, 1, NA, 0, 1…
## $ TP_AEE <int> 0, 1, 0, 1, 0, 0, 1, NA, 0, 1, 1, 1, 0, 0, 0, 1, 0, NA, 0, 1…
## $ TP_ATIVIDADE_COMPLEMENTAR <int> 0, 0, 0, 0, 0, 0, 0, NA, 0, 0, 0, 0, 0, 0, 0, 0, 0, NA, 0, 0…
## $ IN_MEDIACAO_PRESENCIAL <int> 1, 1, 1, 1, 1, 1, 1, NA, 1, 1, 1, 1, 1, 1, 1, 1, 1, NA, 1, 1…
## $ IN_MEDIACAO_SEMIPRESENCIAL <int> 0, 0, 0, 0, 0, 0, 0, NA, 0, 0, 0, 0, 0, 0, 0, 0, 0, NA, 0, 0…
## $ IN_MEDIACAO_EAD <int> 0, 0, 0, 0, 0, 0, 0, NA, 0, 0, 0, 0, 0, 0, 0, 0, 0, NA, 0, 0…
## $ IN_REGULAR <int> 0, 1, 1, 1, 1, 1, 1, NA, 1, 1, 1, 1, 1, 1, 1, 1, 1, NA, 1, 1…
## $ IN_DIURNO <int> 1, 1, 1, 1, 1, 1, 1, NA, 1, 1, 1, 1, 1, 1, 1, 1, 1, NA, 1, 1…
## $ IN_NOTURNO <int> 1, 0, 0, 0, 0, 1, 0, NA, 0, 0, 0, 0, 0, 0, 0, 0, 0, NA, 0, 0…
## $ IN_EAD <int> 0, 0, 0, 0, 0, 0, 0, NA, 0, 0, 0, 0, 0, 0, 0, 0, 0, NA, 0, 0…
## $ IN_ESCOLARIZACAO <int> 1, 1, 1, 1, 1, 1, 1, NA, 1, 1, 1, 1, 1, 1, 1, 1, 1, NA, 1, 1…
## $ IN_INF <int> 0, 1, 0, 0, 1, 0, 0, NA, 0, 1, 0, 0, 0, 1, 1, 1, 1, NA, 1, 0…
## $ IN_INF_CRE <int> 0, 1, 0, 0, 0, 0, 0, NA, 0, 1, 0, 0, 0, 0, 1, 0, 1, NA, 0, 0…
## $ IN_INF_PRE <int> 0, 1, 0, 0, 1, 0, 0, NA, 0, 1, 0, 0, 0, 1, 1, 1, 1, NA, 1, 0…
## $ IN_FUND <int> 0, 0, 1, 1, 1, 0, 1, NA, 1, 0, 0, 1, 1, 1, 0, 0, 0, NA, 0, 1…
## $ IN_FUND_AI <int> 0, 0, 1, 1, 1, 0, 1, NA, 1, 0, 0, 0, 1, 1, 0, 0, 0, NA, 0, 1…
## $ IN_FUND_AF <int> 0, 0, 0, 0, 0, 0, 0, NA, 0, 0, 0, 1, 1, 0, 0, 0, 0, NA, 0, 0…
## $ IN_MED <int> 0, 0, 0, 0, 0, 1, 0, NA, 0, 0, 1, 1, 1, 0, 0, 0, 0, NA, 0, 0…
## $ IN_PROF <int> 0, 0, 0, 0, 0, 0, 0, NA, 0, 0, 0, 0, 0, 0, 0, 0, 0, NA, 0, 0…
## $ IN_PROF_TEC <int> 0, 0, 0, 0, 0, 0, 0, NA, 0, 0, 0, 0, 0, 0, 0, 0, 0, NA, 0, 0…
## $ IN_EJA <int> 1, 0, 0, 1, 0, 1, 0, NA, 0, 0, 0, 0, 0, 0, 0, 0, 0, NA, 0, 0…
## $ IN_EJA_FUND <int> 1, 0, 0, 1, 0, 0, 0, NA, 0, 0, 0, 0, 0, 0, 0, 0, 0, NA, 0, 0…
## $ IN_EJA_MED <int> 1, 0, 0, 0, 0, 1, 0, NA, 0, 0, 0, 0, 0, 0, 0, 0, 0, NA, 0, 0…
## $ IN_ESP <int> 1, 1, 1, 1, 1, 1, 1, NA, 1, 1, 1, 1, 1, 1, 1, 1, 1, NA, 1, 1…
## $ IN_ESP_CC <int> 1, 1, 1, 1, 1, 1, 1, NA, 1, 1, 1, 1, 1, 1, 1, 1, 1, NA, 1, 1…
## $ IN_ESP_CE <int> 0, 0, 0, 1, 0, 0, 0, NA, 0, 0, 0, 0, 0, 0, 0, 0, 0, NA, 0, 0…
## $ QT_MAT_BAS <int> 1083, 344, 477, 328, 377, 1034, 392, NA, 399, 396, 1239, 131…
## $ QT_MAT_INF <int> 0, 344, 0, 0, 107, 0, 0, NA, 0, 396, 0, 0, 0, 84, 183, 447, …
## $ QT_MAT_INF_CRE <int> 0, 103, 0, 0, 0, 0, 0, NA, 0, 118, 0, 0, 0, 0, 44, 0, 36, NA…
## $ QT_MAT_INF_PRE <int> 0, 241, 0, 0, 107, 0, 0, NA, 0, 278, 0, 0, 0, 84, 139, 447, …
## $ QT_MAT_FUND <int> 0, 0, 477, 312, 270, 0, 392, NA, 399, 0, 0, 698, 1930, 373, …
## $ QT_MAT_FUND_AI <int> 0, 0, 477, 312, 270, 0, 392, NA, 399, 0, 0, 0, 621, 373, 0, …
## $ QT_MAT_FUND_AI_1 <int> 0, 0, 93, 59, 67, 0, 85, NA, 111, 0, 0, 0, 0, 95, 0, 0, 0, N…
## $ QT_MAT_FUND_AI_2 <int> 0, 0, 95, 79, 61, 0, 103, NA, 70, 0, 0, 0, 84, 96, 0, 0, 0, …
## $ QT_MAT_FUND_AI_3 <int> 0, 0, 118, 66, 41, 0, 69, NA, 76, 0, 0, 0, 133, 47, 0, 0, 0,…
## $ QT_MAT_FUND_AI_4 <int> 0, 0, 111, 58, 55, 0, 66, NA, 59, 0, 0, 0, 204, 73, 0, 0, 0,…
## $ QT_MAT_FUND_AI_5 <int> 0, 0, 60, 50, 46, 0, 69, NA, 83, 0, 0, 0, 200, 62, 0, 0, 0, …
## $ QT_MAT_FUND_AF <int> 0, 0, 0, 0, 0, 0, 0, NA, 0, 0, 0, 698, 1309, 0, 0, 0, 0, NA,…
## $ QT_MAT_FUND_AF_6 <int> 0, 0, 0, 0, 0, 0, 0, NA, 0, 0, 0, 143, 290, 0, 0, 0, 0, NA, …
## $ QT_MAT_FUND_AF_7 <int> 0, 0, 0, 0, 0, 0, 0, NA, 0, 0, 0, 174, 298, 0, 0, 0, 0, NA, …
## $ QT_MAT_FUND_AF_8 <int> 0, 0, 0, 0, 0, 0, 0, NA, 0, 0, 0, 195, 342, 0, 0, 0, 0, NA, …
## $ QT_MAT_FUND_AF_9 <int> 0, 0, 0, 0, 0, 0, 0, NA, 0, 0, 0, 186, 379, 0, 0, 0, 0, NA, …
## $ QT_MAT_MED <int> 0, 0, 0, 0, 0, 840, 0, NA, 0, 0, 1239, 617, 807, 0, 0, 0, 0,…
## $ QT_MAT_MED_PROP <int> 0, 0, 0, 0, 0, 840, 0, NA, 0, 0, 1239, 617, 807, 0, 0, 0, 0,…
## $ QT_MAT_MED_PROP_1 <int> 0, 0, 0, 0, 0, 381, 0, NA, 0, 0, 399, 196, 339, 0, 0, 0, 0, …
## $ QT_MAT_MED_PROP_2 <int> 0, 0, 0, 0, 0, 181, 0, NA, 0, 0, 425, 231, 229, 0, 0, 0, 0, …
## $ QT_MAT_MED_PROP_3 <int> 0, 0, 0, 0, 0, 278, 0, NA, 0, 0, 415, 190, 239, 0, 0, 0, 0, …
## $ QT_MAT_MED_PROP_4 <int> 0, 0, 0, 0, 0, 0, 0, NA, 0, 0, 0, 0, 0, 0, 0, 0, 0, NA, 0, 0…
## $ QT_MAT_MED_PROP_NS <int> 0, 0, 0, 0, 0, 0, 0, NA, 0, 0, 0, 0, 0, 0, 0, 0, 0, NA, 0, 0…
## $ QT_MAT_MED_CT <int> 0, 0, 0, 0, 0, 0, 0, NA, 0, 0, 0, 0, 0, 0, 0, 0, 0, NA, 0, 0…
## $ QT_MAT_MED_CT_1 <int> 0, 0, 0, 0, 0, 0, 0, NA, 0, 0, 0, 0, 0, 0, 0, 0, 0, NA, 0, 0…
## $ QT_MAT_MED_CT_2 <int> 0, 0, 0, 0, 0, 0, 0, NA, 0, 0, 0, 0, 0, 0, 0, 0, 0, NA, 0, 0…
## $ QT_MAT_MED_CT_3 <int> 0, 0, 0, 0, 0, 0, 0, NA, 0, 0, 0, 0, 0, 0, 0, 0, 0, NA, 0, 0…
## $ QT_MAT_MED_CT_4 <int> 0, 0, 0, 0, 0, 0, 0, NA, 0, 0, 0, 0, 0, 0, 0, 0, 0, NA, 0, 0…
## $ QT_MAT_MED_CT_NS <int> 0, 0, 0, 0, 0, 0, 0, NA, 0, 0, 0, 0, 0, 0, 0, 0, 0, NA, 0, 0…
## $ QT_MAT_MED_NM <int> 0, 0, 0, 0, 0, 0, 0, NA, 0, 0, 0, 0, 0, 0, 0, 0, 0, NA, 0, 0…
## $ QT_MAT_MED_NM_1 <int> 0, 0, 0, 0, 0, 0, 0, NA, 0, 0, 0, 0, 0, 0, 0, 0, 0, NA, 0, 0…
## $ QT_MAT_MED_NM_2 <int> 0, 0, 0, 0, 0, 0, 0, NA, 0, 0, 0, 0, 0, 0, 0, 0, 0, NA, 0, 0…
## $ QT_MAT_MED_NM_3 <int> 0, 0, 0, 0, 0, 0, 0, NA, 0, 0, 0, 0, 0, 0, 0, 0, 0, NA, 0, 0…
## $ QT_MAT_MED_NM_4 <int> 0, 0, 0, 0, 0, 0, 0, NA, 0, 0, 0, 0, 0, 0, 0, 0, 0, NA, 0, 0…
## $ QT_MAT_PROF <int> 0, 0, 0, 0, 0, 0, 0, NA, 0, 0, 0, 0, 0, 0, 0, 0, 0, NA, 0, 0…
## $ QT_MAT_PROF_TEC <int> 0, 0, 0, 0, 0, 0, 0, NA, 0, 0, 0, 0, 0, 0, 0, 0, 0, NA, 0, 0…
## $ QT_MAT_PROF_TEC_CONC <int> 0, 0, 0, 0, 0, 0, 0, NA, 0, 0, 0, 0, 0, 0, 0, 0, 0, NA, 0, 0…
## $ QT_MAT_PROF_TEC_SUBS <int> 0, 0, 0, 0, 0, 0, 0, NA, 0, 0, 0, 0, 0, 0, 0, 0, 0, NA, 0, 0…
## $ QT_MAT_PROF_FIC_CONC <int> 0, 0, 0, 0, 0, 0, 0, NA, 0, 0, 0, 0, 0, 0, 0, 0, 0, NA, 0, 0…
## $ QT_MAT_EJA <int> 1083, 0, 0, 16, 0, 194, 0, NA, 0, 0, 0, 0, 0, 0, 0, 0, 0, NA…
## $ QT_MAT_EJA_FUND <int> 354, 0, 0, 16, 0, 0, 0, NA, 0, 0, 0, 0, 0, 0, 0, 0, 0, NA, 0…
## $ QT_MAT_EJA_FUND_AI <int> 0, 0, 0, 16, 0, 0, 0, NA, 0, 0, 0, 0, 0, 0, 0, 0, 0, NA, 0, …
## $ QT_MAT_EJA_FUND_AF <int> 354, 0, 0, 0, 0, 0, 0, NA, 0, 0, 0, 0, 0, 0, 0, 0, 0, NA, 0,…
## $ QT_MAT_EJA_FUND_FIC <int> 0, 0, 0, 0, 0, 0, 0, NA, 0, 0, 0, 0, 0, 0, 0, 0, 0, NA, 0, 0…
## $ QT_MAT_EJA_MED <int> 729, 0, 0, 0, 0, 194, 0, NA, 0, 0, 0, 0, 0, 0, 0, 0, 0, NA, …
## $ QT_MAT_EJA_MED_NPROF <int> 729, 0, 0, 0, 0, 194, 0, NA, 0, 0, 0, 0, 0, 0, 0, 0, 0, NA, …
## $ QT_MAT_EJA_MED_FIC <int> 0, 0, 0, 0, 0, 0, 0, NA, 0, 0, 0, 0, 0, 0, 0, 0, 0, NA, 0, 0…
## $ QT_MAT_EJA_MED_TEC <int> 0, 0, 0, 0, 0, 0, 0, NA, 0, 0, 0, 0, 0, 0, 0, 0, 0, NA, 0, 0…
## $ QT_MAT_ESP <int> 28, 18, 11, 42, 13, 21, 14, NA, 8, 33, 16, 29, 42, 13, 6, 27…
## $ QT_MAT_ESP_CC <int> 28, 18, 11, 10, 13, 21, 14, NA, 8, 33, 16, 29, 42, 13, 6, 27…
## $ QT_MAT_ESP_CE <int> 0, 0, 0, 32, 0, 0, 0, NA, 0, 0, 0, 0, 0, 0, 0, 0, 0, NA, 0, …
## $ QT_MAT_BAS_FEM <int> 556, 166, 228, 134, 172, 499, 189, NA, 204, 207, 693, 702, 1…
## $ QT_MAT_BAS_MASC <int> 527, 178, 249, 194, 205, 535, 203, NA, 195, 189, 546, 613, 1…
## $ QT_MAT_BAS_ND <int> 17, 178, 80, 36, 248, 129, 44, NA, 32, 5, 92, 78, 209, 186, …
## $ QT_MAT_BAS_BRANCA <int> 102, 29, 37, 46, 10, 85, 10, NA, 44, 70, 227, 295, 310, 19, …
## $ QT_MAT_BAS_PRETA <int> 14, 1, 2, 1, 1, 10, 1, NA, 1, 7, 12, 8, 21, 7, 1, 37, 0, NA,…
## $ QT_MAT_BAS_PARDA <int> 948, 136, 356, 245, 117, 809, 337, NA, 322, 313, 904, 926, 2…
## $ QT_MAT_BAS_AMARELA <int> 0, 0, 0, 0, 1, 1, 0, NA, 0, 1, 2, 1, 3, 2, 0, 0, 0, NA, 0, 2…
## $ QT_MAT_BAS_INDIGENA <int> 2, 0, 2, 0, 0, 0, 0, NA, 0, 0, 2, 7, 0, 0, 0, 0, 0, NA, 0, 0…
## $ QT_MAT_BAS_0_3 <int> 0, 83, 0, 0, 0, 0, 0, NA, 0, 87, 0, 0, 0, 0, 35, 0, 29, NA, …
## $ QT_MAT_BAS_4_5 <int> 0, 234, 0, 0, 98, 0, 0, NA, 0, 290, 0, 0, 0, 63, 141, 396, 1…
## $ QT_MAT_BAS_6_10 <int> 0, 27, 454, 282, 264, 0, 351, NA, 381, 19, 0, 3, 607, 380, 7…
## $ QT_MAT_BAS_11_14 <int> 0, 0, 23, 26, 15, 4, 39, NA, 18, 0, 9, 626, 1217, 14, 0, 0, …
## $ QT_MAT_BAS_15_17 <int> 106, 0, 0, 6, 0, 640, 2, NA, 0, 0, 1136, 614, 863, 0, 0, 0, …
## $ QT_MAT_BAS_18_MAIS <int> 977, 0, 0, 14, 0, 390, 0, NA, 0, 0, 94, 72, 50, 0, 0, 0, 0, …
## $ QT_MAT_BAS_D <int> 598, 344, 477, 328, 377, 453, 392, NA, 399, 396, 1239, 1315,…
## $ QT_MAT_BAS_N <int> 485, 0, 0, 0, 0, 581, 0, NA, 0, 0, 0, 0, 0, 0, 0, 0, 0, NA, …
## $ QT_MAT_BAS_EAD <int> 0, 0, 0, 0, 0, 0, 0, NA, 0, 0, 0, 0, 0, 0, 0, 0, 0, NA, 0, 0…
## $ QT_MAT_INF_INT <int> 0, 0, 0, 0, 1, 0, 0, NA, 0, 14, 0, 0, 0, 0, 0, 0, 0, NA, 0, …
## $ QT_MAT_INF_CRE_INT <int> 0, 0, 0, 0, 0, 0, 0, NA, 0, 5, 0, 0, 0, 0, 0, 0, 0, NA, 0, 0…
## $ QT_MAT_INF_PRE_INT <int> 0, 0, 0, 0, 1, 0, 0, NA, 0, 9, 0, 0, 0, 0, 0, 0, 0, NA, 0, 0…
## $ QT_MAT_FUND_INT <int> 0, 0, 2, 4, 1, 0, 8, NA, 3, 0, 0, 5, 0, 1, 0, 0, 0, NA, 0, 1…
## $ QT_MAT_FUND_AI_INT <int> 0, 0, 2, 4, 1, 0, 8, NA, 3, 0, 0, 0, 0, 1, 0, 0, 0, NA, 0, 1…
## $ QT_MAT_FUND_AF_INT <int> 0, 0, 0, 0, 0, 0, 0, NA, 0, 0, 0, 5, 0, 0, 0, 0, 0, NA, 0, 0…
## $ QT_MAT_MED_INT <int> 0, 0, 0, 0, 0, 453, 0, NA, 0, 0, 11, 12, 0, 0, 0, 0, 0, NA, …
## $ QT_MAT_ZR_URB <int> 1079, 343, 475, 328, 376, 1016, 392, NA, 397, 396, 1236, 131…
## $ QT_MAT_ZR_RUR <int> 4, 1, 2, 0, 1, 18, 0, NA, 2, 0, 3, 1, 3, 0, 0, 0, 0, NA, 0, …
## $ QT_MAT_ZR_NA <int> 0, 0, 0, 0, 0, 0, 0, NA, 0, 0, 0, 0, 0, 0, 0, 0, 0, NA, 0, 0…
## $ QT_TRANSP_PUBLICO <int> 1, 0, 0, 0, 0, 0, 0, NA, 0, 0, 0, 0, 1, 0, 0, 0, 0, NA, 0, 0…
## $ QT_TRANSP_RESP_EST <int> 0, 0, 0, 0, 0, 0, 0, NA, 0, 0, 0, 0, 0, 0, 0, 0, 0, NA, 0, 0…
## $ QT_TRANSP_RESP_MUN <int> 1, 0, 0, 0, 0, 0, 0, NA, 0, 0, 0, 0, 1, 0, 0, 0, 0, NA, 0, 0…
## $ QT_DOC_BAS <int> 73, 14, 19, 14, 15, 41, 15, NA, 23, 20, 48, 72, 123, 17, 10,…
## $ QT_DOC_INF <int> 0, 14, 0, 0, 6, 0, 0, NA, 0, 20, 0, 0, 0, 2, 10, 14, 10, NA,…
## $ QT_DOC_INF_CRE <int> 0, 6, 0, 0, 0, 0, 0, NA, 0, 8, 0, 0, 0, 0, 2, 0, 2, NA, 0, 0…
## $ QT_DOC_INF_PRE <int> 0, 8, 0, 0, 6, 0, 0, NA, 0, 12, 0, 0, 0, 2, 9, 14, 8, NA, 8,…
## $ QT_DOC_FUND <int> 0, 0, 19, 13, 11, 0, 15, NA, 23, 0, 0, 36, 95, 15, 0, 0, 0, …
## $ QT_DOC_FUND_AI <int> 0, 0, 19, 13, 11, 0, 14, NA, 23, 0, 0, 0, 30, 15, 0, 0, 0, N…
## $ QT_DOC_FUND_AF <int> 0, 0, 0, 0, 0, 0, 1, NA, 0, 0, 0, 36, 70, 0, 0, 0, 0, NA, 0,…
## $ QT_DOC_MED <int> 0, 0, 0, 0, 0, 36, 0, NA, 0, 0, 48, 43, 47, 0, 0, 0, 0, NA, …
## $ QT_DOC_PROF <int> 0, 0, 0, 0, 0, 0, 0, NA, 0, 0, 0, 0, 0, 0, 0, 0, 0, NA, 0, 0…
## $ QT_DOC_PROF_TEC <int> 0, 0, 0, 0, 0, 0, 0, NA, 0, 0, 0, 0, 0, 0, 0, 0, 0, NA, 0, 0…
## $ QT_DOC_EJA <int> 73, 0, 0, 2, 0, 13, 0, NA, 0, 0, 0, 0, 0, 0, 0, 0, 0, NA, 0,…
## $ QT_DOC_EJA_FUND <int> 32, 0, 0, 2, 0, 0, 0, NA, 0, 0, 0, 0, 0, 0, 0, 0, 0, NA, 0, …
## $ QT_DOC_EJA_MED <int> 59, 0, 0, 0, 0, 13, 0, NA, 0, 0, 0, 0, 0, 0, 0, 0, 0, NA, 0,…
## $ QT_DOC_ESP <int> 67, 13, 8, 11, 11, 35, 11, NA, 16, 19, 44, 67, 106, 13, 5, 1…
## $ QT_DOC_ESP_CC <int> 67, 13, 8, 10, 11, 35, 11, NA, 16, 19, 44, 67, 106, 13, 5, 1…
## $ QT_DOC_ESP_CE <int> 0, 0, 0, 3, 0, 0, 0, NA, 0, 0, 0, 0, 0, 0, 0, 0, 0, NA, 0, 0…
## $ QT_TUR_BAS <int> 53, 18, 20, 17, 18, 28, 20, NA, 20, 24, 30, 40, 78, 20, 14, …
## $ QT_TUR_INF <int> 0, 18, 0, 0, 6, 0, 0, NA, 0, 24, 0, 0, 0, 4, 14, 20, 12, NA,…
## $ QT_TUR_INF_CRE <int> 0, 6, 0, 0, 0, 0, 0, NA, 0, 8, 0, 0, 0, 0, 3, 0, 2, NA, 0, 0…
## $ QT_TUR_INF_PRE <int> 0, 12, 0, 0, 6, 0, 0, NA, 0, 16, 0, 0, 0, 4, 11, 20, 10, NA,…
## $ QT_TUR_FUND <int> 0, 0, 20, 16, 12, 0, 20, NA, 20, 0, 0, 20, 52, 16, 0, 0, 0, …
## $ QT_TUR_FUND_AI <int> 0, 0, 20, 16, 12, 0, 18, NA, 20, 0, 0, 0, 16, 16, 0, 0, 0, N…
## $ QT_TUR_FUND_AF <int> 0, 0, 0, 0, 0, 0, 2, NA, 0, 0, 0, 20, 36, 0, 0, 0, 0, NA, 0,…
## $ QT_TUR_MED <int> 0, 0, 0, 0, 0, 22, 0, NA, 0, 0, 30, 20, 26, 0, 0, 0, 0, NA, …
## $ QT_TUR_PROF <int> 0, 0, 0, 0, 0, 0, 0, NA, 0, 0, 0, 0, 0, 0, 0, 0, 0, NA, 0, 0…
## $ QT_TUR_PROF_TEC <int> 0, 0, 0, 0, 0, 0, 0, NA, 0, 0, 0, 0, 0, 0, 0, 0, 0, NA, 0, 0…
## $ QT_TUR_EJA <int> 53, 0, 0, 1, 0, 6, 0, NA, 0, 0, 0, 0, 0, 0, 0, 0, 0, NA, 0, …
## $ QT_TUR_EJA_FUND <int> 17, 0, 0, 1, 0, 0, 0, NA, 0, 0, 0, 0, 0, 0, 0, 0, 0, NA, 0, …
## $ QT_TUR_EJA_MED <int> 36, 0, 0, 0, 0, 6, 0, NA, 0, 0, 0, 0, 0, 0, 0, 0, 0, NA, 0, …
## $ QT_TUR_ESP <int> 20, 14, 7, 11, 10, 14, 10, NA, 8, 22, 14, 17, 34, 12, 6, 17,…
## $ QT_TUR_ESP_CC <int> 20, 14, 7, 9, 10, 14, 10, NA, 8, 22, 14, 17, 34, 12, 6, 17, …
## $ QT_TUR_ESP_CE <int> 0, 0, 0, 2, 0, 0, 0, NA, 0, 0, 0, 0, 0, 0, 0, 0, 0, NA, 0, 0…
## $ QT_TUR_BAS_D <int> 33, 18, 20, 17, 18, 12, 20, NA, 20, 24, 30, 40, 78, 20, 14, …
## $ QT_TUR_BAS_N <int> 20, 0, 0, 0, 0, 16, 0, NA, 0, 0, 0, 0, 0, 0, 0, 0, 0, NA, 0,…
## $ QT_TUR_BAS_EAD <int> 0, 0, 0, 0, 0, 0, 0, NA, 0, 0, 0, 0, 0, 0, 0, 0, 0, NA, 0, 0…
## $ QT_TUR_INF_INT <int> 0, 0, 0, 0, 0, 0, 0, NA, 0, 0, 0, 0, 0, 0, 0, 0, 0, NA, 0, 0…
## $ QT_TUR_INF_CRE_INT <int> 0, 0, 0, 0, 0, 0, 0, NA, 0, 0, 0, 0, 0, 0, 0, 0, 0, NA, 0, 0…
## $ QT_TUR_INF_PRE_INT <int> 0, 0, 0, 0, 0, 0, 0, NA, 0, 0, 0, 0, 0, 0, 0, 0, 0, NA, 0, 0…
## $ QT_TUR_FUND_INT <int> 0, 0, 0, 0, 0, 0, 0, NA, 0, 0, 0, 0, 0, 0, 0, 0, 0, NA, 0, 0…
## $ QT_TUR_FUND_AI_INT <int> 0, 0, 0, 0, 0, 0, 0, NA, 0, 0, 0, 0, 0, 0, 0, 0, 0, NA, 0, 0…
## $ QT_TUR_FUND_AF_INT <int> 0, 0, 0, 0, 0, 0, 0, NA, 0, 0, 0, 0, 0, 0, 0, 0, 0, NA, 0, 0…
## $ QT_TUR_MED_INT <int> 0, 0, 0, 0, 0, 12, 0, NA, 0, 0, 0, 0, 0, 0, 0, 0, 0, NA, 0, …
cols_saeb <- c("TX_RESP_Q04", "PROFICIENCIA_LP_SAEB", "PROFICIENCIA_MT_SAEB",
"IN_PREENCHIMENTO_QUESTIONARIO", "ID_UF")
aluno_9ef |>
summarise(across(all_of(cols_saeb),
~ mean(is.na(.)) * 100,
.names = "miss_pct_{.col}"))cols_censo <- c("QT_MAT_BAS_BRANCA", "QT_MAT_BAS_PRETA",
"QT_MAT_BAS_PARDA", "QT_MAT_BAS_AMARELA", "QT_MAT_BAS_INDIGENA")
censo |>
summarise(across(all_of(cols_censo),
~ mean(is.na(.)) * 100,
.names = "miss_pct_{.col}"))Categorias do questionário: A = Branca, B = Preta, C = Parda, D =
Amarela, E = Indígena, F = Não declarar, . = Branco (não
respondeu).
censo |>
as_tibble() |>
select(all_of(cols_censo)) |>
summarise(across(everything(), sum, na.rm = TRUE)) |>
pivot_longer(everything(), names_to = "grupo", values_to = "total") |>
mutate(
grupo = str_remove(grupo, "QT_MAT_BAS_"),
pct = round(total / sum(total) * 100, 1)
) |>
arrange(desc(total))# Salvar arquivos filtrados para uso nas próximas etapas
dir_clean <- here("data", "clean")
if (!dir.exists(dir_clean)) dir.create(dir_clean, recursive = TRUE)
fwrite(aluno_5ef, here("data", "clean", "aluno_5ef_filtrado.csv"), sep = ";", bom = TRUE)
fwrite(aluno_9ef, here("data", "clean", "aluno_9ef_filtrado.csv"), sep = ";", bom = TRUE)
fwrite(censo, here("data", "clean", "censo_filtrado.csv"), sep = ";", bom = TRUE)O clima escolar é construído via Análise Fatorial Exploratória (AFE) sobre 9 itens do questionário Q23 do SAEB (bloco “Sobre sua escola, indique o quanto você concorda ou discorda”). AFE é preferida à média simples porque pondera automaticamente cada item pela sua correlação com o fator latente subjacente.
aluno <- fread(here("data", "clean", "aluno_9ef_filtrado.csv"))
cat("N escolas:", uniqueN(aluno$ID_ESCOLA), "\n")## N escolas: 3116
## N alunos: 193097
itens_clima <- aluno |>
select(
ID_ESCOLA,
TX_RESP_Q23a, # Interesse no que foi ensinado
TX_RESP_Q23b, # Motivação para usar o conhecimento
TX_RESP_Q23c, # Espaço para diferentes opiniões
TX_RESP_Q23d, # Segurança na escola
TX_RESP_Q23e, # À vontade para discordar dos professores
TX_RESP_Q23f, # Capacidade de argumentar sobre conteúdos difíceis
TX_RESP_Q23g, # Avaliações representam o aprendizado
TX_RESP_Q23h, # Professores acreditam na capacidade do aluno
TX_RESP_Q23i # Professores motivam a continuar os estudos
) |>
mutate(across(-ID_ESCOLA, ~ as.integer(factor(.))))missing_summary <- itens_clima |>
select(-ID_ESCOLA) |>
summarise(across(everything(), ~ mean(is.na(.)) * 100))
print(missing_summary)## TX_RESP_Q23a TX_RESP_Q23b TX_RESP_Q23c TX_RESP_Q23d TX_RESP_Q23e TX_RESP_Q23f TX_RESP_Q23g
## 1 0 0 0 0 0 0 0
## TX_RESP_Q23h TX_RESP_Q23i
## 1 0 0
if (any(missing_summary > 5)) {
message("Atenção: alguns itens têm > 5% de missing. Considerar imputação.")
}
dados_afe <- itens_clima |>
select(-ID_ESCOLA) |>
na.omit()
cat("N para AFE =", nrow(dados_afe), "\n")## N para AFE = 193097
Verifica se as correlações entre os itens são suficientemente diferentes de zero para justificar a aplicação da AFE.
## Chi-square = 1966730
## df = 36
## p-valor = 0
Mede a proporção de variância compartilhada entre os itens. Valores ≥ 0,70 indicam adequação boa ou meritória.
## KMO overall = 0.967
if (kmo$MSA >= 0.80) {
cat("→ Adequação: MERITÓRIA\n")
} else if (kmo$MSA >= 0.70) {
cat("→ Adequação: BOA\n")
} else if (kmo$MSA >= 0.60) {
cat("→ Adequação: MEDÍOCRE\n")
} else if (kmo$MSA >= 0.50) {
cat("→ Adequação: RUIM (mas aceitável)\n")
} else {
cat("→ Adequação: INACEITÁVEL — revisar itens\n")
}## → Adequação: MERITÓRIA
## TX_RESP_Q23a TX_RESP_Q23b TX_RESP_Q23c TX_RESP_Q23d TX_RESP_Q23e TX_RESP_Q23f
## TX_RESP_Q23a 1.000 0.845 0.774 0.775 0.749 0.780
## TX_RESP_Q23b 0.845 1.000 0.786 0.793 0.759 0.791
## TX_RESP_Q23c 0.774 0.786 1.000 0.773 0.755 0.764
## TX_RESP_Q23d 0.775 0.793 0.773 1.000 0.748 0.764
## TX_RESP_Q23e 0.749 0.759 0.755 0.748 1.000 0.784
## TX_RESP_Q23f 0.780 0.791 0.764 0.764 0.784 1.000
## TX_RESP_Q23g 0.785 0.794 0.753 0.752 0.731 0.764
## TX_RESP_Q23h 0.787 0.790 0.766 0.771 0.734 0.774
## TX_RESP_Q23i 0.787 0.797 0.761 0.769 0.728 0.761
## TX_RESP_Q23g TX_RESP_Q23h TX_RESP_Q23i
## TX_RESP_Q23a 0.785 0.787 0.787
## TX_RESP_Q23b 0.794 0.790 0.797
## TX_RESP_Q23c 0.753 0.766 0.761
## TX_RESP_Q23d 0.752 0.771 0.769
## TX_RESP_Q23e 0.731 0.734 0.728
## TX_RESP_Q23f 0.764 0.774 0.761
## TX_RESP_Q23g 1.000 0.787 0.779
## TX_RESP_Q23h 0.787 1.000 0.852
## TX_RESP_Q23i 0.779 0.852 1.000
##
## Loadings:
## ML1
## TX_RESP_Q23a 0.896
## TX_RESP_Q23b 0.907
## TX_RESP_Q23c 0.869
## TX_RESP_Q23d 0.872
## TX_RESP_Q23e 0.845
## TX_RESP_Q23f 0.876
## TX_RESP_Q23g 0.873
## TX_RESP_Q23h 0.892
## TX_RESP_Q23i 0.888
##
## ML1
## SS loadings 6.967
## Proportion Var 0.774
cat("\nVariância explicada pelo fator 1:",
round(efa_1fator$e.values[1] / sum(efa_1fator$e.values) * 100, 2), "%\n")##
## Variância explicada pelo fator 1: 79.92 %
efa_exploratoria <- tryCatch({
fa(dados_afe, nfactors = 4, rotate = "oblimin", fm = "ml")
}, error = function(e) {
message("Convergência não alcançada com 4 fatores. Usar 1 fator.")
NULL
})
if (!is.null(efa_exploratoria)) print(efa_exploratoria)## Factor Analysis using method = ml
## Call: fa(r = dados_afe, nfactors = 4, rotate = "oblimin", fm = "ml")
## Standardized loadings (pattern matrix) based upon correlation matrix
## ML1 ML3 ML4 ML2 h2 u2 com
## TX_RESP_Q23a 0.91 -0.08 -0.02 -0.12 0.83 0.17 1.1
## TX_RESP_Q23b 0.93 -0.10 0.00 -0.15 0.87 0.13 1.1
## TX_RESP_Q23c 0.88 -0.01 0.15 0.07 0.78 0.22 1.1
## TX_RESP_Q23d 0.88 -0.02 0.10 0.05 0.77 0.23 1.0
## TX_RESP_Q23e 0.83 0.14 0.12 0.00 0.76 0.24 1.1
## TX_RESP_Q23f 0.85 0.24 -0.02 -0.08 0.84 0.16 1.2
## TX_RESP_Q23g 0.87 -0.01 -0.04 -0.01 0.76 0.24 1.0
## TX_RESP_Q23h 0.88 0.01 -0.17 0.16 0.88 0.12 1.2
## TX_RESP_Q23i 0.88 -0.04 -0.12 0.12 0.83 0.17 1.1
##
## ML1 ML3 ML4 ML2
## SS loadings 6.99 0.11 0.10 0.10
## Proportion Var 0.78 0.01 0.01 0.01
## Cumulative Var 0.78 0.79 0.80 0.81
## Proportion Explained 0.96 0.02 0.01 0.01
## Cumulative Proportion 0.96 0.97 0.99 1.00
##
## With factor correlations of
## ML1 ML3 ML4 ML2
## ML1 1.00 0.15 -0.07 0.03
## ML3 0.15 1.00 0.14 0.03
## ML4 -0.07 0.14 1.00 -0.25
## ML2 0.03 0.03 -0.25 1.00
##
## Mean item complexity = 1.1
## Test of the hypothesis that 4 factors are sufficient.
##
## df null model = 36 with the objective function = 10.19 with Chi Square = 1966730
## df of the model are 6 and the objective function was 0
##
## The root mean square of the residuals (RMSR) is 0
## The df corrected root mean square of the residuals is 0
##
## The harmonic n.obs is 193097 with the empirical chi square 6.37 with prob < 0.38
## The total n.obs was 193097 with Likelihood Chi Square = 171.93 with prob < 1.7e-34
##
## Tucker Lewis Index of factoring reliability = 0.999
## RMSEA index = 0.012 and the 90 % confidence intervals are 0.01 0.014
## BIC = 98.91
## Fit based upon off diagonal values = 1
## Measures of factor score adequacy
## ML1 ML3 ML4 ML2
## Correlation of (regression) scores with factors 0.98 0.58 0.58 0.62
## Multiple R square of scores with factors 0.96 0.33 0.33 0.39
## Minimum correlation of possible factor scores 0.92 -0.33 -0.33 -0.23
alpha_result <- psych::alpha(dados_afe)
cat("Alpha bruto:", round(alpha_result$total$raw_alpha, 4), "\n")## Alpha bruto: 0.9669
std_alpha <- alpha_result$total$std_alpha
if (!is.null(std_alpha) && !is.na(std_alpha)) {
cat("Alpha padronizado:", round(std_alpha, 4), "\n")
} else {
cat("Alpha padronizado: NA (variâncias dos itens são homogêneas)\n")
}## Alpha padronizado: NA (variâncias dos itens são homogêneas)
##
## === Alpha se Item Deletado ===
## raw_alpha std.alpha G6(smc) average_r S/N alpha se var.r med.r
## TX_RESP_Q23a 0.9625 0.9642 0.9610 0.7707 26.8942 1e-04 6e-04 0.7678
## TX_RESP_Q23b 0.9615 0.9636 0.9603 0.7681 26.4984 1e-04 5e-04 0.7678
## TX_RESP_Q23c 0.9630 0.9652 0.9624 0.7761 27.7260 1e-04 8e-04 0.7772
## TX_RESP_Q23d 0.9631 0.9651 0.9624 0.7756 27.6453 1e-04 8e-04 0.7768
## TX_RESP_Q23e 0.9650 0.9662 0.9630 0.7812 28.5661 1e-04 5e-04 0.7772
## TX_RESP_Q23f 0.9628 0.9648 0.9618 0.7743 27.4432 1e-04 8e-04 0.7736
## TX_RESP_Q23g 0.9630 0.9651 0.9624 0.7756 27.6469 1e-04 7e-04 0.7736
## TX_RESP_Q23h 0.9626 0.9643 0.9604 0.7714 26.9983 1e-04 5e-04 0.7712
## TX_RESP_Q23i 0.9628 0.9645 0.9606 0.7724 27.1509 1e-04 5e-04 0.7736
alpha_valido <- alpha_result$total$raw_alpha >= 0.70
cat("Alpha de Cronbach:", round(alpha_result$total$raw_alpha, 4), "\n")## Alpha de Cronbach: 0.9669
## Meta: >= 0.70
## Status: VÁLIDO
cargas <- efa_1fator$loadings[, 1]
itens_mantidos <- names(cargas[abs(cargas) >= 0.30])
documentacao_itens <- tibble(
Item = names(cargas),
Carga_Fatorial = round(cargas, 4),
Mantido = abs(cargas) >= 0.30
)
print(documentacao_itens)## # A tibble: 9 × 3
## Item Carga_Fatorial Mantido
## <chr> <dbl> <lgl>
## 1 TX_RESP_Q23a 0.896 TRUE
## 2 TX_RESP_Q23b 0.907 TRUE
## 3 TX_RESP_Q23c 0.869 TRUE
## 4 TX_RESP_Q23d 0.872 TRUE
## 5 TX_RESP_Q23e 0.845 TRUE
## 6 TX_RESP_Q23f 0.876 TRUE
## 7 TX_RESP_Q23g 0.873 TRUE
## 8 TX_RESP_Q23h 0.892 TRUE
## 9 TX_RESP_Q23i 0.888 TRUE
##
## Total de itens mantidos: 9 de 9
itens_clima_score <- itens_clima |>
mutate(score_clima = rowMeans(across(all_of(itens_mantidos)), na.rm = TRUE))
escola_clima <- itens_clima_score |>
group_by(ID_ESCOLA) |>
summarise(
clima_medio = mean(score_clima, na.rm = TRUE),
clima_sd = sd(score_clima, na.rm = TRUE),
n_alunos = n(),
.groups = "drop"
)
cat("\nResumo do índice por escola:\n")##
## Resumo do índice por escola:
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 1.000 3.071 3.360 3.235 3.561 4.288
dir.create(here("outputs"), showWarnings = FALSE)
write_csv(escola_clima, here("outputs", "02_indice_clima_escolar_por_escola.csv"))
write_csv(documentacao_itens, here("outputs", "02_documentacao_itens_clima.csv"))
std_alpha_val <- alpha_result$total$std_alpha
if (is.null(std_alpha_val) || length(std_alpha_val) == 0 || is.na(std_alpha_val)) {
std_alpha_val <- alpha_result$total$raw_alpha
}
alpha_df <- tibble(
metrica = c("Alpha_Bruto", "Alpha_Padronizado", "N_Itens", "N_Amostra"),
valor = c(as.numeric(alpha_result$total$raw_alpha),
as.numeric(std_alpha_val),
as.numeric(ncol(dados_afe)),
as.numeric(nrow(dados_afe)))
)
write_csv(alpha_df, here("outputs", "02_resultados_confiabilidade.csv"))Nesta etapa são realizadas: (1) recodificação de raça para dicotomia Branco/Não-branco; (2) construção do NSE via PCA; (3) cálculo do índice de clima individual; (4) agregação ao nível da escola; (5) merge com TS_ESCOLA.
aluno <- fread(here("data", "raw", "TS_ALUNO_9EF.csv"),
sep = ";", encoding = "Latin-1")
censo <- fread(here("data", "raw", "microdados_ed_basica_2023.csv"),
sep = ";", encoding = "Latin-1")
aluno <- aluno[ID_UF %in% c(13L, 15L)]
censo <- censo[CO_MUNICIPIO %in% c(1302603L, 1501402L) &
TP_DEPENDENCIA %in% c(2L, 3L)]A dicotomia Branco/Não-branco é o padrão adotado para análise de brecha racial. Amarelos são excluídos da dicotomia pelo baixo n; podem ser analisados separadamente em etapas futuras.
O nível socioeconômico individual é construído pelo 1º componente principal de 9 variáveis: escolaridade dos pais (Q08, Q09) e bens no domicílio (Q12a–Q12g).
niveis_escol <- c("A", "B", "C", "D", "E")
niveis_bens <- c("A", "B", "C", "D")
cod_likert4 <- function(x, levels) {
x[x %in% c(".", "*", "F")] <- NA
as.integer(factor(x, levels = levels, ordered = TRUE))
}
itens_nse <- aluno |>
transmute(
escol_mae = cod_likert4(TX_RESP_Q08, niveis_escol),
escol_pai = cod_likert4(TX_RESP_Q09, niveis_escol),
bem_geladeira = cod_likert4(TX_RESP_Q12a, niveis_bens),
bem_computador = cod_likert4(TX_RESP_Q12b, niveis_bens),
bem_carro = cod_likert4(TX_RESP_Q12c, niveis_bens),
bem_banheiro = cod_likert4(TX_RESP_Q12d, niveis_bens),
bem_quartos = cod_likert4(TX_RESP_Q12e, niveis_bens),
bem_empregada = cod_likert4(TX_RESP_Q12f, niveis_bens),
bem_moto = cod_likert4(TX_RESP_Q12g, niveis_bens)
)
nse_pca <- principal(itens_nse, nfactors = 1, rotate = "none", missing = TRUE)
aluno$nse <- as.numeric(nse_pca$scores[, 1])Seis itens principais; válido para o aluno se ao menos 3 foram respondidos.
niveis_concord <- c("D", "C", "B", "A")
niveis_propor <- c("D", "C", "B", "A")
cod_clima <- function(x, levels) {
x[x %in% c(".", "*")] <- NA
as.integer(factor(x, levels = levels, ordered = TRUE))
}
aluno <- aluno |>
mutate(
clim_seguranca = cod_clima(TX_RESP_Q23d, niveis_concord),
clim_prof_crenca = cod_clima(TX_RESP_Q23h, niveis_concord),
clim_prof_motiv = cod_clima(TX_RESP_Q23i, niveis_concord),
clim_interesse = cod_clima(TX_RESP_Q23a, niveis_concord),
clim_opiniao = cod_clima(TX_RESP_Q23c, niveis_concord),
clim_anti_bullying = cod_clima(TX_RESP_Q22f, niveis_propor),
n_clim_validos = rowSums(!is.na(cbind(
clim_seguranca, clim_prof_crenca, clim_prof_motiv,
clim_interesse, clim_opiniao, clim_anti_bullying
))),
clima_aluno = rowMeans(cbind(
clim_seguranca, clim_prof_crenca, clim_prof_motiv,
clim_interesse, clim_opiniao, clim_anti_bullying
), na.rm = TRUE),
clima_aluno = if_else(n_clim_validos < 3L, NA_real_, clima_aluno)
)escola_df <- aluno |>
group_by(ID_ESCOLA) |>
summarise(
n_alunos = n(),
pct_nao_branco = sum(branco == 0L, na.rm = TRUE) / sum(!is.na(branco)),
nse_medio = mean(nse, na.rm = TRUE),
media_lp_branco = mean(PROFICIENCIA_LP_SAEB[branco == 1L], na.rm = TRUE),
media_lp_nb = mean(PROFICIENCIA_LP_SAEB[branco == 0L], na.rm = TRUE),
media_mt_branco = mean(PROFICIENCIA_MT_SAEB[branco == 1L], na.rm = TRUE),
media_mt_nb = mean(PROFICIENCIA_MT_SAEB[branco == 0L], na.rm = TRUE),
clima_idx = mean(clima_aluno, na.rm = TRUE),
n_clima_validos = sum(!is.na(clima_aluno)),
.groups = "drop"
) |>
mutate(
brecha_lp = media_lp_branco - media_lp_nb,
brecha_mt = media_mt_branco - media_mt_nb,
clima_idx = if_else(n_clima_validos < 10L, NA_real_, clima_idx)
)ts_escola <- fread(
here("data", "raw", "MICRODADOS_SAEB_2023", "DADOS", "TS_ESCOLA.csv"),
sep = ";", encoding = "Latin-1"
)
ts_escola_f <- ts_escola[ID_UF %in% c(13L, 15L)] |>
select(ID_ESCOLA, IN_PUBLICA, ID_LOCALIZACAO,
NIVEL_SOCIO_ECONOMICO,
PC_FORMACAO_DOCENTE_INICIAL,
PC_FORMACAO_DOCENTE_MEDIO,
PC_FORMACAO_DOCENTE_FINAL,
NU_MATRICULADOS_CENSO_9EF,
TAXA_PARTICIPACAO_9EF)
escola_df <- escola_df |>
left_join(ts_escola_f, by = "ID_ESCOLA")
n_escolas <- nrow(escola_df)
n_merged <- sum(!is.na(escola_df$NIVEL_SOCIO_ECONOMICO))
cat(sprintf(
"Escolas no SAEB: %d | Com match em TS_ESCOLA: %d | Taxa de merge: %.1f%%\n",
n_escolas, n_merged, n_merged / n_escolas * 100
))## Escolas no SAEB: 3116 | Com match em TS_ESCOLA: 2962 | Taxa de merge: 95.1%
Esta seção explora a relação entre clima escolar e proficiência a partir dos microdados individuais, usando modelos mistos (random intercept por escola).
library(tidyverse)
library(data.table)
library(here)
library(lme4)
library(lmerTest)
library(broom.mixed)
library(emmeans)
library(scales)dir.create(here("outputs", "figuras"), recursive = TRUE, showWarnings = FALSE)
dir.create(here("outputs", "tabelas"), recursive = TRUE, showWarnings = FALSE)
aluno <- fread(here("data", "clean", "aluno_9ef_filtrado.csv"))
if (file.exists(here("outputs", "02_indice_clima_escolar_por_escola.csv"))) {
clima_escola <- fread(here("outputs", "02_indice_clima_escolar_por_escola.csv"))
} else {
clima_escola <- aluno |>
group_by(ID_ESCOLA) |>
summarise(clima_medio = NA_real_, clima_sd = NA_real_,
n_alunos = n(), .groups = "drop") |>
as.data.frame()
}
aluno <- aluno |>
mutate(
raca = case_when(
TX_RESP_Q04 == "A" ~ "Branca",
TX_RESP_Q04 == "B" ~ "Preta",
TX_RESP_Q04 == "C" ~ "Parda",
TX_RESP_Q04 == "D" ~ "Amarela",
TX_RESP_Q04 == "E" ~ "Indígena",
TRUE ~ NA_character_
),
raca_grupo = case_when(
TX_RESP_Q04 == "A" ~ "Branca",
TX_RESP_Q04 %in% c("B", "C") ~ "Preta/Parda",
TRUE ~ NA_character_
),
raca_grupo = factor(raca_grupo, levels = c("Branca", "Preta/Parda")),
UF = case_when(
ID_UF == 13 ~ "AM (Manaus)",
ID_UF == 15 ~ "PA (Belém)",
TRUE ~ NA_character_
)
)proficiencia_escola_raca <- aluno |>
filter(!is.na(PROFICIENCIA_LP) & !is.na(raca_grupo)) |>
group_by(ID_ESCOLA, raca_grupo) |>
summarise(proficiencia_media = mean(PROFICIENCIA_LP, na.rm = TRUE),
.groups = "drop")
brecha_racial <- proficiencia_escola_raca |>
pivot_wider(names_from = raca_grupo,
values_from = proficiencia_media,
names_prefix = "prof_") |>
mutate(brecha_racial = prof_Branca - `prof_Preta/Parda`, .keep = "unused")
dados_escola <- clima_escola |>
select(ID_ESCOLA, clima_medio, clima_sd, n_alunos) |>
left_join(brecha_racial, by = "ID_ESCOLA")
cat("Escolas na base analítica:", nrow(dados_escola), "\n")## Escolas na base analítica: 3116
## --- Clima Escolar ---
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 1.000 3.071 3.360 3.235 3.561 4.288
## DP: 0.529
##
## --- Brecha Racial ---
## Min. 1st Qu. Median Mean 3rd Qu. Max. NA's
## -1.91780 -0.15745 0.09520 0.07233 0.32294 2.09094 427
## DP: 0.444
##
## --- Distribuição de alunos por raça ---
## raca n pct
## <char> <int> <num>
## 1: Amarela 5379 3.4
## 2: Branca 27664 17.7
## 3: Indígena 4768 3.0
## 4: Parda 100484 64.3
## 5: Preta 18059 11.6
fig1 <- ggplot(dados_escola, aes(x = clima_medio)) +
geom_histogram(aes(y = after_stat(density)),
bins = 50, fill = "#2E86AB", alpha = 0.7, color = "white") +
geom_density(color = "#A23B72", linewidth = 1.2) +
geom_vline(aes(xintercept = mean(clima_medio, na.rm = TRUE)),
color = "#F18F01", linewidth = 1.2, linetype = "dashed") +
annotate("text",
x = mean(dados_escola$clima_medio, na.rm = TRUE) + 0.1, y = 0.8,
label = paste("Média =", round(mean(dados_escola$clima_medio, na.rm = TRUE), 2)),
color = "#F18F01", fontface = "bold") +
labs(title = "Distribuição do Índice de Clima Escolar",
subtitle = "Média por escola (9º ano EF) — Manaus e Belém, 2023",
x = "Índice de Clima Escolar (escala 1–4)", y = "Densidade") +
theme(plot.title = element_text(face = "bold", hjust = 0.5),
plot.subtitle = element_text(hjust = 0.5, color = "gray40"),
panel.grid.minor = element_blank())
fig1fig2 <- ggplot(dados_escola, aes(x = brecha_racial)) +
geom_histogram(aes(y = after_stat(density)),
bins = 50, fill = "#C73E1D", alpha = 0.7, color = "white") +
geom_density(color = "#6A0572", linewidth = 1.2) +
geom_vline(aes(xintercept = mean(brecha_racial, na.rm = TRUE)),
color = "#1B998B", linewidth = 1.2, linetype = "dashed") +
annotate("text",
x = mean(dados_escola$brecha_racial, na.rm = TRUE) + 0.5, y = 0.12,
label = paste("Média =", round(mean(dados_escola$brecha_racial, na.rm = TRUE), 2)),
color = "#1B998B", fontface = "bold") +
labs(title = "Distribuição da Brecha Racial de Proficiência",
subtitle = "Diferença (Branca − Preta/Parda) por escola — Manaus e Belém, 2023",
x = "Brecha Racial (pontos na escala SAEB)", y = "Densidade") +
theme(plot.title = element_text(face = "bold", hjust = 0.5),
plot.subtitle = element_text(hjust = 0.5, color = "gray40"),
panel.grid.minor = element_blank())
fig2fig3 <- ggplot(dados_escola, aes(x = clima_medio, y = brecha_racial)) +
geom_point(alpha = 0.4, size = 2, color = "#2E86AB") +
geom_smooth(method = "lm", se = TRUE, color = "#C73E1D", linewidth = 1) +
geom_hline(yintercept = 0, linetype = "dashed", color = "gray50") +
labs(title = "Clima Escolar e Brecha Racial de Proficiência",
subtitle = "Cada ponto = uma escola. Linha = tendência linear (IC 95%)",
x = "Índice de Clima Escolar",
y = "Brecha Racial (Branca − Preta/Parda)") +
theme(plot.title = element_text(face = "bold", hjust = 0.5),
plot.subtitle = element_text(hjust = 0.5, color = "gray40"),
panel.grid.minor = element_blank())
fig3set.seed(42)
prof_por_raca <- aluno |>
filter(!is.na(PROFICIENCIA_LP) & !is.na(raca_grupo))
prof_por_raca <- slice_sample(prof_por_raca, n = min(50000, nrow(prof_por_raca)))
fig4 <- ggplot(prof_por_raca, aes(x = raca_grupo, y = PROFICIENCIA_LP, fill = raca_grupo)) +
geom_boxplot(alpha = 0.6, outlier.alpha = 0.1) +
stat_summary(fun = "mean", geom = "point", shape = 23, size = 4, color = "black") +
scale_fill_manual(values = c("Branca" = "#A8DADC", "Preta/Parda" = "#457B9D")) +
labs(title = "Proficiência em Língua Portuguesa por Raça/Cor",
subtitle = "Alunos do 9º ano EF — Manaus e Belém, 2023",
x = "Raça/Cor", y = "Proficiência (escala SAEB)") +
theme(plot.title = element_text(face = "bold", hjust = 0.5),
plot.subtitle = element_text(hjust = 0.5, color = "gray40"),
legend.position = "none", panel.grid.minor = element_blank())
fig4resumo_uf <- dados_escola |>
mutate(UF = case_when(
ID_ESCOLA %in% aluno$ID_ESCOLA[aluno$ID_UF == 13] ~ "AM",
ID_ESCOLA %in% aluno$ID_ESCOLA[aluno$ID_UF == 15] ~ "PA",
TRUE ~ NA_character_
)) |>
group_by(UF) |>
summarise(
clima_medio = mean(clima_medio, na.rm = TRUE),
brecha_media = mean(brecha_racial, na.rm = TRUE),
n_escolas = n(), .groups = "drop"
)
fig5 <- resumo_uf |>
pivot_longer(c(clima_medio, brecha_media),
names_to = "variavel", values_to = "valor") |>
mutate(variavel = recode(variavel,
"clima_medio" = "Clima Escolar",
"brecha_media" = "Brecha Racial"
)) |>
ggplot(aes(x = UF, y = valor, fill = UF)) +
geom_col(alpha = 0.8) +
geom_text(aes(label = round(valor, 2)), vjust = -0.5, fontface = "bold") +
facet_wrap(~variavel, scales = "free_y") +
scale_fill_manual(values = c("AM" = "#06A77D", "PA" = "#F18F01")) +
labs(title = "Indicadores por Unidade Federativa",
x = "UF", y = "Valor") +
theme(plot.title = element_text(face = "bold", hjust = 0.5),
legend.position = "none", panel.grid.minor = element_blank(),
strip.text = element_text(face = "bold"))
fig5fig6 <- ggplot(dados_escola,
aes(x = n_alunos, y = clima_medio,
size = brecha_racial, color = brecha_racial)) +
geom_point(alpha = 0.6) +
scale_size_continuous(range = c(1, 8), name = "Brecha Racial") +
scale_color_gradient2(low = "#2E86AB", mid = "#F18F01", high = "#C73E1D",
midpoint = 0, name = "Brecha") +
labs(title = "Tamanho da Escola, Clima e Brecha Racial",
x = "Número de Alunos (9º ano)", y = "Índice de Clima Escolar") +
theme(plot.title = element_text(face = "bold", hjust = 0.5),
panel.grid.minor = element_blank())
fig6Os modelos mistos respeitam a estrutura hierárquica dos dados (alunos aninhados em escolas), com intercepto aleatório por escola.
dados_modelagem <- aluno |>
filter(!is.na(PROFICIENCIA_LP) & !is.na(raca_grupo)) |>
left_join(clima_escola |> select(ID_ESCOLA, clima_medio), by = "ID_ESCOLA") |>
filter(!is.na(clima_medio))
cat("Alunos na modelagem:", nrow(dados_modelagem), "\n")## Alunos na modelagem: 145583
## Escolas: 3035
modelo1 <- lmer(PROFICIENCIA_LP ~ clima_medio + raca_grupo + (1 | ID_ESCOLA),
data = dados_modelagem, REML = TRUE)
print(summary(modelo1)$coefficients)## Estimate Std. Error df t value Pr(>|t|)
## (Intercept) -1.8985734 0.058592690 3982.539 -32.40291 1.212402e-204
## clima_medio 0.5406634 0.017378118 3739.489 31.11174 3.446028e-189
## raca_grupoPreta/Parda -0.1212511 0.005341003 144175.963 -22.70193 6.800866e-114
var_escola <- as.data.frame(VarCorr(modelo1))$vcov[1]
var_residuo <- attr(VarCorr(modelo1), "sc")^2
icc <- var_escola / (var_escola + var_residuo)
cat(sprintf("\nICC = %.4f (%.1f%% da variância está entre escolas)\n",
icc, icc * 100))##
## ICC = 0.1430 (14.3% da variância está entre escolas)
modelo2 <- lmer(PROFICIENCIA_LP ~ clima_medio * raca_grupo + (1 | ID_ESCOLA),
data = dados_modelagem, REML = TRUE)
print(summary(modelo2)$coefficients)## Estimate Std. Error df t value Pr(>|t|)
## (Intercept) -2.1972820 0.08306261 14818.37 -26.453322 1.029853e-150
## clima_medio 0.6259220 0.02417380 13073.02 25.892582 3.371978e-144
## raca_grupoPreta/Parda 0.2320177 0.06984647 145565.42 3.321825 8.945279e-04
## clima_medio:raca_grupoPreta/Parda -0.1010582 0.01992213 145551.69 -5.072662 3.927688e-07
##
## Comparação de modelos:
## Data: dados_modelagem
## Models:
## modelo1: PROFICIENCIA_LP ~ clima_medio + raca_grupo + (1 | ID_ESCOLA)
## modelo2: PROFICIENCIA_LP ~ clima_medio * raca_grupo + (1 | ID_ESCOLA)
## npar AIC BIC logLik -2*log(L) Chisq Df Pr(>Chisq)
## modelo1 5 346779 346828 -173385 346769
## modelo2 6 346755 346815 -173372 346743 25.731 1 3.926e-07 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Call:
## lm(formula = brecha_racial ~ clima_medio, data = dados_escola)
##
## Residuals:
## Min 1Q Median 3Q Max
## -1.94981 -0.23318 0.01397 0.24378 2.29301
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) -0.37069 0.07616 -4.867 1.2e-06 ***
## clima_medio 0.13292 0.02271 5.854 5.4e-09 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 0.4411 on 2687 degrees of freedom
## (427 observations deleted due to missingness)
## Multiple R-squared: 0.01259, Adjusted R-squared: 0.01222
## F-statistic: 34.26 on 1 and 2687 DF, p-value: 5.395e-09
newdata <- expand.grid(
clima_medio = seq(min(dados_modelagem$clima_medio),
max(dados_modelagem$clima_medio), length.out = 100),
raca_grupo = levels(dados_modelagem$raca_grupo)
)
fixef_vals <- fixef(modelo2)
newdata$predicao <- fixef_vals["(Intercept)"] +
fixef_vals["clima_medio"] * newdata$clima_medio +
fixef_vals["raca_grupoPreta/Parda"] * (newdata$raca_grupo == "Preta/Parda") +
fixef_vals["clima_medio:raca_grupoPreta/Parda"] *
(newdata$clima_medio * (newdata$raca_grupo == "Preta/Parda"))
fig7 <- ggplot(newdata, aes(x = clima_medio, y = predicao, color = raca_grupo)) +
geom_line(linewidth = 1.2) +
geom_ribbon(aes(ymin = predicao - 10, ymax = predicao + 10, fill = raca_grupo),
alpha = 0.15, color = NA) +
scale_color_manual(values = c("Branca" = "#1D3557", "Preta/Parda" = "#E63946")) +
scale_fill_manual(values = c("Branca" = "#1D3557", "Preta/Parda" = "#E63946")) +
labs(title = "Efeito do Clima Escolar na Proficiência por Raça",
subtitle = "Predições do modelo multinível com interação",
x = "Índice de Clima Escolar", y = "Proficiência Preditiva (LP)",
color = "Raça/Cor", fill = "Raça/Cor") +
theme(plot.title = element_text(face = "bold", hjust = 0.5),
panel.grid.minor = element_blank())
fig7efeitos_fixos <- broom.mixed::tidy(modelo2, effects = "fixed") |>
filter(term != "(Intercept)") |>
mutate(
termo = case_when(
term == "clima_medio" ~ "Clima Escolar",
term == "raca_grupoPreta/Parda" ~ "Raça (Preta/Parda)",
term == "clima_medio:raca_grupoPreta/Parda" ~ "Interação Clima × Raça"
),
termo = factor(termo, levels = rev(c("Clima Escolar", "Raça (Preta/Parda)",
"Interação Clima × Raça")))
)
fig8 <- ggplot(efeitos_fixos, aes(x = estimate, y = termo)) +
geom_point(size = 4, color = "#2E86AB") +
geom_errorbarh(aes(xmin = estimate - 1.96 * std.error,
xmax = estimate + 1.96 * std.error),
height = 0.2, color = "#A23B72") +
geom_vline(xintercept = 0, linetype = "dashed", color = "gray50") +
labs(title = "Efeitos Fixos do Modelo Multinível",
subtitle = "Intervalos de confiança de 95%",
x = "Coeficiente (β)", y = "") +
theme(plot.title = element_text(face = "bold", hjust = 0.5),
panel.grid.minor = element_blank())
fig8tabela_descritiva <- tibble(
Variavel = c("Clima Escolar (média)", "Clima Escolar (DP)",
"Brecha Racial (média)", "Brecha Racial (DP)",
"N Escolas", "N Alunos"),
Valor = c(
round(mean(dados_escola$clima_medio, na.rm = TRUE), 3),
round(sd(dados_escola$clima_medio, na.rm = TRUE), 3),
round(mean(dados_escola$brecha_racial, na.rm = TRUE), 3),
round(sd(dados_escola$brecha_racial, na.rm = TRUE), 3),
nrow(dados_escola),
nrow(dados_modelagem)
)
)
write_csv(tabela_descritiva,
here("outputs", "tabelas", "01_estatisticas_descritivas.csv"))
tabela_modelos <- broom.mixed::tidy(modelo2, effects = "fixed") |>
mutate(across(where(is.numeric), ~ round(., 4)))
write_csv(tabela_modelos,
here("outputs", "tabelas", "02_resultados_modelo_multinivel.csv"))
tabela_comparacao <- tibble(
Modelo = c("Modelo 1", "Modelo 2"),
AIC = c(AIC(modelo1), AIC(modelo2)),
BIC = c(BIC(modelo1), BIC(modelo2)),
LogLik = c(as.numeric(logLik(modelo1)), as.numeric(logLik(modelo2))),
Deviance = c(deviance(modelo1), deviance(modelo2))
)
write_csv(tabela_comparacao,
here("outputs", "tabelas", "03_comparacao_modelos.csv"))Esta seção utiliza o arquivo escola_integrado.csv (um
registro por escola) para ajustar quatro modelos progressivos da brecha
racial em LP e MT como função do clima escolar, NSE e composição racial
da escola.
library(tidyverse)
library(data.table)
library(here)
library(lme4)
library(lmerTest)
library(broom.mixed)
library(patchwork)escola_df <- fread(here("data", "clean", "escola_integrado.csv")) |>
as_tibble()
cat("N escolas:", nrow(escola_df), "\n")## N escolas: 3116
## --- Brecha Racial em LP ---
cat(sprintf("Média: %.2f | Mediana: %.2f | DP: %.2f | Mín: %.2f | Máx: %.2f\n",
mean(escola_df$brecha_lp, na.rm = TRUE),
median(escola_df$brecha_lp, na.rm = TRUE),
sd(escola_df$brecha_lp, na.rm = TRUE),
min(escola_df$brecha_lp, na.rm = TRUE),
max(escola_df$brecha_lp, na.rm = TRUE)))## Média: 4.16 | Mediana: 5.23 | DP: 24.36 | Mín: -105.66 | Máx: 115.20
##
## --- Clima Escolar (índice) ---
cat(sprintf("Média: %.2f | Mediana: %.2f | DP: %.2f\n",
mean(escola_df$clima_idx, na.rm = TRUE),
median(escola_df$clima_idx, na.rm = TRUE),
sd(escola_df$clima_idx, na.rm = TRUE)))## Média: 3.15 | Mediana: 3.15 | DP: 0.16
fig_blp <- escola_df |>
filter(!is.na(brecha_lp)) |>
ggplot(aes(x = brecha_lp)) +
geom_histogram(bins = 25, fill = "#E63946", alpha = 0.7, color = "white") +
geom_vline(aes(xintercept = mean(brecha_lp, na.rm = TRUE)),
color = "#F77F00", linewidth = 1.2, linetype = "dashed") +
labs(title = "Brecha Racial — Leitura",
x = "Brecha Racial (pontos SAEB)", y = "Frequência") +
theme(plot.title = element_text(face = "bold"))
fig_bmt <- escola_df |>
filter(!is.na(brecha_mt)) |>
ggplot(aes(x = brecha_mt)) +
geom_histogram(bins = 25, fill = "#457B9D", alpha = 0.7, color = "white") +
geom_vline(aes(xintercept = mean(brecha_mt, na.rm = TRUE)),
color = "#F77F00", linewidth = 1.2, linetype = "dashed") +
labs(title = "Brecha Racial — Matemática",
x = "Brecha Racial (pontos SAEB)", y = "Frequência") +
theme(plot.title = element_text(face = "bold"))
fig_blp + fig_bmtscatter_plot <- function(data, y_var, titulo) {
data |>
filter(!is.na(clima_idx) & !is.na(.data[[y_var]])) |>
ggplot(aes(x = clima_idx, y = .data[[y_var]], color = estado)) +
geom_point(size = 3, alpha = 0.6) +
geom_smooth(aes(color = NULL), method = "lm", se = TRUE,
color = "#1D3557", fill = "#457B9D", alpha = 0.15, linewidth = 1.2) +
geom_hline(yintercept = 0, linetype = "dashed", color = "gray50", alpha = 0.5) +
scale_color_manual(values = c("Amazonas" = "#E63946", "Pará" = "#457B9D"),
name = "Estado") +
labs(title = titulo, x = "Índice de Clima Escolar",
y = "Brecha Racial (pontos SAEB)") +
theme(plot.title = element_text(face = "bold"),
panel.grid.minor = element_blank(), legend.position = "bottom")
}
fig3 <- scatter_plot(escola_df, "brecha_lp",
"Associação Clima × Brecha Racial (Leitura)")
fig4 <- scatter_plot(escola_df, "brecha_mt",
"Associação Clima × Brecha Racial (Matemática)")
fig3fig5 <- escola_df |>
filter(!is.na(brecha_lp) & estado != "Outro") |>
ggplot(aes(x = estado, y = brecha_lp, fill = estado)) +
geom_boxplot(alpha = 0.7, color = "white", linewidth = 1) +
geom_jitter(width = 0.2, alpha = 0.3, size = 2, color = "gray40") +
scale_fill_manual(values = c("Amazonas" = "#E63946", "Pará" = "#457B9D"),
guide = "none") +
labs(title = "Brecha Racial por Estado",
x = "Estado", y = "Brecha Racial em LP (pontos SAEB)") +
theme(plot.title = element_text(face = "bold"),
panel.grid.minor = element_blank(), panel.grid.major.x = element_blank())
fig5Os modelos estimam a brecha racial em LP em função do clima escolar, com controles progressivos para NSE médio e composição racial.
data_model <- escola_df |>
filter(!is.na(brecha_lp) & !is.na(clima_idx) & !is.na(nse_medio)) |>
as.data.frame()
cat("Escolas na modelagem:", nrow(data_model), "\n")## Escolas na modelagem: 2552
## --- MODELO 0: NULO ---
if (!is.null(grupo_col)) {
m0 <- lmer(as.formula(paste("brecha_lp ~ 1 + (1 |", grupo_col, ")")),
data = data_model, REML = FALSE)
vc <- as.data.frame(VarCorr(m0))
icc_val <- vc$vcov[1] / sum(vc$vcov)
cat("ICC:", round(icc_val, 4), "\n")
print(VarCorr(m0))
} else {
m0 <- NULL
cat("Sem coluna de agrupamento — modelo nulo omitido.\n")
}## Sem coluna de agrupamento — modelo nulo omitido.
ajustar <- function(formula_str) {
if (!is.null(grupo_col)) {
lmer(as.formula(formula_str), data = data_model, REML = FALSE)
} else {
lm(as.formula(sub("\\s*\\+\\s*\\(1 \\| .*?\\)", "", formula_str)),
data = data_model)
}
}
m1 <- ajustar(paste("brecha_lp ~ clima_idx + (1 |", grupo_col, ")"))
m2 <- ajustar(paste("brecha_lp ~ clima_idx + nse_medio + (1 |", grupo_col, ")"))
m3 <- ajustar(paste("brecha_lp ~ clima_idx + nse_medio + pct_nao_branco + (1 |", grupo_col, ")"))
m4 <- ajustar(paste("brecha_lp ~ clima_idx * pct_nao_branco + nse_medio + (1 |", grupo_col, ")"))
cat("\n--- Coeficientes Modelo 1 ---\n"); print(summary(m1)$coefficients)##
## --- Coeficientes Modelo 1 ---
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 54.48872 9.287954 5.866601 5.023948e-09
## clima_idx -15.91519 2.950250 -5.394522 7.502595e-08
##
## --- Coeficientes Modelo 2 ---
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 46.653158 9.9010257 4.711952 2.585372e-06
## clima_idx -13.353846 3.1562449 -4.230928 2.409493e-05
## nse_medio 2.180864 0.9603211 2.270974 2.323165e-02
##
## --- Coeficientes Modelo 3 ---
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 47.1247412 10.646757 4.4262062 9.994141e-06
## clima_idx -13.3184351 3.170476 -4.2007679 2.751552e-05
## nse_medio 2.1093718 1.128657 1.8689212 6.174842e-02
## pct_nao_branco -0.7206086 5.974164 -0.1206208 9.040009e-01
##
## --- Coeficientes Modelo 4 ---
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) -40.242376 78.218064 -0.5144895 0.60695441
## clima_idx 14.648266 25.006807 0.5857712 0.55808121
## pct_nao_branco 105.021276 93.977694 1.1175128 0.26388053
## nse_medio 2.285881 1.139404 2.0062078 0.04493963
## clima_idx:pct_nao_branco -33.789902 29.969912 -1.1274609 0.25965388
## Analysis of Variance Table
##
## Model 1: brecha_lp ~ clima_idx
## Model 2: brecha_lp ~ clima_idx + nse_medio
## Model 3: brecha_lp ~ clima_idx + nse_medio + pct_nao_branco
## Model 4: brecha_lp ~ clima_idx * pct_nao_branco + nse_medio
## Res.Df RSS Df Sum of Sq F Pr(>F)
## 1 2550 1401167
## 2 2549 1398338 1 2829.22 5.1559 0.02325 *
## 3 2548 1398330 1 7.98 0.0146 0.90400
## 4 2547 1397632 1 697.54 1.2712 0.25965
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
get_fixef <- function(model) {
if (inherits(model, "lmerMod")) fixef(model) else coef(model)
}
coef_m3 <- get_fixef(m3)
pval_m3 <- summary(m3)$coefficients["clima_idx", "Pr(>|t|)"]
cat("Efeito do clima na brecha:", round(coef_m3["clima_idx"], 4), "\n")## Efeito do clima na brecha: -13.3184
## p-valor: 0
if (pval_m3 < 0.05) {
dir <- if (coef_m3["clima_idx"] < 0) "REDUZ" else "AMPLIA"
cat("→ Resultado: clima", dir, "a brecha racial (p < 0.05)\n")
} else {
cat("→ Resultado: clima não prediz estatisticamente a brecha (p >= 0.05)\n")
}## → Resultado: clima REDUZ a brecha racial (p < 0.05)
tabela_comp <- if (!is.null(m0)) {
tibble(Modelo = c("M0 (Nulo)", "M1 (Clima)", "M2 (+ NSE)", "M3 (+ % NB)", "M4 (Interação)"),
AIC = round(AIC(m0, m1, m2, m3, m4)$AIC, 1),
BIC = round(BIC(m0, m1, m2, m3, m4)$BIC, 1))
} else {
tibble(Modelo = c("M1 (Clima)", "M2 (+ NSE)", "M3 (+ % NB)", "M4 (Interação)"),
AIC = round(AIC(m1, m2, m3, m4)$AIC, 1),
BIC = round(BIC(m1, m2, m3, m4)$BIC, 1))
}
write_csv(tabela_comp, here("outputs", "tabelas", "04_01_comparacao_modelos.csv"))
format_coefs <- function(model, nome) {
tidy(model, effects = "fixed") |>
mutate(model = nome,
across(where(is.numeric), ~ round(., 4)),
ci_lower = round(estimate - 1.96 * std.error, 4),
ci_upper = round(estimate + 1.96 * std.error, 4)) |>
select(model, term, estimate, std.error, ci_lower, ci_upper, statistic, p.value)
}
resultados <- bind_rows(
format_coefs(m1, "M1: Clima"),
format_coefs(m2, "M2: Clima + NSE"),
format_coefs(m3, "M3: Clima + NSE + %NB"),
format_coefs(m4, "M4: Interação")
)
write_csv(resultados, here("outputs", "tabelas", "04_02_coeficientes_modelos.csv"))Os modelos probit estimam a probabilidade de atingir proficiência adequada no SAEB 2023 (LP ≥ 275 pts; MT ≥ 300 pts) em função de raça, clima escolar e NSE. A abordagem de Marginal Effects at the Mean (MEM) avalia cada grupo racial com as covariáveis fixadas nas suas médias amostrais.
library(tidyverse)
library(data.table)
library(psych)
library(here)
library(patchwork)
library(scales)aluno_raw <- fread(here("data", "clean", "aluno_9ef_filtrado.csv"),
sep = ";", encoding = "Latin-1")
escola_df <- fread(here("data", "clean", "escola_integrado.csv"),
sep = ";", encoding = "Latin-1") |>
as_tibble()
cat("Alunos:", nrow(aluno_raw), "| Escolas:", nrow(escola_df), "\n")## Alunos: 193097 | Escolas: 3116
cod_ordinal <- function(x, levels) {
x[x %in% c(".", "*", "F")] <- NA_character_
as.integer(factor(x, levels = levels, ordered = TRUE))
}
niveis_concord <- c("D", "C", "B", "A")
niveis_bens <- c("A", "B", "C", "D")
niveis_escol <- c("A", "B", "C", "D", "E")
aluno <- aluno_raw |>
as_tibble() |>
mutate(
branco = case_when(
TX_RESP_Q04 == "A" ~ 1L,
TX_RESP_Q04 %in% c("B", "C", "E") ~ 0L,
TRUE ~ NA_integer_
),
raca_label = case_when(
branco == 1L ~ "Branco",
branco == 0L ~ "Não-branco",
TRUE ~ NA_character_
)
) |>
mutate(
clim_seguranca = cod_ordinal(TX_RESP_Q23d, niveis_concord),
clim_prof_crenca = cod_ordinal(TX_RESP_Q23h, niveis_concord),
clim_prof_motiv = cod_ordinal(TX_RESP_Q23i, niveis_concord),
clim_interesse = cod_ordinal(TX_RESP_Q23a, niveis_concord),
clim_opiniao = cod_ordinal(TX_RESP_Q23c, niveis_concord),
clim_anti_bullying = cod_ordinal(TX_RESP_Q22f, niveis_concord),
n_clim_validos = rowSums(!is.na(cbind(
clim_seguranca, clim_prof_crenca, clim_prof_motiv,
clim_interesse, clim_opiniao, clim_anti_bullying
))),
clima_aluno = if_else(
n_clim_validos >= 3L,
rowMeans(cbind(clim_seguranca, clim_prof_crenca, clim_prof_motiv,
clim_interesse, clim_opiniao, clim_anti_bullying),
na.rm = TRUE),
NA_real_
),
prof_lp_adeq = as.integer(!is.na(PROFICIENCIA_LP_SAEB) &
PROFICIENCIA_LP_SAEB >= LIMIAR_LP),
prof_mt_adeq = as.integer(!is.na(PROFICIENCIA_MT_SAEB) &
PROFICIENCIA_MT_SAEB >= LIMIAR_MT),
estado = case_when(
ID_UF == 13L ~ "Amazonas",
ID_UF == 15L ~ "Pará",
TRUE ~ "Outro"
)
)itens_nse <- aluno |>
transmute(
escol_mae = cod_ordinal(TX_RESP_Q08, niveis_escol),
escol_pai = cod_ordinal(TX_RESP_Q09, niveis_escol),
bem_geladeira = cod_ordinal(TX_RESP_Q12a, niveis_bens),
bem_computador = cod_ordinal(TX_RESP_Q12b, niveis_bens),
bem_carro = cod_ordinal(TX_RESP_Q12c, niveis_bens),
bem_banheiro = cod_ordinal(TX_RESP_Q12d, niveis_bens),
bem_quartos = cod_ordinal(TX_RESP_Q12e, niveis_bens),
bem_empregada = cod_ordinal(TX_RESP_Q12f, niveis_bens),
bem_moto = cod_ordinal(TX_RESP_Q12g, niveis_bens)
)
nse_pca <- principal(itens_nse, nfactors = 1, rotate = "none", missing = TRUE)
aluno$nse <- as.numeric(nse_pca$scores[, 1])
cat(sprintf("Variância explicada pelo PC1: %.1f%%\n",
nse_pca$Vaccounted["Proportion Var", 1] * 100))## Variância explicada pelo PC1: 33.2%
aluno <- aluno |>
left_join(escola_df |> select(ID_ESCOLA, clima_idx), by = "ID_ESCOLA")
dados_probit <- aluno |>
filter(!is.na(branco), !is.na(clima_idx), !is.na(nse),
!is.na(PROFICIENCIA_LP_SAEB), !is.na(PROFICIENCIA_MT_SAEB))
cat("N total:", nrow(dados_probit),
"| Brancos:", sum(dados_probit$branco == 1L, na.rm = TRUE),
"| Não-brancos:", sum(dados_probit$branco == 0L, na.rm = TRUE), "\n")## N total: 148314 | Brancos: 27312 | Não-brancos: 121002
## % LP adequada: 28.5 %
## % MT adequada: 10.6 %
m1_lp <- glm(prof_lp_adeq ~ branco + clima_c + nse_c,
family = binomial("probit"), data = dados_probit)
m1_mt <- glm(prof_mt_adeq ~ branco + clima_c + nse_c,
family = binomial("probit"), data = dados_probit)
m2_lp <- glm(prof_lp_adeq ~ branco * clima_c + nse_c,
family = binomial("probit"), data = dados_probit)
m2_mt <- glm(prof_mt_adeq ~ branco * clima_c + nse_c,
family = binomial("probit"), data = dados_probit)
cat("--- Coeficientes M2-LP ---\n"); print(summary(m2_lp)$coefficients)## --- Coeficientes M2-LP ---
## Estimate Std. Error z value Pr(>|z|)
## (Intercept) -0.6335697 0.003930502 -161.193097 0.000000e+00
## branco 0.2324649 0.008945406 25.987071 6.933562e-149
## clima_c -0.3760560 0.028018881 -13.421523 4.523238e-41
## nse_c 0.2339305 0.003527743 66.311641 0.000000e+00
## branco:clima_c -0.1525048 0.064524791 -2.363507 1.810287e-02
##
## --- Coeficientes M2-MT ---
## Estimate Std. Error z value Pr(>|z|)
## (Intercept) -1.30671953 0.005046506 -258.935477 0.000000e+00
## branco 0.13771051 0.011055841 12.455906 1.298679e-35
## clima_c 0.07159213 0.035713294 2.004635 4.500205e-02
## nse_c 0.21447644 0.004330499 49.526952 0.000000e+00
## branco:clima_c -0.17718770 0.079241026 -2.236060 2.534783e-02
nd_medio <- data.frame(branco = c(0L, 1L), clima_c = 0, nse_c = 0)
mem <- nd_medio |>
as_tibble() |>
mutate(
raca_label = c("Não-branco", "Branco"),
prob_lp_m1 = predict(m1_lp, nd_medio, type = "response"),
prob_lp_m2 = predict(m2_lp, nd_medio, type = "response"),
prob_mt_m1 = predict(m1_mt, nd_medio, type = "response"),
prob_mt_m2 = predict(m2_mt, nd_medio, type = "response")
)
print(mem |> select(raca_label, starts_with("prob")))## # A tibble: 2 × 5
## raca_label prob_lp_m1 prob_lp_m2 prob_mt_m1 prob_mt_m2
## <chr> <dbl> <dbl> <dbl> <dbl>
## 1 Não-branco 0.263 0.263 0.0957 0.0957
## 2 Branco 0.345 0.344 0.122 0.121
clima_seq <- seq(min(dados_probit$clima_c, na.rm = TRUE),
max(dados_probit$clima_c, na.rm = TRUE),
length.out = 300)
grade <- expand.grid(branco = c(0L, 1L), clima_c = clima_seq, nse_c = 0) |>
as_tibble() |>
mutate(raca_label = ifelse(branco == 1L, "Branco", "Não-branco"),
clima_orig = clima_c + media_clima)
pred_ic <- function(modelo, newdata) {
p <- predict(modelo, newdata = newdata, type = "link", se.fit = TRUE)
tibble(prob = pnorm(p$fit),
lower = pnorm(p$fit - 1.96 * p$se.fit),
upper = pnorm(p$fit + 1.96 * p$se.fit))
}
ic_lp <- pred_ic(m2_lp, grade)
ic_mt <- pred_ic(m2_mt, grade)
curvas <- grade |>
mutate(prob_lp = ic_lp$prob, lo_lp = ic_lp$lower, hi_lp = ic_lp$upper,
prob_mt = ic_mt$prob, lo_mt = ic_mt$lower, hi_mt = ic_mt$upper)
cores_raca <- c("Branco" = "#1D3557", "Não-branco" = "#E63946")
montar_curva <- function(data, y_col, lo_col, hi_col, titulo, subtitulo) {
ggplot(data, aes(x = clima_orig, color = raca_label, fill = raca_label)) +
geom_ribbon(aes(ymin = .data[[lo_col]], ymax = .data[[hi_col]]),
alpha = 0.12, color = NA) +
geom_line(aes(y = .data[[y_col]]), linewidth = 1.4) +
geom_vline(xintercept = media_clima, linetype = "dashed",
color = "gray60", linewidth = 0.8) +
annotate("text", x = media_clima + 0.05, y = 0.06,
label = "Média", size = 3.5, color = "gray50") +
scale_color_manual(values = cores_raca, name = "Grupo racial") +
scale_fill_manual(values = cores_raca, name = "Grupo racial") +
scale_y_continuous(labels = percent_format(accuracy = 1), limits = c(0, 1)) +
labs(title = titulo, subtitle = subtitulo,
x = "Índice de Clima Escolar", y = "Probabilidade Predita") +
theme(plot.title = element_text(face = "bold"),
panel.grid.minor = element_blank(), legend.position = "bottom")
}
fig_lp <- montar_curva(curvas, "prob_lp", "lo_lp", "hi_lp",
"Probabilidade Predita — Língua Portuguesa",
paste0("Modelo probit com interação | LP ≥ ", LIMIAR_LP, " pts | IC 95%"))
fig_mt <- montar_curva(curvas, "prob_mt", "lo_mt", "hi_mt",
"Probabilidade Predita — Matemática",
paste0("Modelo probit com interação | MT ≥ ", LIMIAR_MT, " pts | IC 95%"))
fig_lpggsave(here("outputs", "figuras", "05_01_prob_predita_lp.png"),
fig_lp, width = 10, height = 6, dpi = 300)
ggsave(here("outputs", "figuras", "05_02_prob_predita_mt.png"),
fig_mt, width = 10, height = 6, dpi = 300)fig_painel <- (fig_lp / fig_mt) +
plot_annotation(
title = "Probabilidade Predita de Proficiência Adequada — SAEB 2023",
subtitle = "Modelos probit | Manaus (AM) e Belém (PA) | Escolas públicas",
theme = theme(plot.title = element_text(face = "bold", size = 14),
plot.subtitle = element_text(color = "gray50"))
)
fig_painelquartis <- quantile(dados_probit$clima_idx, probs = c(0.25, 0.50, 0.75), na.rm = TRUE)
nd_quartis <- expand.grid(branco = c(0L, 1L), clima_q = as.numeric(quartis), nse_c = 0) |>
as_tibble() |>
mutate(raca_label = ifelse(branco == 1L, "Branco", "Não-branco"),
clima_c = clima_q - media_clima,
quartil = rep(c("Q1 (25%)", "Q2 (50%)", "Q3 (75%)"), each = 2))
nd_quartis$prob_lp <- predict(m2_lp, nd_quartis |> select(branco, clima_c, nse_c),
type = "response")
nd_quartis$prob_mt <- predict(m2_mt, nd_quartis |> select(branco, clima_c, nse_c),
type = "response")
print(nd_quartis |> select(quartil, raca_label, clima_q, prob_lp, prob_mt))## # A tibble: 6 × 5
## quartil raca_label clima_q prob_lp prob_mt
## <chr> <chr> <dbl> <dbl> <dbl>
## 1 Q1 (25%) Não-branco 3.01 0.275 0.0945
## 2 Q1 (25%) Branco 3.01 0.363 0.123
## 3 Q2 (50%) Não-branco 3.10 0.264 0.0956
## 4 Q2 (50%) Branco 3.10 0.346 0.121
## 5 Q3 (75%) Não-branco 3.20 0.252 0.0968
## 6 Q3 (75%) Branco 3.20 0.326 0.119
write_csv(nd_quartis |> select(quartil, clima_q, raca_label, prob_lp, prob_mt),
here("outputs", "tabelas", "05_04_prob_por_quartil_clima.csv"))
fig_quartis <- nd_quartis |>
pivot_longer(c(prob_lp, prob_mt), names_to = "disciplina", values_to = "prob") |>
mutate(disciplina = recode(disciplina,
"prob_lp" = "Língua Portuguesa", "prob_mt" = "Matemática")) |>
ggplot(aes(x = quartil, y = prob, fill = raca_label)) +
geom_col(position = position_dodge(0.7), width = 0.6, alpha = 0.85) +
geom_text(aes(label = percent(prob, accuracy = 0.1)),
position = position_dodge(0.7), vjust = -0.4, size = 3.5, fontface = "bold") +
facet_wrap(~disciplina) +
scale_fill_manual(values = cores_raca, name = "Grupo racial") +
scale_y_continuous(labels = percent_format(accuracy = 1), limits = c(0, 1),
expand = expansion(mult = c(0, 0.12))) +
labs(title = "Probabilidade Predita por Quartil de Clima Escolar",
subtitle = "NSE mantido na média | Modelo probit com interação raça × clima",
x = NULL, y = "Probabilidade Predita") +
theme(plot.title = element_text(face = "bold"),
panel.grid.major.x = element_blank(), panel.grid.minor = element_blank(),
legend.position = "bottom")
fig_quartisformatar_coefs <- function(modelo, nome) {
coefs <- summary(modelo)$coefficients
as.data.frame(coefs) |>
rownames_to_column("Variável") |>
transmute(
Modelo = nome,
Variável,
Estimativa = round(Estimate, 4),
`Erro Padrão` = round(`Std. Error`, 4),
`Estatística z` = round(`z value`, 3),
`p-valor` = round(`Pr(>|z|)`, 4),
`Sig.` = case_when(
`Pr(>|z|)` < 0.001 ~ "***",
`Pr(>|z|)` < 0.01 ~ "**",
`Pr(>|z|)` < 0.05 ~ "*",
`Pr(>|z|)` < 0.10 ~ ".",
TRUE ~ ""
)
)
}
coeficientes <- bind_rows(
formatar_coefs(m1_lp, "LP — M1 (sem interação)"),
formatar_coefs(m2_lp, "LP — M2 (com interação)"),
formatar_coefs(m1_mt, "MT — M1 (sem interação)"),
formatar_coefs(m2_mt, "MT — M2 (com interação)")
)
write_csv(coeficientes, here("outputs", "tabelas", "05_02_coeficientes_probit.csv"))
tabela_ajuste <- tibble(
Modelo = c("LP — M1", "LP — M2", "MT — M1", "MT — M2"),
AIC = round(c(AIC(m1_lp), AIC(m2_lp), AIC(m1_mt), AIC(m2_mt)), 1),
BIC = round(c(BIC(m1_lp), BIC(m2_lp), BIC(m1_mt), BIC(m2_mt)), 1),
Deviance = round(c(deviance(m1_lp), deviance(m2_lp), deviance(m1_mt), deviance(m2_mt)), 1),
`N obs.` = nrow(dados_probit)
)
write_csv(tabela_ajuste, here("outputs", "tabelas", "05_03_ajuste_modelos_probit.csv"))
cat("Todos os arquivos exportados para outputs/tabelas/ e outputs/figuras/\n")## Todos os arquivos exportados para outputs/tabelas/ e outputs/figuras/
## R version 4.5.3 (2026-03-11)
## Platform: aarch64-apple-darwin20
## Running under: macOS Tahoe 26.3.1
##
## Matrix products: default
## BLAS: /System/Library/Frameworks/Accelerate.framework/Versions/A/Frameworks/vecLib.framework/Versions/A/libBLAS.dylib
## LAPACK: /Library/Frameworks/R.framework/Versions/4.5-arm64/Resources/lib/libRlapack.dylib; LAPACK version 3.12.1
##
## locale:
## [1] en_US.UTF-8/en_US.UTF-8/en_US.UTF-8/C/en_US.UTF-8/en_US.UTF-8
##
## time zone: America/Recife
## tzcode source: internal
##
## attached base packages:
## [1] stats graphics grDevices utils datasets methods base
##
## other attached packages:
## [1] patchwork_1.3.2 scales_1.4.0 emmeans_2.0.3 broom.mixed_0.2.9.7
## [5] lmerTest_3.2-1 lme4_2.0-1 Matrix_1.7-4 psych_2.6.3
## [9] here_1.0.2 lubridate_1.9.5 forcats_1.0.1 stringr_1.6.0
## [13] dplyr_1.2.1 purrr_1.2.2 readr_2.2.0 tidyr_1.3.2
## [17] tibble_3.3.1 ggplot2_4.0.2 tidyverse_2.0.0 data.table_1.18.2.1
##
## loaded via a namespace (and not attached):
## [1] tidyselect_1.2.1 farver_2.1.2 S7_0.2.1 fastmap_1.2.0
## [5] digest_0.6.39 timechange_0.4.0 estimability_1.5.1 lifecycle_1.0.5
## [9] magrittr_2.0.5 compiler_4.5.3 rlang_1.2.0 sass_0.4.10
## [13] tools_4.5.3 utf8_1.2.6 yaml_2.3.12 knitr_1.51
## [17] labeling_0.4.3 bit_4.6.0 mnormt_2.1.2 RColorBrewer_1.1-3
## [21] rsconnect_1.8.0 withr_3.0.2 numDeriv_2016.8-1.1 grid_4.5.3
## [25] future_1.70.0 GPArotation_2025.3-1 globals_0.19.1 MASS_7.3-65
## [29] cli_3.6.6 mvtnorm_1.3-7 rmarkdown_2.31 crayon_1.5.3
## [33] ragg_1.5.2 reformulas_0.4.4 generics_0.1.4 rstudioapi_0.18.0
## [37] tzdb_0.5.0 minqa_1.2.8 cachem_1.1.0 splines_4.5.3
## [41] parallel_4.5.3 vctrs_0.7.3 boot_1.3-32 jsonlite_2.0.0
## [45] hms_1.1.4 bit64_4.6.0-1 listenv_0.10.1 systemfonts_1.3.2
## [49] jquerylib_0.1.4 glue_1.8.0 parallelly_1.46.1 nloptr_2.2.1
## [53] codetools_0.2-20 stringi_1.8.7 gtable_0.3.6 furrr_0.4.0
## [57] pillar_1.11.1 htmltools_0.5.9 R6_2.6.1 textshaping_1.0.5
## [61] Rdpack_2.6.6 rprojroot_2.1.1 vroom_1.7.1 evaluate_1.0.5
## [65] lattice_0.22-9 rbibutils_2.4.1 backports_1.5.1 broom_1.0.12
## [69] renv_1.2.1 bslib_0.10.0 Rcpp_1.1.1 coda_0.19-4.1
## [73] nlme_3.1-168 mgcv_1.9-4 xfun_0.57 pkgconfig_2.0.3