Carregando os pacotes necessários

library(readr)     #para ler dados
library(dplyr)     #para tratamento de dados
library(ggplot2)   #para gerar e tratar gráficos
library(gtsummary) #para tratamento de análises estatísticas e relatórios
library(sjPlot)    #para plotar gráficos do modelo de regressão

Carregando dados

dados <- read.csv("ideb.csv")

Ao analisar as linhas e colunas observamos que as variáveis podem ser divididas em: Qualitativas Nominais (sigla_uf, id_municipio, id_escola e rede), Qualitativas Ordinais (ano, ensino e anos escolares) e Quantitativas Contínuas (indicador rendimento, nota_saeb_media_padronizada, nota_saeb_matematica, nota_saeb_lingua_portuguesa, ideb e taxa aprovação). Como estamos tratando do Ideb, creio que a variável dependente deva ser ela. Já as independentes seriam nota_saeb_matematica, nota_saeb_lingua_portuguesa, e taxa_aprovacao. Já sigla_uf, rede, ensino, id_municipio e escola, podem ser utilizadas para trazer um elemento específico da escola, município, estado etc.

Cria uma variável binária que indica se a escola atingiu nota maior que 5.9

Como escolhemos o ideb, a nossa meta será 6,0. Meta proposta também pelo governo federal. Sendo que esses estudantes também alcançam alto desempenho no PISA. Fonte: https://jeduca.org.br/guia/guia-explica-o-ideb. Acesso: 14 de outubro de 2024.

dados <- dados |>
  mutate(atingiu = ifelse(ideb > 5.9,1,0))

Mostra a proporção entre as escolas que atingiram e as que não

tabela <- table(dados$atingiu)
proporcao <- prop.table(tabela)
print(proporcao)
## 
##         0         1 
## 0.8613071 0.1386929

Criando Modelo de Regressão Logística

A nota do ideb é calculada por ((pt + mat)/2).(tx_aprov/100), por isso, três dessas variáveis são fundamentais para o modelo. Sendo interessante utilizar a variável rede para analisar sua influência na possibilidade de alcançar notas altas.

regressao_logistica_ideb <- glm(atingiu ~ nota_saeb_lingua_portuguesa + 
                                  nota_saeb_matematica + taxa_aprovacao + rede, 
                                data = dados, family = binomial)

Exibe os resultados do modelo

summary(regressao_logistica_ideb)
## 
## Call:
## glm(formula = atingiu ~ nota_saeb_lingua_portuguesa + nota_saeb_matematica + 
##     taxa_aprovacao + rede, family = binomial, data = dados)
## 
## Coefficients:
##                               Estimate Std. Error z value Pr(>|z|)    
## (Intercept)                 -4.657e+01  1.723e-01 -270.24   <2e-16 ***
## nota_saeb_lingua_portuguesa -6.512e-02  4.086e-04 -159.37   <2e-16 ***
## nota_saeb_matematica         1.005e-01  4.763e-04  211.07   <2e-16 ***
## taxa_aprovacao               3.659e-01  1.600e-03  228.77   <2e-16 ***
## redefederal                  1.014e+00  9.432e-02   10.75   <2e-16 ***
## redemunicipal                1.182e+00  1.033e-02  114.45   <2e-16 ***
## redeprivada                 -1.746e+00  9.701e-02  -18.00   <2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## (Dispersion parameter for binomial family taken to be 1)
## 
##     Null deviance: 567878  on 705291  degrees of freedom
## Residual deviance: 324585  on 705285  degrees of freedom
##   (459215 observations deleted due to missingness)
## AIC: 324599
## 
## Number of Fisher Scoring iterations: 8

São dados quatro coeficientes: intercept - onde a função toca o eixo y, ou seja, valor da variável dependente quando todas as variáveis independentes forem nulas. Em seguida, são fornecidos os coeficiente beta 1, 2 e 3. O Std. Erros é o erro padrão de cada coeficiente estimado. Tendo a variável nota_saeb_lingua_portuguesa o coeficiente com menor erro padrão e o intercept o maior erro padrão. Por fim, temos um p-value próximo de zero, mostrando que tais variáveis são estatisticamente muito significativos. Não soube analisar os demais dados, visto que parece ser contraditório, inicialmente o modelo parece bom, no final não.

Cria tabela com os coeficientes do modelo

tbl_regression(regressao_logistica_ideb, #Para mostrar os Odds Ratios
               label = list(nota_saeb_lingua_portuguesa ~ "Nota SAEB Língua Portuguesa",
                            nota_saeb_matematica ~ "Nota SAEB Matemática",
                            taxa_aprovacao ~ "Taxa de Aprovação")) #Renomear variáveis se desejado)
Characteristic log(OR)1 95% CI1 p-value
Nota SAEB Língua Portuguesa -0.07 -0.07, -0.06 <0.001
Nota SAEB Matemática 0.10 0.10, 0.10 <0.001
Taxa de Aprovação 0.37 0.36, 0.37 <0.001
rede


    estadual
    federal 1.0 0.83, 1.2 <0.001
    municipal 1.2 1.2, 1.2 <0.001
    privada -1.7 -1.9, -1.6 <0.001
1 OR = Odds Ratio, CI = Confidence Interval

Todos os coeficientes, com excessão da rede estadual. Um dos motivos é que o p-valor é menor que 0,05. Indicando um alto grau de ajuste entre o modelo e os dados.

Gráfico dos coeficientes

plot_model(regressao_logistica_ideb,
           type = "est",
           show.values = TRUE,
           value.offset = 0.3,
           title = "Coeficientes da Regressão Logística",
           axis.labels = c("Rede Privada", "Rede Municipal","Rede Federal",
                           "Taxa de Aprovação", "Nota SAEB Matemática",
                           "Nota SAEB Língua Portuguesa"),
           ci.method = "wald") +  # Usando o método Wald para CI
  theme_minimal()

Como podemos observar no gráfico, em vermelho estão as variáveis que trazem um descréscimo em relaçãoa probabilidade de uma determinada escola atingir a mádia 6.0. Já as em azul indicam um aumento nas chances, sendo que a Rede Municipal e Federal, aumentam em algumas vezes essa chance. Os três asteriscos indicam que tais variáveis são estatísticamente muito sigiificativas.

Tabela com Odds Ratios a partir dos coeficientes do modelo

tbl_regression(regressao_logistica_ideb,
                                exponentiate = TRUE,  # Para mostrar os Odds Ratios
                                label = list(nota_saeb_lingua_portuguesa ~ "Nota SAEB Língua Portuguesa",
                                             nota_saeb_matematica ~ "Nota SAEB Matemática",
                                             taxa_aprovacao ~ "Taxa de Aprovação",
                                             rede ~ "Tipo de Rede"))  # Para os rótulos das variáveis
Characteristic OR1 95% CI1 p-value
Nota SAEB Língua Portuguesa 0.94 0.94, 0.94 <0.001
Nota SAEB Matemática 1.11 1.10, 1.11 <0.001
Taxa de Aprovação 1.44 1.44, 1.45 <0.001
Tipo de Rede


    estadual
    federal 2.76 2.29, 3.32 <0.001
    municipal 3.26 3.20, 3.33 <0.001
    privada 0.17 0.14, 0.21 <0.001
1 OR = Odds Ratio, CI = Confidence Interval

Aqui vamos analisar as Odds Ratios, visto que o intervalo de confiabilidade e o p-value já foram discutidos. Contudo, vale ressaltar que sendo o p-valor bem pequeno e o intervalo de confiabilidade também pequeno temos um indicativo de alta precisão. Em relação a OR da Nota SAEB de Língua Portuguesa (0,94) indica que um aumento nessa nota implica num descréscimo da probabilidade de uma escola atingir a média 6.0 no Ideb. Em relação, ao demais parâmetros quantitativos, todos eles têm associados um acréscimo na probabilidade da escola de atingir a média esperada. Por fim, ao tratarmos do tipo de rede, observamos que a escola sendo federal ou municipal possui 2.76 e 3.26 vezes a chance de atingir a média esperada. Enquanto ser uma escola privada reduz a chance de atingir essa média em 83%. No caso específico da rede privada, tempo um intervalo de confiança maior, mas mesmo assim, ainda preciso.

Algumas conclusões

Pudemos observar que através de um modelo simples, com poucas linhas de código em R construímos resultados interessantes. Conseguimos inferir a partir de uma base de dados abertos, relações de predição desses dados a partir das suas notas de matemática e português, algo já compreendido por todas as escolas, mas também em relação a rede, em específico, ficando em aberto fazer inferências em relação as outras variáveis. Dessa forma, podemos inferir através da regressão logística quais as probabilidades de uma escola específica, ou município, em relação ao longo dos anos, mas também em relação ao qual nível escolar, e entender qual dessas variáveis impacta mais fortemente a probabilidade dessa escola de atingir a média esperada. Podendo inclusive, traçar planos de ação da escola, a partir desses resultados.