Introdução

O Índice de Desenvolvimento da Educação Básica (IDEB) tem como função indicar a qualidade da educação, bem como estabelecer metas para a melhoria do ensino. Para alcançar esses objetivos, ele combina em seu cálculo a taxa de rendimento escolar e o desempenho obtido em exames aplicados pelo Instituto Nacional de Estudos e Pesquisas Educacionais Anísio Teixeira (Inep) (Travitzki, 2020).

A taxa de rendimento escolar é obtida por meio do Censo Escolar, realizado anualmente. Para o cálculo da média de desempenho, utilizam-se os resultados da Prova Brasil e do Sistema de Avaliação da Educação Básica (Saeb), que ocorrem a cada dois anos. Esses exames são aplicados a estudantes que estão no final das etapas de ensino, ou seja, nas 4ª e 8ª séries do ensino fundamental e na 3ª série do ensino médio (Travitzki, 2020).

Indicadores educacionais como o IDEB podem ser utilizados como uma ferramenta de monitoramento do sistema de ensino do país. Diante disso, o presente trabalho tem como objetivo principal analisar o desempenho das escolas, levando em consideração as regiões geográficas do Brasil, bem como as medidas de variação e dispersão da taxa de aprovação por região, a média da taxa de aprovação por rede de ensino (pública e privada) e a evolução da taxa de aprovação ao longo dos anos por região.

Metodologia

A presente pesquisa consiste em um estudo exploratório com base em dados secundários. As informações extraídas podem ser obtidas diretamente no site do INEP. No entanto, para este estudo, foram utilizadas as tabelas tratadas e separadas por regiões geográficas, disponibilizadas em Base dos Dados.

Os dados que foram analisados agregam os resultados das avaliações realizadas pelo INEP entre os anos de 2005 a 2021, sendo estratificados por tipo de rede de ensino e por regiões geográficas. As variáveis utilizadas para análise foram: ano, rede de ensino (pública ou privada), região do país (norte, nordeste, centro-oeste, sudeste e sul) e taxa de aprovação. Os dados foram analisados utilizando a linguagem R, na interface RStudio (versão 4.4.1). Foram realizados testes de média, desvio padrão e intervalo de confiança.

Resultados e discussão

A taxa de aprovação por região brasileira ficou entre 89,97 e 94,27, sendo o Nordeste e o Norte com as menores médias (respectivamente 89,97 e 90,98), e o Sudeste com a maior média (94,27). Portanto, a amplitude entre as médias das taxas de aprovação nas diferentes regiões brasileiras é de 4,30 pontos percentuais.

Médias da Taxa de Aprovação por Região com Medidas de Variação e Dispersão
Região Média Desvio Padrão N Erro Padrão IC Inferior IC Superior
Centro-Oeste 93.34 5.96 45 0.89 91.55 95.13
Nordeste 89.97 8.65 45 1.29 87.37 92.57
Norte 90.99 7.89 45 1.18 88.62 93.36
Sudeste 94.27 4.37 45 0.65 92.96 95.58
Sul 93.44 5.79 45 0.86 91.70 95.18

A rede de ensino que apresentou a maior média de taxa de aprovação foram as escolas privadas, considerando todo o país, e não levando em conta cada região.

Médias da Taxa de Aprovação por Rede de Ensino com Medidas de Variação e Dispersão
Rede de Ensino Média Desvio Padrão N Erro Padrão IC Inferior IC Superior
privada 96.23 2.08 135 0.18 95.88 96.59
publica 86.66 7.48 90 0.79 85.09 88.22

Ainda considerando todo o país, foi possível observar uma diferença significativa entre as escolas públicas e privadas durante o período analisado. As escolas privadas apresentam uma taxa de aprovação constante e elevada, enquanto as escolas públicas, no ano de 2005, tinham uma baixa taxa de aprovação. No entanto, essa taxa nas escolas públicas aumentou gradualmente ao longo dos anos, mas ainda assim revelando um contraste marcante com as escolas privadas.

Evolução da Taxa de Aprovação por Ano e Rede de Ensino com Medidas de Variação e Dispersão
Ano Rede de Ensino Média Desvio Padrão N Erro Padrão IC Inferior IC Superior
2005 privada 94.78 2.22 15 0.57 93.55 96.01
2005 publica 77.29 7.49 10 2.37 71.93 82.65
2007 privada 95.42 1.90 15 0.49 94.37 96.47
2007 publica 81.18 6.80 10 2.15 76.32 86.04
2009 privada 95.26 2.01 15 0.52 94.14 96.38
2009 publica 83.44 6.15 10 1.95 79.04 87.84
2011 privada 95.38 2.04 15 0.53 94.25 96.51
2011 publica 85.95 5.80 10 1.83 81.80 90.10
2013 privada 95.71 1.91 15 0.49 94.65 96.77
2013 publica 87.51 5.93 10 1.88 83.27 91.75
2015 privada 96.19 1.74 15 0.45 95.23 97.16
2015 publica 88.01 5.45 10 1.72 84.11 91.91
2017 privada 97.08 1.38 15 0.36 96.32 97.84
2017 publica 89.31 4.85 10 1.54 85.84 92.78
2019 privada 97.56 1.18 15 0.31 96.90 98.22
2019 publica 91.24 3.82 10 1.21 88.50 93.98
2021 privada 98.73 0.41 15 0.11 98.50 98.95
2021 publica 95.97 1.77 10 0.56 94.71 97.23

Esse mesmo cenário se repete quando analisamos a evolução da taxa por região. No entanto, observou-se que nas regiões norte e nordeste, a diferença entre as taxas de aprovação das escolas públicas e privadas é maior do que nas regiões do centro-sul do país.

Conclusão

A taxa de aprovação ao longo dos anos foi maior nas escolas privadas quando comparadas com as escolas públicas, tanto no âmbito nacional quanto quando analisada por regiões. As escolas públicas, em todas as regiões, apresentaram uma significativa melhoria em seu desempenho, demonstrando um crescimento ascendente em sua taxa de aprovação. Já as escolas privadas mantiveram as taxas de aprovação mais elevadas no decorrer do período, com mudanças menores, porém de crescimento.

Referências

BASE DOS DADOS. Dados do Índice de Desenvolvimento da Educação Básica (Ideb) agregados para o Brasil a nível de regiao-rede-ensino-ano. Base dos Dados. Disponível em: https://basedosdados.org/dataset/96eab476-5d30-459b-82be-f888d4d0d6b9?table=4eca6f7f-721c-4a07-8ee1-3a565f92e4f2.

INEP - Instituto Nacional de Estudos e Pesquisas Educacionais Anísio Teixeira. Resultados do Ideb. Inep. Disponível em: https://www.gov.br/inep/pt-br/areas-de-atuacao/pesquisas-estatisticas-e-indicadores/ideb/resultados.

TRAVITZKI, R. Qual é o grau de incerteza do Ideb e por que isso importa?. Ensaio: Avaliação e Políticas Públicas em Educação, v. 28, n. 107, p. 500-520, 2020.

Anexo

# Carregar as bibliotecas necessárias
library("basedosdados")
library(tidyverse)
library(dplyr)
library(readr)
library(ggplot2)
library(tidyr)
library(DataExplorer)
library(ggthemes)
library(gt) 
library(knitr)

# Definir o seu projeto no Google Cloud
set_billing_id("projetobasedosdados-425401")

# Carregar os dados direto no R
query <- bdplyr("br_inep_ideb.regiao")
df <- bd_collect(query)

# Filtrar os dados para as redes de ensino pública e privada
dados_filtrados <- df %>%
  filter(rede == "publica" | rede == "privada")

# Agrupar os dados por região e calcular a média da taxa de aprovação com medidas de dispersão
taxa_aprovacao_por_regiao <- dados_filtrados %>%
  group_by(regiao) %>%
  summarize(
    media_taxa_aprovacao = mean(taxa_aprovacao, na.rm = TRUE),
    sd_taxa_aprovacao = sd(taxa_aprovacao, na.rm = TRUE),  # Desvio padrão
    n = n()  # Número de observações
  ) %>%
  mutate(
    se = sd_taxa_aprovacao / sqrt(n),  # Erro padrão
    ci_lower = media_taxa_aprovacao - qt(1 - 0.05 / 2, df = n - 1) * se,  # Limite inferior do IC
    ci_upper = media_taxa_aprovacao + qt(1 - 0.05 / 2, df = n - 1) * se  # Limite superior do IC
  )

# Visualização da média da taxa de aprovação por região com gráfico de barras e intervalos de confiança
ggplot(taxa_aprovacao_por_regiao, aes(x = reorder(regiao, -media_taxa_aprovacao), y = media_taxa_aprovacao, fill = regiao)) +
  geom_bar(stat = "identity", show.legend = FALSE) +  # Remover legenda redundante
  geom_errorbar(aes(ymin = ci_lower, ymax = ci_upper), width = 0.2, color = "black") +  # Adicionar barras de erro para os ICs
  geom_text(aes(label = round(media_taxa_aprovacao, 2)), vjust = -0.5, color = "black", size = 3.5) +  # Adicionar rótulos de valores
  labs(
    title = "Média da Taxa de Aprovação por Região",
    subtitle = "Análise da média de aprovação nas regiões com Intervalos de Confiança",
    x = "Região",
    y = "Média da Taxa de Aprovação"
  ) +
  theme_minimal(base_size = 14) +  # Ajustar o tamanho base da fonte
  theme(
    plot.title = element_text(hjust = 0.5, face = "bold", size = 16),  # Centralizar e negritar o título
    plot.subtitle = element_text(hjust = 0.5, size = 14),  # Centralizar o subtítulo
    axis.text.x = element_text(angle = 45, hjust = 1),  # Ajustar a orientação dos rótulos do eixo x
    axis.title.x = element_text(face = "bold"),
    axis.title.y = element_text(face = "bold"),
    panel.grid.major = element_line(color = "grey80", size = 0.5),  # Linhas de grade principais
    panel.grid.minor = element_line(color = "grey90", size = 0.25)  # Linhas de grade secundárias
  ) +
  scale_fill_brewer(palette = "Set1")  # Usar uma paleta de cores com bom contraste

# Criar tabela com kable
taxa_aprovacao_por_regiao %>%
  mutate(
    media_taxa_aprovacao = round(media_taxa_aprovacao, 2),
    sd_taxa_aprovacao = round(sd_taxa_aprovacao, 2),
    se = round(se, 2),
    ci_lower = round(ci_lower, 2),
    ci_upper = round(ci_upper, 2)
  ) %>%
  kable(
    caption = "Médias da Taxa de Aprovação por Região com Medidas de Variação e Dispersão",
    col.names = c("Região", "Média", "Desvio Padrão", "N", "Erro Padrão", "IC Inferior", "IC Superior"),
    align = "c"
  )

# Agrupamento dos dados por rede de ensino e cálculo da média da taxa de aprovação com medidas de dispersão
taxa_aprovacao_por_rede <- dados_filtrados %>%
  group_by(rede) %>%
  summarize(
    media_taxa_aprovacao = mean(taxa_aprovacao, na.rm = TRUE),
    sd_taxa_aprovacao = sd(taxa_aprovacao, na.rm = TRUE),  # Desvio padrão
    n = n()  # Número de observações
  ) %>%
  mutate(
    se = sd_taxa_aprovacao / sqrt(n),  # Erro padrão
    ci_lower = media_taxa_aprovacao - qt(1 - 0.05 / 2, df = n - 1) * se,  # Limite inferior do IC
    ci_upper = media_taxa_aprovacao + qt(1 - 0.05 / 2, df = n - 1) * se  # Limite superior do IC
  )

# Visualização da média da taxa de aprovação por rede de ensino com gráfico de barras e intervalos de confiança
ggplot(taxa_aprovacao_por_rede, aes(x = reorder(rede, -media_taxa_aprovacao), y = media_taxa_aprovacao, fill = rede)) +
  geom_bar(stat = "identity", show.legend = FALSE) +  # Remover legenda redundante
  geom_errorbar(aes(ymin = ci_lower, ymax = ci_upper), width = 0.2, color = "black") +  # Adicionar barras de erro para os ICs
  geom_text(aes(label = round(media_taxa_aprovacao, 2)), vjust = -0.5, color = "black", size = 3.5) +  # Adicionar rótulos de valores
  labs(
    title = "Média da Taxa de Aprovação por Rede de Ensino",
    subtitle = "Comparação entre redes públicas e privadas com Intervalos de Confiança",
    x = "Rede de Ensino",
    y = "Média da Taxa de Aprovação"
  ) +
  theme_minimal(base_size = 14) +  # Ajustar o tamanho base da fonte
  theme(
    plot.title = element_text(hjust = 0.5, face = "bold", size = 16),  # Centralizar e negritar o título
    plot.subtitle = element_text(hjust = 0.5, size = 14),  # Centralizar o subtítulo
    axis.text.x = element_text(angle = 0, hjust = 0.5),  # Manter os rótulos do eixo x horizontais
    axis.title.x = element_text(face = "bold"),
    axis.title.y = element_text(face = "bold"),
    panel.grid.major = element_line(color = "grey80", size = 0.5),  # Linhas de grade principais
    panel.grid.minor = element_line(color = "grey90", size = 0.25)  # Linhas de grade secundárias
  ) +
  scale_fill_brewer(palette = "Set1")  # Usar uma paleta de cores com bom contraste

# Criar tabela com kable
taxa_aprovacao_por_rede %>%
  mutate(
    media_taxa_aprovacao = round(media_taxa_aprovacao, 2),
    sd_taxa_aprovacao = round(sd_taxa_aprovacao, 2),
    se = round(se, 2),
    ci_lower = round(ci_lower, 2),
    ci_upper = round(ci_upper, 2)
  ) %>%
  knitr::kable(
    col.names = c("Rede de Ensino", "Média", "Desvio Padrão", "N", "Erro Padrão", "IC Inferior", "IC Superior"),
    caption = "Médias da Taxa de Aprovação por Rede de Ensino com Medidas de Variação e Dispersão",
    digits = 2,
    align = "c"
  )

# Agrupamento dos dados por ano e rede de ensino, e cálculo da média da taxa de aprovação com medidas de dispersão
evolucao_taxa_aprovacao <- dados_filtrados %>%
  group_by(ano, rede) %>%
  summarize(
    media_taxa_aprovacao = mean(taxa_aprovacao, na.rm = TRUE),
    sd_taxa_aprovacao = sd(taxa_aprovacao, na.rm = TRUE),  # Desvio padrão
    n = n()  # Número de observações
  ) %>%
  mutate(
    se = sd_taxa_aprovacao / sqrt(n),  # Erro padrão
    ci_lower = media_taxa_aprovacao - qt(1 - 0.05 / 2, df = n - 1) * se,  # Limite inferior do IC
    ci_upper = media_taxa_aprovacao + qt(1 - 0.05 / 2, df = n - 1) * se  # Limite superior do IC
  )

# Visualização da evolução da taxa de aprovação ao longo dos anos para escolas públicas e privadas
ggplot(evolucao_taxa_aprovacao, aes(x = ano, y = media_taxa_aprovacao, color = rede)) +
  geom_line(size = 1) +  # Ajustar a espessura das linhas
  geom_point(size = 3) +  # Ajustar o tamanho dos pontos
  geom_errorbar(aes(ymin = ci_lower, ymax = ci_upper), width = 0.2, color = "black") +  # Adicionar barras de erro para os ICs
  geom_text(aes(label = round(media_taxa_aprovacao, 2)), vjust = -1, hjust = 0.5, size = 3, show.legend = FALSE) +  # Adicionar rótulos de valores
  labs(
    title = "Evolução da Taxa de Aprovação ao Longo dos Anos",
    subtitle = "Comparação entre redes públicas e privadas",
    x = "Ano",
    y = "Média da Taxa de Aprovação",
    color = "Rede de Ensino"
  ) +
  theme_minimal(base_size = 14) +  # Ajustar o tamanho base da fonte
  theme(
    plot.title = element_text(hjust = 0.5, face = "bold", size = 16),  # Centralizar e negritar o título
    plot.subtitle = element_text(hjust = 0.5, size = 14),  # Centralizar o subtítulo
    axis.text.x = element_text(angle = 45, hjust = 1),  # Ajustar a orientação dos rótulos do eixo x
    axis.title.x = element_text(face = "bold"),
    axis.title.y = element_text(face = "bold"),
    legend.position = "bottom",  # Posicionar a legenda na parte inferior
    legend.title = element_text(face = "bold"),  # Negritar o título da legenda
    panel.grid.major = element_line(color = "grey80", size = 0.5),  # Linhas de grade principais
    panel.grid.minor = element_line(color = "grey90", size = 0.25)  # Linhas de grade secundárias
  ) +
  scale_color_brewer(palette = "Set1")  # Usar uma paleta de cores com bom contraste

# Criar tabela com kable
evolucao_taxa_aprovacao %>%
  mutate(
    media_taxa_aprovacao = round(media_taxa_aprovacao, 2),
    sd_taxa_aprovacao = round(sd_taxa_aprovacao, 2),
    se = round(se, 2),
    ci_lower = round(ci_lower, 2),
    ci_upper = round(ci_upper, 2)
  ) %>%
  knitr::kable(
    col.names = c("Ano", "Rede de Ensino", "Média", "Desvio Padrão", "N", "Erro Padrão", "IC Inferior", "IC Superior"),
    caption = "Evolução da Taxa de Aprovação por Ano e Rede de Ensino com Medidas de Variação e Dispersão",
    digits = 2,
    align = "c"
  )

# Agrupar os dados por ano, rede de ensino e região, e calcular a média da taxa de aprovação
evolucao_taxa_aprovacao_por_regiao <- dados_filtrados %>%
  group_by(ano, rede, regiao) %>%
  summarize(media_taxa_aprovacao = mean(taxa_aprovacao, na.rm = TRUE))

# Visualizar a evolução da taxa de aprovação ao longo dos anos para escolas públicas e privadas, por região
ggplot(evolucao_taxa_aprovacao_por_regiao, aes(x = ano, y = media_taxa_aprovacao, color = rede)) +
  geom_line(size = 1) +  # Ajustar a espessura das linhas
  geom_point(size = 2) +  # Ajustar o tamanho dos pontos
  facet_wrap(~regiao, ncol = 2) +  # Dividir os gráficos por região
  labs(
    title = "Evolução da Taxa de Aprovação por Região",
    subtitle = "Dados agrupados por rede de ensino e ano",
    x = "Ano",
    y = "Média da Taxa de Aprovação",
    color = "Rede de Ensino"
  ) +
  theme_minimal(base_size = 14) +  # Ajustar o tamanho base da fonte
  theme(
    plot.title = element_text(hjust = 0.5, face = "bold", size = 16),  # Centralizar e negritar o título
    plot.subtitle = element_text(hjust = 0.5, size = 14),  # Centralizar o subtítulo
    axis.text.x = element_text(angle = 45, hjust = 1),  # Ajustar a orientação dos rótulos do eixo x
    legend.position = "bottom",  # Posicionar a legenda na parte inferior
    legend.title = element_text(face = "bold"),  # Negritar o título da legenda
    panel.grid.major = element_line(color = "grey80", size = 0.5),  # Linhas de grade principais
    panel.grid.minor = element_line(color = "grey90", size = 0.25)  # Linhas de grade secundárias
  ) +
  scale_color_brewer(palette = "Set1")  # Usar uma paleta de cores com bom contraste