1. Introdução

O presente trabalho tem como principal objetivo fazer uma análise qualitativa do do desempenho dos inscritos no Exame Nacional do Ensino Médio (Enem) no ano de 2020, em relação a sua situação socioeconômica. Os dados são do Instituto Nacional de Estudos e Pesquisas Educacionais Anísio Teixeira (Inep), e contém informação detalhada sobre todas as aplicações do exame, além de que a versão utilizada já está adequada a Lei Geral de Proteção de Dados (LGPD), portanto, não há a possibilidade de identificar o participante a partir dos dados estudados.

1.1. Pacotes

Para realizar o trabalho, foi necessário ter pacotes para manipulação e visualização de dados, bem como também pacotes espaciais. Portanto, o dpplyr serviu para a parte de manipulação básica dos dados, seguido do stringr que foi demandado para extrair uma informação dentro de uma única coluna que contém varias informações, e, para visualização, foi carregado o ggplot2 para os gráficos, e também o maps em conjunto do geobr para trabalhar com dados espaciais e com o território brasileiro de forma simplificada.

library(dplyr) # Manipulação dos dados
library(ggplot2) # Visualização
library(maps) # Mapas
library(geobr) # Mapas do Brasil
library(stringr) # Manipular strings

1.2. Dados e estrutura

A base de dados utilizada contém informações a nível individual, onde cada linha representa um inscrito no Enem de 2020. A base vem em formato “.csv” e separada por vírgula, além de que possui caracteres especiais típicos do Português, tais como “~”, portanto, foi necessário destacar tal detalhe na codificação.
Originalmente, a base de dados possui 76 colunas, entretando, para fins de otimização de tempo e uso de hardware, foi selecionado apenas as colunas relevantes para a análise, de acordo com a estrutura abaixo:

Dados <- read.csv('compacto.csv',
                  sep = ',',
                  encoding = 'latin-1')

glimpse(Dados)

O significado das colunas acima é bem intuitivo, e faz-se necessário esclarecer apenas as seguintes variáveis:
1. TP_ST_CONCLUSAO: A situação de conclusão;
2. TP_ESCOLA: O tipo de escola;
3. Q001: Escolaridade dos pai/homem responsável;
4. Q002: Escolaridade da mãe/mulher responsável;
5. Q006: Faixa de renda mensal familiar;
6. NU_NOTA_CN: Nota da prova de Ciências da Natureza;
7. NU_NOTA_CH: Nota da prova de Ciências Humanas;
8. NU_NOTA_MT: Nota da prova de Matemática;
9. NU_NOTA_LC: Nota da prova de Linguagens e Códigos;
10. NU_NOTA_REDACAO: Nota final da redação;
11. CO_MUNICIPIO_PROVA: Código do município onde foi realizado a prova.

2. ANÁLISE EXPLORATÓRIA DO ENEM 2020

A presente seção busca esclarecer ao leitor o perfil do inscrito do Enem 2020, partindo da faixa etária, sexo, faixa de renda e etc.

# Traduzindo do dicionário
Dados$TP_FAIXA_ETARIA[Dados$TP_FAIXA_ETARIA == 1] <- "Menor de 17 anos"
Dados$TP_FAIXA_ETARIA[Dados$TP_FAIXA_ETARIA == 2] <- "17 anos"
Dados$TP_FAIXA_ETARIA[Dados$TP_FAIXA_ETARIA == 3] <- "18 anos"
Dados$TP_FAIXA_ETARIA[Dados$TP_FAIXA_ETARIA == 4] <- "19 anos"
Dados$TP_FAIXA_ETARIA[Dados$TP_FAIXA_ETARIA == 5] <- "20 anos"
Dados$TP_FAIXA_ETARIA[Dados$TP_FAIXA_ETARIA == 6] <- "21 anos"
Dados$TP_FAIXA_ETARIA[Dados$TP_FAIXA_ETARIA == 7] <- "22 anos"
Dados$TP_FAIXA_ETARIA[Dados$TP_FAIXA_ETARIA == 8] <- "23 anos"
Dados$TP_FAIXA_ETARIA[Dados$TP_FAIXA_ETARIA == 9] <- "24 anos"
Dados$TP_FAIXA_ETARIA[Dados$TP_FAIXA_ETARIA == 10] <- "25 anos"
Dados$TP_FAIXA_ETARIA[Dados$TP_FAIXA_ETARIA == 11] <- "Entre 26 e 30 anos"
Dados$TP_FAIXA_ETARIA[Dados$TP_FAIXA_ETARIA == 12] <- "Entre 31 e 35 anos"
Dados$TP_FAIXA_ETARIA[Dados$TP_FAIXA_ETARIA == 13] <- "Entre 36 e 40 anos"
Dados$TP_FAIXA_ETARIA[Dados$TP_FAIXA_ETARIA == 14] <- "Entre 41 e 45 anos"
Dados$TP_FAIXA_ETARIA[Dados$TP_FAIXA_ETARIA == 15] <- "Entre 46 e 50 anos"
Dados$TP_FAIXA_ETARIA[Dados$TP_FAIXA_ETARIA == 16] <- "Entre 51 e 55 anos"
Dados$TP_FAIXA_ETARIA[Dados$TP_FAIXA_ETARIA == 17] <- "Entre 56 e 60 anos"
Dados$TP_FAIXA_ETARIA[Dados$TP_FAIXA_ETARIA == 18] <- "Entre 61 e 65 anos"
Dados$TP_FAIXA_ETARIA[Dados$TP_FAIXA_ETARIA == 19] <- "Entre 66 e 70 anos"
Dados$TP_FAIXA_ETARIA[Dados$TP_FAIXA_ETARIA == 20] <- "Maior de 70 anos"

# Estabelecendo ordem para facilitar a visualização gráfica
Dados$TP_FAIXA_ETARIA <- factor(Dados$TP_FAIXA_ETARIA,
                                c("Menor de 17 anos", "17 anos", "18 anos", "19 anos", "20 anos", "21 anos", "22 anos", "23 anos", "24 anos",
                                                         "25 anos", "Entre 26 e 30 anos", "Entre 31 e 35 anos", "Entre 36 e 40 anos", "Entre 41 e 45 anos", "Entre 46 e 50 anos",
                                                         "Entre 51 e 55 anos", "Entre 56 e 60 anos", "Entre 61 e 65 anos", "Entre 66 e 70 anos", "Maior de 70 anos"))

# Gráfico todas as faixas etárias
Dados %>%
  group_by(TP_FAIXA_ETARIA) %>%
  summarise(num = n()) %>%
  ggplot() +
  geom_col(aes(y = TP_FAIXA_ETARIA, x = num), fill = "dodgerblue1") +
  labs(title = "Participantes do ENEM 2020 por faixa etária",
       x = "Quantidade de participantes",
       y = "Faixa etária",
       caption = "Fonte: INEP") +
  scale_x_continuous(labels = scales::comma) +
  theme_bw() 

Observa-se que, o maior número de inscritos sendo aproximadamente 800.000 participantes, tem idade de 18 anos, sendo possível compreender pelo gráfico. Além disso, é possível notar que a concentração maior de pessoas inscritas está com idade entre 17 e 30 anos.

Dados %>%
  group_by(TP_FAIXA_ETARIA) %>%
  summarise(num = n()) %>%
  arrange(desc(num)) %>%
  slice(1:5) %>%
  ggplot() +
  geom_col(aes(y = reorder(TP_FAIXA_ETARIA, num), x = num), fill = "dodgerblue1") +
  labs(title = "Participantes do ENEM 2020 por faixa etária (5 mais frequentes)",
       x = "Quantidade de participantes",
       y = "Faixa etária",
       caption = "Fonte: INEP") +
  scale_x_continuous(labels = scales::comma) +
  theme_bw()

Analisando as caracteristicas de sexo, cor/raça e estado civil dos participantes, as mulheres tem maior participação na inscrição do exame. Os participantes em maioria se classificam como pardos e branco. Por fim, a maior parcela é de solteiros, quantidade aproximada a 5 milhões. Esse valor pode ser supostamente corroborado com a idade dos indivíduos. Isso porque, a maioria dos candidatos ao exame têm idade menor que 17 e 20 anos.

Dados$TP_SEXO[Dados$TP_SEXO == "M"] <- "Masculino"
Dados$TP_SEXO[Dados$TP_SEXO == "F"] <- "Feminino"

# Gráfico
Dados %>%
  group_by(TP_SEXO) %>%
  summarise(num = n()) %>% 
  arrange(desc(num)) %>%
  ggplot() +
  geom_col(aes(x = reorder(TP_SEXO, num), y = num), fill = c("#FC814F", "#507EFA"), show.legend = FALSE) +
  labs(title = "Participantes do ENEM 2020 por sexo",
       y = "Participantes",
       x = "Sexo",
       caption = "Fonte: INEP") +
  scale_y_continuous(labels = scales::comma) +
  theme_bw()
Dados$TP_ESTADO_CIVIL[Dados$TP_ESTADO_CIVIL == 0] <- "Não informado"
Dados$TP_ESTADO_CIVIL[Dados$TP_ESTADO_CIVIL == 1] <- "Solteiro(a)"
Dados$TP_ESTADO_CIVIL[Dados$TP_ESTADO_CIVIL == 2] <- "Casado(a)/Mora com companheiro(a)"
Dados$TP_ESTADO_CIVIL[Dados$TP_ESTADO_CIVIL == 3] <- "Divorciado(a)/Desquitado(a)/Separado(a)"
Dados$TP_ESTADO_CIVIL[Dados$TP_ESTADO_CIVIL == 4] <- "Viúvo(a)"

# Gráfico
Dados %>%
  group_by(TP_ESTADO_CIVIL) %>%
  summarise(num = n()) %>%
  arrange(desc(num)) %>% 
  ggplot() +
  geom_col(aes(x = reorder(TP_ESTADO_CIVIL, num), y = num, fill = TP_ESTADO_CIVIL)) +
  labs(title = "Participantes do ENEM 2020 por estado civil",
       y = "Participantes",
       x = "Estado Civil",
       caption = "Fonte: INEP") +
  guides(fill = guide_legend(title = "")) +
  scale_y_continuous(labels = scales::comma) +
  scale_x_discrete(labels = NULL, breaks = NULL) +
  theme_bw()
# Dicionário
Dados$TP_COR_RACA[Dados$TP_COR_RACA == 0] <- "Não declarado"
Dados$TP_COR_RACA[Dados$TP_COR_RACA == 1] <- "Branca"
Dados$TP_COR_RACA[Dados$TP_COR_RACA == 2] <- "Preta"
Dados$TP_COR_RACA[Dados$TP_COR_RACA == 3] <- "Parda"
Dados$TP_COR_RACA[Dados$TP_COR_RACA == 4] <- "Amarela"
Dados$TP_COR_RACA[Dados$TP_COR_RACA == 5] <- "Indígena"

# Gráfico
Dados %>% 
  group_by(TP_COR_RACA) %>% 
  summarise(num = n()) %>% 
  arrange(desc(num)) %>% 
  ggplot() +
  geom_col(aes(x = TP_COR_RACA, y = num, fill = TP_COR_RACA)) +
  labs(title = "Participantes do ENEM 2020 por cor/raça",
       y = "Participantes",
       x = "Cor/raça",
       caption = "Fonte: INEP") +
  guides(fill = guide_legend(title = "")) +
  scale_y_continuous(labels = scales::comma) +
  scale_x_discrete(labels = NULL, breaks = NULL) +
  theme_bw()

Com relação à escolaridade dos participantes, mais de 4 milhões não declararam qual o tipo de ensino têm, no entanto, entre ensino privado e público, há uma maior quantidade de participantes no ensino público. No que se refere à situação de conclusão dos participantes, a maior parcela já concluíram o Ensino Médio ou estavam concluindo no ano do exame. Por fim, na escolaridade dos responsáveis pelos participantes, os dados mostram que as classificações com maiores resultados indicam que os pais e mães concluíram o ensino médio mas não ingressaram no ensino superior e não completaram o 5° ano do ensino fundamental.

# Dicionário
Dados$TP_ST_CONCLUSAO[Dados$TP_ST_CONCLUSAO == 1] <- "Já concluí o Ensino Médio"
Dados$TP_ST_CONCLUSAO[Dados$TP_ST_CONCLUSAO == 2] <- "Estou cursando e concluirei o Ensino Médio em 2020"
Dados$TP_ST_CONCLUSAO[Dados$TP_ST_CONCLUSAO == 3] <- "Estou cursando e concluirei o Ensino Médio após 2020"
Dados$TP_ST_CONCLUSAO[Dados$TP_ST_CONCLUSAO == 4] <- "Não concluí e não estou curtando o Ensino Médio"

# Gráfico
Dados %>%
  group_by(TP_ST_CONCLUSAO) %>% 
  summarise(num = n()) %>% 
  arrange(desc(num)) %>%
  ggplot() +
  geom_col(aes(x = reorder(TP_ST_CONCLUSAO, num), y = num, fill = TP_ST_CONCLUSAO)) +
  labs(title = "Participantes do ENEM 2020 por situação \n de conclusão do ensino médio",
       y = "Participantes",
       x = "Situação de conclusão",
       caption = "Fonte: INEP") +
  guides(fill = guide_legend(title = "")) +
  scale_y_continuous(labels = scales::comma) +
  scale_x_discrete(labels = NULL, breaks = NULL) +
  theme_bw()
# Dicionário
Dados$TP_ESCOLA[Dados$TP_ESCOLA == 1] <- "Não Respondeu"
Dados$TP_ESCOLA[Dados$TP_ESCOLA == 2] <- "Pública"
Dados$TP_ESCOLA[Dados$TP_ESCOLA == 3] <- "Privada"
Dados$TP_ESCOLA[Dados$TP_ESCOLA == 4] <- "Exterior"

# Gráfico
Dados %>% 
  group_by(TP_ESCOLA) %>% 
  summarise(num = n()) %>% 
  arrange(desc(num)) %>% 
  ggplot() +
  geom_col(aes(x = reorder(TP_ESCOLA, num), y = num, fill = TP_ESCOLA)) +
  labs(title = "Participantes do ENEM 2020 por tipo de escola",
       y = "Participantes",
       x = "Tipo de escola",
       caption = "Fonte: INEP") +
  guides(fill = guide_legend(title = "")) +
  scale_y_continuous(labels = scales::comma) +
  scale_x_discrete(labels = NULL, breaks = NULL) +
  theme_bw()
# Dicionário
Dados$Q001[Dados$Q001 == "A"] <- "Nunca estudou"
Dados$Q001[Dados$Q001 == "B"] <- "Não completou o 5º ano \n do Ensino Fundamental"
Dados$Q001[Dados$Q001 == "C"] <- "Completou o 5º ano, mas não \n completou o 9º ano do \n Ensino Fundamental"
Dados$Q001[Dados$Q001 == "D"] <- "Completou o 9º ano do \n Ensino Fundamental, mas não completou o \n Ensino Médio"
Dados$Q001[Dados$Q001 == "E"] <- "Completou o Ensino Médio, \n mas não completou a Faculdade"
Dados$Q001[Dados$Q001 == "F"] <- "Completou a Faculdade, mas \n não completou a Pós-graduação"
Dados$Q001[Dados$Q001 == "G"] <- "Completou a Pós-graduação"
Dados$Q001[Dados$Q001 == "H"] <- "Não sei"

# Ordenamento
Dados$Q001 <- factor(Dados$Q001,
                     c("Nunca estudou", "Não completou o 5º ano \n do Ensino Fundamental", "Completou o 5º ano, mas não \n completou o 9º ano do \n Ensino Fundamental",
                                   "Completou o 9º ano do \n Ensino Fundamental, mas não completou o \n Ensino Médio", "Completou o Ensino Médio, \n mas não completou a Faculdade",
                                   "Completou a Faculdade, mas \n não completou a Pós-graduação", "Completou a Pós-graduação", "Não sei", ""))

# Gráfico
Dados %>%
  filter(Q001 != "") %>% 
  group_by(Q001) %>% 
  summarise(num = n()) %>%
  ggplot() +
  geom_col(aes(y = Q001, x = num, fill = Q001), show.legend = FALSE) +
  labs(title = "Escolaridade do pai/homem responsável pelo participante, ENEM 2020",
       x = "Participantes",
       y = "Escolaridade do pai/homem responsável",
       capption = "Fonte: INEP") +
  scale_x_continuous(labels = scales::comma) +
  theme_bw()
# Dicionário
Dados$Q002[Dados$Q002 == "A"] <- "Nunca estudou"
Dados$Q002[Dados$Q002 == "B"] <- "Não completou o 5º ano \n do Ensino Fundamental"
Dados$Q002[Dados$Q002 == "C"] <- "Completou o 5º ano, mas não \n completou o 9º ano do \n Ensino Fundamental"
Dados$Q002[Dados$Q002 == "D"] <- "Completou o 9º ano do \n Ensino Fundamental, mas não completou o \n Ensino Médio"
Dados$Q002[Dados$Q002 == "E"] <- "Completou o Ensino Médio, \n mas não completou a Faculdade"
Dados$Q002[Dados$Q002 == "F"] <- "Completou a Faculdade, mas \n não completou a Pós-graduação"
Dados$Q002[Dados$Q002 == "G"] <- "Completou a Pós-graduação"
Dados$Q002[Dados$Q002 == "H"] <- "Não sei"

# Ordenamento
Dados$Q002 <- factor(Dados$Q002,
                     c("Nunca estudou", "Não completou o 5º ano \n do Ensino Fundamental", "Completou o 5º ano, mas não \n completou o 9º ano do \n Ensino Fundamental",
                                   "Completou o 9º ano do \n Ensino Fundamental, mas não completou o \n Ensino Médio", "Completou o Ensino Médio, \n mas não completou a Faculdade",
                                   "Completou a Faculdade, mas \n não completou a Pós-graduação", "Completou a Pós-graduação", "Não sei", ""))

# Gráfico
Dados %>% 
  filter(Q002 != "") %>% 
  group_by(Q002) %>% 
  summarise(num = n()) %>%
  ggplot() +
  geom_col(aes(y = Q002, x = num, fill = Q002), show.legend = FALSE) +
  labs(title = "Escolaridade da mãe/mulher responsável pelo participante, ENEM 2020",
       x = "Participantes",
       y = "Escolaridade da mãe/mulher responsável",
       capption = "Fonte: INEP") +
  scale_fill_brewer(palette="Set1") +
  scale_x_continuous(labels = scales::comma) +
  theme_bw()
# Dicionário
Dados$Q006[Dados$Q006 == "A"] <- "Nenhuma renda"
Dados$Q006[Dados$Q006 == "B"] <- "Até R$1.045,00"
Dados$Q006[Dados$Q006 == "C"] <- "De R$1.045,00 até R$2.090,00"
Dados$Q006[Dados$Q006 == "D"] <- "De R$1.045,00 até R$2.090,00"
Dados$Q006[Dados$Q006 == "E"] <- "De R$2.090,00 até R$3.135,00"
Dados$Q006[Dados$Q006 == "F"] <- "De R$2.090,00 até R$3.135,00"
Dados$Q006[Dados$Q006 == "G"] <- "De R$3.135,00 até R$4.180,00"
Dados$Q006[Dados$Q006 == "H"] <- "De R$4.180,00 até R$6.270,00"
Dados$Q006[Dados$Q006 == "I"] <- "De R$4.180,00 até R$6.270,00"
Dados$Q006[Dados$Q006 == "J"] <- "De R$6.270,00 até R$8.360,00"
Dados$Q006[Dados$Q006 == "K"] <- "De R$6.270,00 até R$8.360,00"
Dados$Q006[Dados$Q006 == "L"] <- "De R$8.360,00 até R$10.450,00"
Dados$Q006[Dados$Q006 == "M"] <- "De R$8.360,00 até R$10.450,00"
Dados$Q006[Dados$Q006 == "N"] <- "De R$10.450,00 até R$15.675,00"
Dados$Q006[Dados$Q006 == "O"] <- "De R$10.450,00 até R$15.675,00"
Dados$Q006[Dados$Q006 == "P"] <- "De R$15.675,00 até R$20.900,00"
Dados$Q006[Dados$Q006 == "Q"] <- "Acima de R$20.900,00"

# Ordenamento
Dados$Q006 <- factor(Dados$Q006,
                     c("Nenhuma renda", "Até R$1.045,00", "De R$1.045,00 até R$2.090,00", "De R$2.090,00 até R$3.135,00",
                                   "De R$3.135,00 até R$4.180,00", "De R$4.180,00 até R$6.270,00", "De R$6.270,00 até R$8.360,00",
                                   "De R$8.360,00 até R$10.450,00", "De R$10.450,00 até R$15.675,00", "De R$15.675,00 até R$20.900,00",
                                   "Acima de R$20.900,00"))

# Gráfico
Dados %>%
  filter(!is.na(Q006)) %>%
  group_by(Q006) %>%
  summarise(num = n()) %>%
  ggplot() +
  geom_col(aes(x = num, y = Q006, fill = Q006), show.legend = FALSE) +
  labs(title = "Renda mensal familiar dos participantes do ENEM 2020",
       y = "Renda mensal",
       x = "Participantes",
       caption = "Fonte: INEP") +
  scale_x_continuous(labels = scales::comma) +
  theme_bw()

3. ANÁLISE BIVARIADA DO DESEMPENHO

A base de dados não vem com a nota geral do Enem, portanto, foi necessário criar a variável a partir da média das notas.

# Criando a variável da nota geral ao somar todas as notas e dividir pelas 5 competências
Dados <- Dados %>%
  mutate(NU_GERAL = (NU_NOTA_CN + NU_NOTA_CH + NU_NOTA_LC + NU_NOTA_MT + NU_NOTA_REDACAO)/5)

- Nota geral pela cor/raça dos participantes:

Dados %>%
  filter(!is.na(NU_GERAL)) %>%
  select(TP_COR_RACA, NU_GERAL) %>%
  ggplot() +
  geom_boxplot(aes(x = TP_COR_RACA, y = NU_GERAL, fill = TP_COR_RACA)) +
  geom_hline(aes(yintercept = mean(Dados$NU_GERAL, na.rm = TRUE)), color = "red", linetype = "dashed") +
  labs(title = "Nota geral por cor/raça (ENEM 2020)",
       y = "Nota geral",
       x = "Cor/raça",
       caption = "Fonte: INEP") +
  scale_x_discrete(labels = NULL, breaks = NULL) +
  guides(fill = guide_legend(title = ""))

Na análise da nota geral por cor, destaca-se que mais de 75% da nota dos participantes indígenas está abaixo da média, que está situada um pouco acima de 500 pontos, enquanto participantes de cor amarela, parda e preta apresentaram nota geral menor que a média. Apenas a cor branca tem nota média acima da média geral. Em ambas as cores, é possível notar outliers positivos com notas acima de 750 e negativos com nota 0 exceto para os que não declaram a cor.

- Nota geral e da prova de matemática por tipo de escola dos participantes:

Dados %>%
  filter(!is.na(NU_GERAL), !is.na(TP_ESCOLA), TP_ESCOLA != "Não Respondeu") %>%
  select(TP_ESCOLA, NU_GERAL) %>%
  ggplot() +
  geom_boxplot(aes(x = TP_ESCOLA, y = NU_GERAL, fill = TP_ESCOLA)) +
  geom_hline(aes(yintercept = mean(Dados$NU_GERAL, na.rm = TRUE)), color = "red", linetype = "dashed") +
  labs(title = "Nota geral por tipo de escola (ENEM 2020)",
       y = "Nota geral",
       x = "Tipo de escola",
       caption = "Fonte: INEP") +
  scale_x_discrete(labels = NULL, breaks = NULL) +
  guides(fill = guide_legend(title = ""))
Dados %>%
  filter(!is.na(NU_NOTA_MT), !is.na(TP_ESCOLA), TP_ESCOLA != "Não Respondeu") %>%
  select(TP_ESCOLA, NU_NOTA_MT) %>%
  ggplot() +
  geom_boxplot(aes(x = TP_ESCOLA, y = NU_NOTA_MT, fill = TP_ESCOLA)) +
  geom_hline(aes(yintercept = mean(Dados$NU_NOTA_MT, na.rm = TRUE)), color = "red", linetype = "dashed") +
  labs(title = "Nota da prova de matemática por tipo de escola (ENEM 2020)",
       y = "Nota da prova de matemática",
       x = "Tipo de escola",
       caption = "Fonte: INEP") +
  scale_x_discrete(labels = NULL, breaks = NULL) +
  guides(fill = guide_legend(title = ""))

Na análise da nota geral por tipo de escola, destaca-se que participantes de escola privada não apresentam outlier negativo com nota 0, ao contrário de participantes do ensino público. No entanto, com relação a nota de matemática, ambos apresentam nota 0. Além disso, participantes de ensino particular tem média acima da média de nota geral, enquanto participantes de ensino público tem média abaixo. Vale ressaltar que mais de 75% da nota geral e da nota da prova de matemática dos participantes do ensino privado está acima da média geral.

Dados %>%
  filter(TP_ESCOLA != "Não Respondeu") %>%
  ggplot() +
  geom_density(aes(x = NU_GERAL, fill = TP_ESCOLA), alpha = 0.7, show.legend = FALSE) +
  labs(title = "Curvas de densidade da relação Nota geral x Tipo de escola (ENEM 2020)",
       x = "Nota geral",
       y = "Densidade") +
  geom_vline(aes(xintercept = mean(Dados$NU_GERAL, na.rm = TRUE)), color = "red", linetype = "dashed") +
  geom_vline(aes(xintercept = median(Dados$NU_GERAL, na.rm = TRUE)), color = "green", linetype = "solid") +
  facet_wrap(~TP_ESCOLA) +
  theme_bw()

No gráfico da densidade é possível notar que a concentração de notas de participantes de ensino privado está após a média, em contraponto, a nota geral dos participantes de ensino público tem concentração menor que a da média.

- Nota geral dos participantes com relação à escolaridade dos responsáveis:

Dados %>%
  filter(!is.na(NU_GERAL), !is.na(Q001), Q001 != "", Q001 != "Não sei") %>%
  select(Q001, NU_GERAL) %>%
  ggplot() +
  geom_boxplot(aes(x = Q001, y = NU_GERAL, fill = Q001)) +
  geom_hline(aes(yintercept = mean(Dados$NU_GERAL, na.rm = TRUE)), color = "red", linetype = "dashed") +
  labs(title = "Nota geral por escolaridade do pai/homem responsável (ENEM 2020)",
       y = "Nota geral",
       x = "Escolaridade do pai/homem responsável",
       caption = "Fonte: INEP") +
  scale_x_discrete(labels = NULL, breaks = NULL) +
  guides(fill = guide_legend(title = ""))
Dados %>%
  filter(!is.na(NU_GERAL), !is.na(Q002), Q002 != "", Q002 != "Não sei") %>%
  select(Q002, NU_GERAL) %>%
  ggplot() +
  geom_boxplot(aes(x = Q002, y = NU_GERAL, fill = Q002)) +
  geom_hline(aes(yintercept = mean(Dados$NU_GERAL, na.rm = TRUE)), color = "red", linetype = "dashed") +
  labs(title = "Nota geral por escolaridade da mãe/mulher responsável (ENEM 2020)",
       y = "Nota geral",
       x = "Escolaridade da mãe/mulher responsável",
       caption = "Fonte: INEP") +
  scale_x_discrete(labels = NULL, breaks = NULL) +
  guides(fill = guide_legend(title = ""))

Em ambos os gráficos é possível notar que participantes com responsáveis que têm nível superior apresentam acima da média, no entanto, se o responsável for pai/homem, 75% da nota geral teve resultados acima da média, ainda assim, tiveram todos tiveram nota geral 0.

- Notas por faixa de renda mensal familiar dos participante:

Dados %>%
  filter(!is.na(NU_NOTA_MT), !is.na(Q006)) %>%
  select(Q006, NU_NOTA_MT) %>%
  ggplot() +
  geom_boxplot(aes(x = Q006, y = NU_NOTA_MT, fill = Q006)) +
  geom_hline(aes(yintercept = mean(Dados$NU_NOTA_MT, na.rm = TRUE)), color = "red", linetype = "dashed") +
  labs(title = "Nota da prova de matemática por faixa de renda mensal familiar (ENEM 2020)",
       y = "Nota da prova de matemática",
       x = "Faixa de renda mensal familiar",
       caption = "Fonte: INEP") +
  scale_x_discrete(labels = NULL, breaks = NULL) +
  guides(fill = guide_legend(title = ""))
Dados %>%
  filter(!is.na(NU_NOTA_REDACAO), !is.na(Q006)) %>%
  select(Q006, NU_NOTA_REDACAO) %>%
  ggplot() +
  geom_boxplot(aes(x = Q006, y = NU_NOTA_REDACAO, fill = Q006)) +
  geom_hline(aes(yintercept = mean(Dados$NU_NOTA_REDACAO, na.rm = TRUE)), color = "red", linetype = "dashed") +
  labs(title = "Nota da redação por faixa de renda mensal familiar (ENEM 2020)",
       y = "Nota da redação",
       x = "Faixa de renda mensal familiar",
       caption = "Fonte: INEP") +
  scale_x_discrete(labels = NULL, breaks = NULL) +
  guides(fill = guide_legend(title = ""))
Dados %>%
  filter(!is.na(NU_GERAL), !is.na(Q006)) %>%
  select(Q006, NU_GERAL) %>%
  ggplot() +
  geom_boxplot(aes(x = Q006, y = NU_GERAL, fill = Q006)) +
  geom_hline(aes(yintercept = mean(Dados$NU_GERAL, na.rm = TRUE)), color = "red", linetype = "dashed") +
  labs(title = "Nota geral por faixa de renda mensal familiar (ENEM 2020)",
       y = "Nota geral",
       x = "Faixa de renda mensal familiar",
       caption = "Fonte: INEP") +
  scale_x_discrete(labels = NULL, breaks = NULL) +
  guides(fill = guide_legend(title = ""))

De modo geral, em ambos os gráficos é possível notar que participantes com renda de 2 mil a 3 mil reais apresentam nota acima da média, no entanto, participantes com renda mensal familiar acima de 6 mil reais, obtiveram 75% da nota acima da média. Vale ressaltar que quanto menor a renda mensal familiar do participante, uma nota um pouco maior que a média já apresenta um outliers. Uma melhor percepção da nota por faixa de renda é apresentado pelo gráfico de densidade, confirmando que participantes com renda entre 0 e 2 mil têm concentração de nota menor que a média.

Dados %>%
  filter(!is.na(Q006)) %>%
  ggplot() +
  geom_density(aes(x = NU_GERAL, fill = Q006), alpha = 0.7, show.legend = FALSE) +
  labs(title = "Curvas de densidade da relação Nota geral x Faixa de renda mensal (ENEM 2020)",
       x = "Nota geral",
       y = "Densidade") +
  geom_vline(aes(xintercept = mean(Dados$NU_GERAL, na.rm = TRUE)), color = "red", linetype = "dashed") +
  geom_vline(aes(xintercept = median(Dados$NU_GERAL, na.rm = TRUE, color = "Mediana")), color = "green", linetype = "solid") +    
  facet_wrap(~Q006) +
  theme_bw()

- Desempenho da nota geral média por estado

# Extraindo o código do estado para uma coluna específica
Dados$code_state <- str_sub(Dados$CO_MUNICIPIO_PROVA, 1, 2)

# Carregando a base espacialdo pacote geobr
estado <- read_state()
estado$code_state <- as.character(estado$code_state)

# Criando um novo df agrupando por estados e calculando a média
# para posterior merge com a base espacial
DadosMapa <- Dados %>%
  group_by(code_state) %>%
  summarise(media_nota_geral = mean(NU_GERAL, na.rm = TRUE))

# Gráfico
estado %>%
  left_join(DadosMapa) %>%
  ggplot() +
  geom_sf(aes(fill = media_nota_geral), color = "white") +
  labs(title = "Desempenho médio no ENEM 2020 por estado",
       caption = "Fonte: INEP") +
  guides(fill = guide_legend(title = "Nota média")) +
  theme_void()

Uma análise da segmentação por desempenho médio apresenta que moradores da região Norte têm concentração maior de nota média mais baixa, no entanto, moradores da região Sul e Sudeste resultam em nota média mais alta, em torno de 550 pontos.

3. CONCLUSÃO

Diante dos resultados encontrados, observa-se que há participantes de escola privada apresentando notas maiores que os de escola pública. Além disso, a escolaridade dos responsáveis pelos participantes apresenta uma relação, mostrando que quanto maior o nível educacional dos pais/mães, melhor foram seus rendimentos de nota no exame. Por fim, a renda mensal familiar comprova o quão sensíveis são as notas de participantes com menor faixa de renda, isto é, uma nota maior que a média, apresenta um outlier positivo. Além de tudo, participantes com altas faixas de renda mensal familiar apresentam notas mais altas. Dessa forma, os rendimentos das notas dos participantes no ENEM sofre influência de características socioeconômicas.