Análise do ENADE 2021 da Região Metropolitana de Belo Horizonte

Author

Israel Oliveira

📧 Contate-me por e-mail

Caso queira um resumo das medidas de tendencia central das notas, comparando cursos presenciais e EaD, acesse este link.

1 INTRODUÇÃO

Esse estudo de caso busca responder as seguintes perguntas: Os cursos de licenciatura EaD da Região Metropolitana de Belo Horizonte tiraram notas boas na edição de 2021 do ENADE? Como ela se compara com os cursos presenciais da região? Caso sejam diferentes, existe uma diferença estatística entre essas duas modalidades? Para responder essas perguntas, utilizaremos os microdados do ENADE 2021, disponíveis no site do inep, filtrando apenas os cursos presentes na RMBH. Para as análises, utilizaremos a linguagem de programação R, criada com o proposito de trabalhar com dados, sendo ótima para o nosso caso. Além da facilidade de trabalhar com dados, o R é ótimo para plotar graficos e mapas, além de ser open source e gratuito.

Além de responder a essas perguntas, este documento irá descrever como foi todo o processo da analise, desde pegar e tratar os dados, até as análises estátisticas e as conclusões que podemos tirar. Como estamos analisando os dados de uma avaliação, primeiro temos que entender, que tipo de avaliação é o ENADE?

2 AVALIAÇÃO DO ENSINO SUPERIOR

O Exame Nacional de Desempenho dos Estudantes (ENADE) tem como objetivo mensurar alguns conhecimentos e habilidades de estudantes concluintes de cursos superiores, criando a partir dessas notas indicadores de qualidade para a instituição em que estão vinculados. Além do ENADE, também existe a “Avaliação de cursos de Graduação”e a “Avaliação institucional”. Todas essas três avaliações fazem parte do Sistema Nacional de Avaliação do Ensino Superior (Sinaes). Os indicadores produzidos por essas 3 avalições são:

Algo que vale destacar é que a partir de 2024 o ENADE começou a fazer uma Avaliação Prática, onde os estudantes que estiverem fazendo o estágio obrigatório tem que se cadastrar no sistema, enviar o seu plano de aula para serem avaliados. A avaliação é feita pelo professor supervisor do campo de estágio, e do professor da instituição superior. Caso queira saber mais, é só clicar aqui. Essa avaliação é importante pois as habilidades e competencias que vão para além do dominio teórico, considerando também a relação com os estudantes, a forma em que a aula foi ministrada, como os materiais foram utilizados, os valores que estão sendo passados na aula. O ENADE 2021 conta com questões discursivas e objetivas, as questões discursivas tendo peso de 40% da nota, e as objetivas 60%.

Um elemento importante a ser considerado é que o ENADE é uma avaliação obrigatória, mas que não trás consequencias aos estudantes que forem mal na prova. Sem nenhum tipo de incentivo para tirar uma nota boa no exame, levaremos em consideração a percepção dos alunos sobre a prova, analisando mais especificamente a nota dos estudantes por essa variavel.

3 PREPARAÇÃO DOS DADOS

3.1 Por que não responder as perguntas analisando o Conceito ENADE?

Para a nossa analise usaremos os microdados do ENADE. Caso quisermos uma resposta mais resumida sobre as nossas perguntas, poderiamos simplesmente checar nos resultados do Conceito Enade, que já tem a média das notas, e comparar as instituições. O problema de basear a análise apenas nas médias é que quando agregamos os dados, os “pontos fora da curva” acabam interferindo na média, impossibilitando uma analise estatística mais rigorosa. Além disso, com os microdados nós podemos calcular se existe uma diferença estatística entre os resultados, e o quão forte é essa diferença. Para ajudar, podemos pensar a partir da seguinte pergunta:

  • Os cursos presenciais tiveram uma média maior que os cursos EaD, mas, o quão maior foi essa nota? Será que tirar uma nota melhor faz os cursos presencias serem realmente melhores? O que é tirar uma nota melhor?

3.2 Importando os banco de dados

Os microdados do enade se encontram no site do Inep. Ao baixar o arquivo, descompactamos o arquivo .zip e nos deparamos com duas subpastas, uma chamada “LEIA-ME”, e outra chamada “DADOS”. A primeira pasta contém o manual do usuario, com informações sobre o ENADE; os questionários que os estudantes responderam; e o dicionário das variáveis, com os seus nomes, rotulos e valores, e os codigos do municipios presentes nos bancos de dados. Na pasta DADOS, estão…os dados! São 43 bancos de dados no formato .csv. Para esta analise, utilizaremos o arquivo 1, contendo os municipios e as modalidades dos cursos, e o arquivo 3, que contem as notas gerais, dos componentes especificos, da formação geral, e a percepção dos estudantes sobre a prova. Como chave primária, as duas bases possuem a variavel “CO_CURSO”, sendo possivel juntar as duas bases, filtrando apenas as cidades da RMBH.

Vamos começar importanto o arquivo 1 dos dados:

arq1 <- read_delim("E:/Isgael/R/Análise dos cursos de licenciatura ENADE 2021/microdados_Enade_2021/2.DADOS/microdados2021_arq1.txt", 
delim = ";", escape_double = FALSE, col_types = cols(NU_ANO = col_character(), 
         CO_CURSO = col_character(), CO_IES = col_character(), 
         CO_CATEGAD = col_character(), CO_ORGACAD = col_character(), 
         CO_GRUPO = col_character(), CO_MODALIDADE = col_character(), 
         CO_MUNIC_CURSO = col_character(), 
         CO_UF_CURSO = col_character(), CO_REGIAO_CURSO = col_character()), 
     trim_ws = TRUE)

Checando se a base foi importada corretamente:

## # A tibble: 1 × 2
##   observacoes variaveis
##         <int>     <int>
## 1      489866        10
NU_ANO CO_CURSO CO_IES CO_CATEGAD CO_ORGACAD CO_GRUPO CO_MODALIDADE CO_MUNIC_CURSO CO_UF_CURSO CO_REGIAO_CURSO
2021 1401623 18165 2 10028 702 0 3550308 35 3
2021 1260026 1205 4 10022 6409 0 4113205 41 4
2021 1102413 588 1 10028 1402 1 4106902 41 4
2021 14511 587 1 10028 1502 1 2611606 26 2
2021 13591 580 1 10028 1501 1 2611606 26 2
2021 1404203 2111 5 10020 3501 0 2312908 23 2
2021 98892 1491 4 10020 2001 0 3304557 33 3
2021 96955 595 1 10028 702 1 3101607 31 3
2021 98892 1491 4 10020 2001 0 3304557 33 3
2021 495 5 1 10028 3002 1 2211001 22 2
2021 1268545 322 4 10028 904 0 3550308 35 3
2021 89380 298 4 10028 2001 0 3106200 31 3
2021 1164982 135 5 10020 3501 0 3505906 35 3
2021 1458717 1491 4 10020 1601 0 4106902 41 4
2021 1420353 1196 4 10028 3501 0 4115200 41 4
2021 115872 17 1 10028 1602 1 3170206 31 3
2021 1465702 456 5 10020 79 0 3550308 35 3
2021 1190159 298 4 10028 702 0 4113700 41 4
2021 1279605 316 5 10028 2001 1 3550308 35 3
2021 90677 3172 2 10028 4005 1 1301902 13 1

Verificando no dicionário, a importação dos dados ocorreu sem erros. Como pode perceber, a base inteira tem miseras 489,866 observações! Essa base considera o Brasil inteiro. Como queremos analisar apenas a RMBH, precisamos filtrar essa base. Para facilitar a organização dos dados, evitando criar banco de dados intermediários, utilizaremos pipes para filtrar os municipios da RMBH, renomear os valores da variavel CO_MODALIDADE para “EaD” e “Presencial”, e trocar o codico das cidades pelos seus nomes.

arq1_rmbh <- arq1 |> 
  filter(CO_MUNIC_CURSO %in% c(3106200, 3105004,3118601, 3106705, 3109006,
                               3110004, 3112505,3117876, 3124104, 3126000,
                               3129806, 3130101,3131901, 3132206, 3133709,
                               3133808, 3134608,3136652, 3137601, 3140159,
                               3140704, 3141108,3142304, 3144805, 3136603,
                               3147105, 3149309,3153608, 3153905, 3154606,
                               3154804, 3155306,3156700, 3157203, 3157807,
                               3161908, 3162922,3163102, 3165537, 3167202,
                               3168309, 3171204,3105400, 3106408, 3107703,
                               3108107, 3126406,3127206, 3131000)) |> 
  mutate(CO_MODALIDADE = recode(CO_MODALIDADE, 
                                "0" = "EaD",
                                "1" = "Presencial" )) |> 
  mutate(CO_MUNIC_CURSO = as.character(CO_MUNIC_CURSO)) |> 
  mutate(CO_MUNIC_CURSO = recode(CO_MUNIC_CURSO,
                                 "3105400" = "Barao de Cocais",
                                 "3106200" = "Belo Horizonte",
                                 "3106705" ="Betim",
                                 "3118601" = "Contagem",
                                 "3126000" = "Florestal",
                                 "3129806" = "Ibirité",
                                 "3133808" = "Itaúna",
                                 "3147105" = "Pará de Minas",
                                 "3156700" = "Sabará",
                                 "3167202" = "Sete Lagoas")) |> 
  arrange(desc(CO_CURSO))

Verificando se as observações foram corretamente filtradas por cidade:

table(arq1_rmbh$CO_MUNIC_CURSO)

Barao de Cocais  Belo Horizonte           Betim        Contagem       Florestal 
             20           38940             203             275             141 
        Ibirité          Itaúna   Pará de Minas          Sabará     Sete Lagoas 
            438              35              49              35              39 

Observamos que Belo Horizonte possui 96,9% das observações! Voltaremos para essa questão mais a frente. Agora, vamos selecionar as variaveis que iremos trabalhar:

arq1_rmbh <-  arq1_rmbh |> 
  select(CO_CURSO, CO_IES, CO_CATEGAD, CO_MODALIDADE, CO_MUNIC_CURSO)
# A tibble: 1 × 2
  observacoes variaveis
        <int>     <int>
1       40175         5
CO_CURSO CO_IES CO_CATEGAD CO_MODALIDADE CO_MUNIC_CURSO
1268023 298 4 EaD Belo Horizonte
1268023 298 4 EaD Belo Horizonte
89380 298 4 EaD Belo Horizonte
1268023 298 4 EaD Belo Horizonte
89380 298 4 EaD Belo Horizonte
89380 298 4 EaD Belo Horizonte
89380 298 4 EaD Belo Horizonte
89380 298 4 EaD Belo Horizonte
12973 575 1 Presencial Belo Horizonte
1268023 298 4 EaD Belo Horizonte
89380 298 4 EaD Belo Horizonte
88509 338 5 Presencial Belo Horizonte
89380 298 4 EaD Belo Horizonte
89380 298 4 EaD Belo Horizonte
366629 1509 4 Presencial Belo Horizonte
89380 298 4 EaD Belo Horizonte
89380 298 4 EaD Belo Horizonte
89380 298 4 EaD Belo Horizonte
89380 298 4 EaD Belo Horizonte
150300 663 5 Presencial Belo Horizonte

Agora, vamos importar o arquivo 3 dos dados:

arq3 <- read_delim("E:/Isgael/R/Análise dos cursos de licenciatura ENADE 2021/microdados_Enade_2021/2.DADOS/microdados2021_arq3.txt", 
    delim = ";", escape_double = FALSE, col_types = cols(NU_ANO = col_character(), 
        CO_CURSO = col_character()), trim_ws = TRUE)
# A tibble: 1 × 2
  observacoes variaveis
        <int>     <int>
1      489866        52
NU_ANO CO_CURSO NU_ITEM_OFG NU_ITEM_OFG_Z NU_ITEM_OFG_X NU_ITEM_OFG_N NU_ITEM_OCE NU_ITEM_OCE_Z NU_ITEM_OCE_X NU_ITEM_OCE_N DS_VT_GAB_OFG_FIN DS_VT_GAB_OCE_FIN DS_VT_ESC_OFG DS_VT_ACE_OFG DS_VT_ESC_OCE DS_VT_ACE_OCE TP_PRES TP_PR_GER TP_PR_OB_FG TP_PR_DI_FG TP_PR_OB_CE TP_PR_DI_CE TP_SFG_D1 TP_SFG_D2 TP_SCE_D1 TP_SCE_D2 TP_SCE_D3 NT_GER NT_FG NT_OBJ_FG NT_DIS_FG NT_FG_D1 NT_FG_D1_PT NT_FG_D1_CT NT_FG_D2 NT_FG_D2_PT NT_FG_D2_CT NT_CE NT_OBJ_CE NT_DIS_CE NT_CE_D1 NT_CE_D2 NT_CE_D3 CO_RS_I1 CO_RS_I2 CO_RS_I3 CO_RS_I4 CO_RS_I5 CO_RS_I6 CO_RS_I7 CO_RS_I8 CO_RS_I9
2021 1314234 8 0 0 0 27 0 5 0 ECBBAACD XBXADCCCEBDDBDDXEXEACXDACCE DBEAABDB 00001000 CDEACCDBAACCAEAACBDAEADCDBE 909101000000000909010910001 555 555 555 555 555 555 555 555 555 555 555 17.6 12.5 12.5 12.5 8 40 0 17 25 15 19.3 22.7 0.0 0 0 0 C D D A A A B D D
2021 1164982 8 0 0 0 27 2 6 0 ECBBAACD ZADXBXCXAEBBCCABZXBEXXDCECA NA NA NA NA 222 222 222 222 222 222 222 222 222 222 222 NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA
2021 1443997 8 0 0 0 27 0 4 0 ECBBAACD ABXADCCCEBDDBDDXEXDEEACBBXD NA NA NA NA 222 222 222 222 222 222 222 222 222 222 222 NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA
2021 89380 8 0 0 0 27 0 4 0 ECBBAACD DAXXBEBDEXCCBBBCECXADADACCE NA NA NA NA 556 556 556 556 556 556 556 556 556 556 556 NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA
2021 3197 8 0 0 0 27 2 6 0 ECBBAACD EBDXXCCBXEDAXACEXADBZEEXZCD BBBBCADE 00110100 BBDDDCEBCBDECAEEAAEACEBADCE 011991019010910191008109810 555 555 555 555 555 555 555 555 555 555 555 44.0 31.3 37.5 22.0 10 50 0 34 50 30 48.2 52.6 23.3 20 50 0 D D B B C C D C B
2021 1152593 8 0 0 0 27 0 5 0 ECBBAACD XXAXDBDADEDXBEACXADEADDACCE CCBAACCA 01101010 EABEABDADEDEAEACDADEADDACCE 990901111119011191111111111 555 555 555 555 555 555 555 555 555 555 555 75.6 53.6 50.0 59.0 61 85 55 57 85 50 82.9 86.4 63.3 40 90 60 D D B B B B D E B
2021 1374069 8 0 0 0 27 2 6 0 ECBBAACD ZADXBXCXAEBBCCABZXBEXXDCECA CBBAEDCA 00100010 DBDEBDDBAECCCCBEEDBCAACDBDA 801919091100110089109900001 555 555 555 555 555 555 555 555 555 555 555 33.5 19.8 25.0 12.0 7 35 0 17 25 15 38.0 42.1 15.0 0 45 0 C B C C C C D E B
2021 29447 8 0 0 0 27 0 3 0 ECBBAACD XDEDXABCACDCBAABECADCXDACCE EAEACBCC 10000010 ADBAAAEEAEECBEEAAEEDEADADAE 910091001001100000010911001 555 555 555 555 555 555 555 555 555 555 555 31.5 22.8 25.0 19.5 8 40 0 31 55 25 34.4 37.5 16.7 50 0 0 D D D B B E B B D
2021 115882 8 0 0 0 27 2 6 0 ECBBAACD ZADXBXCXAEBBCCABZXEXCXDACCE NA NA NA NA 222 222 222 222 222 222 222 222 222 222 222 NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA
2021 98892 8 0 0 0 27 0 4 0 ECBBAACD DAXXBEBDEXCCBBBCECXADADACCE BBBACEAB 00100000 ABADBECDACCCBBBAECEADAEAADE 009911010911111011911101001 555 555 555 555 555 555 555 555 555 555 555 55.4 27.5 12.5 50.0 34 50 30 66 70 65 64.7 65.2 61.7 30 90 65 D D C C D D B B D
2021 1143724 8 0 0 0 27 0 4 0 ECBBAACD DAXXBEBDEXCCBBBCECXADADACCE NA NA NA NA 222 222 222 222 222 222 222 222 222 222 222 NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA
2021 1382608 8 0 0 0 27 0 4 0 ECBBAACD ECBCXEXAAEDDCAEXAABDCXDACCE BBBDAEBD 00101001 CCBCBEBBDBECAADBAABDADEADAC 011191900000010911110901000 555 555 555 555 555 555 555 555 555 666 555 38.5 34.1 37.5 29.0 25 65 15 33 65 25 40.0 43.5 20.0 40 0 0 D C C D D D B C D
2021 1271848 8 0 0 0 27 0 5 0 ECBBAACD XBXADCCCEBDDBDDXEXEACXDACCE EABBCAED 10110101 BDDBDCBCECBDDDADEDEAEAEACDC 909011011001010919110901100 555 555 555 555 555 555 555 555 555 555 555 46.6 47.3 62.5 24.5 35 55 30 14 70 0 46.3 50.0 25.0 50 25 0 C C C A A B E D B
2021 98892 8 0 0 0 27 0 4 0 ECBBAACD DAXXBEBDEXCCBBBCECXADADACCE CDBAAAAC 00101100 ADBADEECEDCABBBCDADAEADACAC 009901001910111100910111100 555 555 555 555 555 555 555 555 555 555 555 48.3 40.5 37.5 45.0 50 50 50 40 80 30 50.9 52.2 43.3 10 40 80 D D A C C D B A D
2021 11321 8 0 0 0 27 0 5 0 ECBBAACD XBXADCCCEBDDBDDXEXEACXDACCE NA NA NA NA 222 222 222 222 222 222 222 222 222 222 222 NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA
2021 315831 8 0 0 0 27 0 6 0 ECBBAACD EAEDXEDCBAXCXCCBDXDDEXCAXAB BCDBCBED 01010001 ECDEEEAEDABEEEAEECAAEDECEBD 100091000190900009001900900 555 555 555 555 555 555 555 555 555 555 555 21.6 25.9 37.5 8.5 7 35 0 10 10 10 20.2 19.0 26.7 30 0 50 C C C A A C D D B
2021 96655 8 0 0 0 27 0 4 0 ECBBAACD DAXXBEBDEXCCBBBCECXADADACCE BCEBCACA 01010110 DADDBCBBECACBCBCCACCACAACDC 119910101901101100900001100 555 555 555 555 555 555 555 333 555 555 555 46.1 37.0 50.0 17.5 35 55 30 0 0 0 49.1 47.8 56.7 100 55 15 C C B C B C C D D
2021 66506 8 0 0 0 27 0 7 0 ECBBAACD EAEDXEDCBAXCXXXXDXACABDACCE NA NA NA NA 222 222 222 222 222 222 222 222 222 222 222 NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA
2021 62584 8 0 0 0 27 2 6 0 ECBBAACD ZADXBXCXAEBBCCABZXEXCXDACCE NA NA NA NA 222 222 222 222 222 222 222 222 222 222 222 NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA
2021 15333 8 0 0 0 27 0 6 0 ECBBAACD EAEDXEDCBAXCXCCBDXDDEXCAXAB EAEAAABA 10001100 CAEDDEBCBAE.CEEEDAAAECCACCD 011191011190900019001911900 555 555 555 555 555 555 555 555 555 555 555 47.8 32.9 37.5 26.0 26 70 15 26 70 15 52.8 52.4 55.0 90 15 60 C D A B A D B C D

Para filtrar essa base, não podemos usar o método anterior, porque nessa base a unica variavel que podemos utilizar como filtro é o CO_CURSO. Para filtrar apenas os cursos presentes na região, utilizaremos a base arq1_rmbh para selecionar todos os cursos que pertencem a um determinado municipio da RMBH. Para o filtro, poderiamos digitar manualmente os cursos de cada municipio, atribuindo o nome da cidade em uma nova coluna. Porém, ao total são 165 cursos diferentes, sendo pouco prático digitar tudo a mão. Então, criamos um vetor (uma coluna que representa uma variavel e seus valores) com os cursos. Depois, vamos usar o mutate() para criar uma coluna com o nome das cidades. Analisando os cursos por municipio, Belo Horizonte tem sozinho 128 cursos, o resto ficando com as outras cidades. Então, para não criar vetores para todas as cidades, iremos criar um vetor apenas para BH, e nos outros municipios escrevemos manualmente os cursos:

arq3_rmbh <- arq3 |> 
  filter(CO_CURSO %in% c(vetor_cursos$CO_CURSO)) |> 
  mutate(CO_MUNIC_CURSO = case_when(CO_CURSO %in% c("111506") ~ "Barão de Cocais",
                                    CO_CURSO %in% c(vetor_curso_bh$CO_CURSO) ~ "Belo Horizonte",
                                    CO_CURSO %in% c("7523", "88208", "92080", "93396", "107631", "1068884", "1204896") ~ "Betim",
                                    CO_CURSO %in% c("50250", "113328", "1188468", "1204187","1304525", "1364175", "1438252", "1523184", "1523189") ~ "Contagem",
                                    CO_CURSO %in% c("122354","122356", "122358",  "122360", "1114569", "1161839") ~ "Florestal",
                                    CO_CURSO %in% c("56134","63888", "68511", "85136", "103600") ~ "Ibirité",
                                    CO_CURSO %in% c("1285826") ~ "Itaúna",
                                    CO_CURSO %in% c("16647", "54762", "5000213") ~ "Pará de Minas",
                                    CO_CURSO %in% c("1191018") ~ "Sabará",
                                    CO_CURSO %in% c("100212", "1121383", "1267045", "1358414") ~ "Sete Lagoas"))
# A tibble: 1 × 2
  observacoes variaveis
        <int>     <int>
1       40175        53
NU_ANO CO_CURSO NU_ITEM_OFG NU_ITEM_OFG_Z NU_ITEM_OFG_X NU_ITEM_OFG_N NU_ITEM_OCE NU_ITEM_OCE_Z NU_ITEM_OCE_X NU_ITEM_OCE_N DS_VT_GAB_OFG_FIN DS_VT_GAB_OCE_FIN DS_VT_ESC_OFG DS_VT_ACE_OFG DS_VT_ESC_OCE DS_VT_ACE_OCE TP_PRES TP_PR_GER TP_PR_OB_FG TP_PR_DI_FG TP_PR_OB_CE TP_PR_DI_CE TP_SFG_D1 TP_SFG_D2 TP_SCE_D1 TP_SCE_D2 TP_SCE_D3 NT_GER NT_FG NT_OBJ_FG NT_DIS_FG NT_FG_D1 NT_FG_D1_PT NT_FG_D1_CT NT_FG_D2 NT_FG_D2_PT NT_FG_D2_CT NT_CE NT_OBJ_CE NT_DIS_CE NT_CE_D1 NT_CE_D2 NT_CE_D3 CO_RS_I1 CO_RS_I2 CO_RS_I3 CO_RS_I4 CO_RS_I5 CO_RS_I6 CO_RS_I7 CO_RS_I8 CO_RS_I9 CO_MUNIC_CURSO
2021 89380 8 0 0 0 27 0 4 0 ECBBAACD DAXXBEBDEXCCBBBCECXADADACCE NA NA NA NA 222 222 222 222 222 222 222 222 222 222 222 NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA Belo Horizonte
2021 89380 8 0 0 0 27 0 4 0 ECBBAACD DAXXBEBDEXCCBBBCECXADADACCE CDEAEECD 00000011 EABEAEBCAECEECBDDCDEABACEBE 019901100910001001900000001 555 555 555 555 555 555 555 555 555 555 555 31.3 39.2 25.0 60.5 37 65 30 84 40 95 28.6 30.4 18.3 15 30 10 C B B A A B B D D Belo Horizonte
2021 89380 8 0 0 0 27 0 4 0 ECBBAACD DAXXBEBDEXCCBBBCECXADADACCE CABBCBDD 00110001 EBADDEBECCDEDBBEDDCBDBEACBD 009901100900011000901001100 555 555 555 555 555 555 336 333 336 555 333 25.6 22.5 37.5 0.0 0 0 0 0 0 0 26.6 30.4 5.0 0 15 0 C C B A A C E C D Belo Horizonte
2021 89380 8 0 0 0 27 0 4 0 ECBBAACD DAXXBEBDEXCCBBBCECXADADACCE BAEDEACC 00000110 BADABDCEBEEEACECDDDADBBCDAD 019910000900000100911000000 555 555 555 333 555 555 333 333 333 555 555 19.8 15.0 25.0 0.0 0 0 0 0 0 0 21.4 21.7 20.0 0 60 0 D C D C B D D B E Belo Horizonte
2021 89380 8 0 0 0 27 0 4 0 ECBBAACD DAXXBEBDEXCCBBBCECXADADACCE EABABAEC 10100100 CCACEAAEBDEEDAEDDDBABAACCBA 009900000900000000910100100 555 555 555 555 555 555 555 555 555 555 555 18.6 27.5 37.5 12.5 5 25 0 20 40 15 15.6 13.0 30.0 50 30 10 E D C B B C E D C Belo Horizonte
2021 89380 8 0 0 0 27 0 4 0 ECBBAACD DAXXBEBDEXCCBBBCECXADADACCE CADAAADC 00001100 B*BDBBDECEEABBBEADDADAEACBE 009910000900111000911101101 555 555 555 555 555 555 555 555 555 555 555 37.6 23.6 25.0 21.5 30 50 25 13 65 0 42.2 43.5 35.0 10 70 25 C C C A D D B C D Belo Horizonte
2021 89380 8 0 0 0 27 0 4 0 ECBBAACD DAXXBEBDEXCCBBBCECXADADACCE EABBCCDD 10110001 EBADBECCDCBCBCBEEDBCDACBCEE 009911000901101010901100101 555 555 555 555 555 555 333 555 555 555 555 37.4 31.0 50.0 2.5 0 0 0 5 25 0 39.5 43.5 16.7 40 0 10 D C A D C D B D D Belo Horizonte
2021 89380 8 0 0 0 27 0 4 0 ECBBAACD DAXXBEBDEXCCBBBCECXADADACCE EAEAAACA 10001110 EAAAEABEDCECDBCAAEABBACADBC 019900100901010000900101000 555 555 555 555 555 555 555 555 555 555 555 27.5 38.4 50.0 21.0 10 50 0 32 40 30 23.9 26.1 11.7 30 0 5 C C C A A A A C C Belo Horizonte
2021 21979 8 0 0 0 27 1 5 0 ECBBAACD XECBDCDAXXABXEBBEEXADEACZDD EABACBCE 10100010 DECBECDACCABBEBAEADBBBAECDA 911101119911911010900010810 555 555 555 555 555 555 555 555 555 555 333 47.6 30.9 37.5 21.0 13 65 0 29 25 30 53.1 61.9 3.3 10 0 0 C D C B B B D C B Belo Horizonte
2021 89380 8 0 0 0 27 0 4 0 ECBBAACD DAXXBEBDEXCCBBBCECXADADACCE BAEADADE 00000100 CAADDECEEEEEEEECDECEEAEAEBB 019901001900000100900101000 555 555 555 555 555 555 555 555 555 555 555 26.2 15.5 12.5 20.0 22 50 15 18 50 10 29.7 26.1 50.0 40 80 30 D C C B B C E D C Belo Horizonte
2021 1374069 8 0 0 0 27 2 6 0 ECBBAACD ZADXBXCXAEBBCCABZXBEXXDCECA EBEAAACA 10001110 DADEBDCBDCBBECEBCADEDBEEBAB 811919190011010189019900000 555 555 555 555 555 555 555 555 555 555 555 42.9 41.0 50.0 27.5 8 40 0 47 55 45 43.5 47.4 21.7 0 15 50 C C A A B B B D D Belo Horizonte
2021 89380 8 0 0 0 27 0 4 0 ECBBAACD DAXXBEBDEXCCBBBCECXADADACCE NA NA NA NA 222 222 222 222 222 222 222 222 222 222 222 NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA Belo Horizonte
2021 89380 8 0 0 0 27 0 4 0 ECBBAACD DAXXBEBDEXCCBBBCECXADADACCE NA NA NA NA 556 556 556 556 556 556 556 556 556 556 556 NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA Belo Horizonte
2021 89380 8 0 0 0 27 0 4 0 ECBBAACD DAXXBEBDEXCCBBBCECXADADACCE EABAEBCE 10100010 DABEEEEBACBCBABCCEDADAEBCAE 119901000901101100911100101 555 555 555 555 555 555 555 555 555 555 555 45.3 35.5 37.5 32.5 43 55 40 22 50 15 48.6 52.2 28.3 30 45 10 C C B A A B B D D Belo Horizonte
2021 89380 8 0 0 0 27 0 4 0 ECBBAACD DAXXBEBDEXCCBBBCECXADADACCE CABACACA 00100110 BCBBDCBEDABCAEDBCBAECDBCADD 009900100901000000900000000 555 555 555 555 555 555 555 555 555 555 555 15.9 30.1 37.5 19.0 25 65 15 13 65 0 11.1 8.7 25.0 25 30 20 C C A B B D D C C Belo Horizonte
2021 89380 8 0 0 0 27 0 4 0 ECBBAACD DAXXBEBDEXCCBBBCECXADADACCE CBAAADEB 00001000 BCBEDBAB.CEACBDCAABACBECCBC 009900000900010100910000100 555 555 555 555 555 555 555 555 555 555 555 24.7 33.3 12.5 64.5 57 65 55 72 40 80 21.8 17.4 46.7 60 70 10 D B A D D E B C E Belo Horizonte
2021 89380 8 0 0 0 27 0 4 0 ECBBAACD DAXXBEBDEXCCBBBCECXADADACCE BADAEAAE 00000100 EAADEBAEEEACBCBCEDBDCEAEBDC 019900001901101110900000000 555 555 555 555 555 555 555 555 555 555 555 26.7 15.9 12.5 21.0 25 65 15 17 25 15 30.3 30.4 30.0 55 35 0 D D A B C A C B D Belo Horizonte
2021 89380 8 0 0 0 27 0 4 0 ECBBAACD DAXXBEBDEXCCBBBCECXADADACCE DAEAEACD 00000111 DBBDCACCCDBEBCEEABBACAEECAE 109900000900100000910100101 555 555 555 555 555 555 555 555 555 555 555 25.7 25.5 37.5 7.5 10 50 0 5 25 0 25.7 26.1 23.3 45 15 10 D D A B A D A A D Belo Horizonte
2021 89380 8 0 0 0 27 0 4 0 ECBBAACD DAXXBEBDEXCCBBBCECXADADACCE AABACBBC 00100000 DBADDEACC.BA.ABDBECAEDACEEE 109901000900001000910000001 555 555 555 333 555 555 333 333 333 555 555 18.8 7.5 12.5 0.0 0 0 0 0 0 0 22.5 21.7 26.7 0 70 10 B C C D D C E E C Belo Horizonte
2021 89380 8 0 0 0 27 0 4 0 ECBBAACD DAXXBEBDEXCCBBBCECXADADACCE ACDABDDB 01000000 DDCEAEABECCEACADAEAECAEACBB 109901001910000000900101100 555 555 555 555 555 555 336 336 555 555 555 21.2 7.5 12.5 0.0 0 0 0 0 0 0 25.8 30.4 0.0 0 0 0 C D A B B C B B D Belo Horizonte

Agora, vamos incluir a coluna CO_MODALIDADE da base arq1_rmbh, categorizando os cursos em presenciais e EaD.

vetor_modalidade <- arq1_rmbh |> 
  distinct(CO_CURSO, CO_MODALIDADE)

arq3_rmbh <- arq3_rmbh |> 
  mutate(CO_MODALIDADE = case_when(
    CO_CURSO %in% (vetor_modalidade |> filter(CO_MODALIDADE == "EaD") |> pull(CO_CURSO)) ~ "EaD",
    CO_CURSO %in% (vetor_modalidade |> filter(CO_MODALIDADE == "Presencial") |> pull(CO_CURSO)) ~ "Presencial"))

Agora, para finalizar, vamos adicionar as categorias dos cursos. As categorias de instituições de ensino superior presentes na nossa base de dados são: Particular com fins lucrativos; Particular sem fins lucrativos; Pública Estadual e Pública Federal. Adicionar essa variavel vai nos permitir analisar as notas dessas categorias de instituição para vermos se, realmente, os cursos presenciais, principalmente os públicos, tiram notas maiores que os cursos privados EaD.

arq3_rmbh <- arq3_rmbh |> 
  mutate(CO_CATEGAD = case_when(
    CO_CURSO %in% (arq1_rmbh |> filter(CO_CATEGAD == "1") |> pull(CO_CURSO)) ~ "Pública Federal",
    CO_CURSO %in% (arq1_rmbh |> filter(CO_CATEGAD == "2") |> pull(CO_CURSO)) ~ "Pública Estadual",
    CO_CURSO %in% (arq1_rmbh |> filter(CO_CATEGAD == "4") |> pull(CO_CURSO)) ~ "Privada Com Fins Lucrativos",
    CO_CURSO %in% (arq1_rmbh |> filter(CO_CATEGAD == "5") |> pull(CO_CURSO)) ~ "Privada Sem Fins Lucrativos"))
arq3_rmbh |> 
 group_by(CO_CATEGAD) |> 
  summarise(CO_MUNIC_CURSO = n())
# A tibble: 4 × 2
  CO_CATEGAD                  CO_MUNIC_CURSO
  <chr>                                <int>
1 Privada Com Fins Lucrativos          35921
2 Privada Sem Fins Lucrativos           1564
3 Pública Estadual                       815
4 Pública Federal                       1875

Finalizando a nossa base de dados final, vamos selecionar apenas as variaveis que iremos analisar, para poupar espaço e tempo de carregamento.

enade <- arq3_rmbh |> 
  select(CO_CURSO, NT_GER, NT_FG, NT_CE, CO_RS_I1, CO_RS_I2, CO_RS_I3, CO_RS_I4, CO_RS_I5, CO_RS_I6, CO_RS_I7, CO_RS_I8, CO_RS_I9, CO_MODALIDADE, CO_MUNIC_CURSO, CO_CATEGAD) |> 
  arrange(CO_CURSO)
# A tibble: 1 × 2
  observacoes variaveis
        <int>     <int>
1       40175        16
CO_CURSO NT_GER NT_FG NT_CE CO_RS_I1 CO_RS_I2 CO_RS_I3 CO_RS_I4 CO_RS_I5 CO_RS_I6 CO_RS_I7 CO_RS_I8 CO_RS_I9 CO_MODALIDADE CO_MUNIC_CURSO CO_CATEGAD
1374069 25.8 22.5 26.9 C B C A A C E B A EaD Belo Horizonte Privada Com Fins Lucrativos
89380 NA NA NA NA NA NA NA NA NA NA NA NA EaD Belo Horizonte Privada Com Fins Lucrativos
89380 18.6 4.0 23.4 D C C B B B E D C EaD Belo Horizonte Privada Com Fins Lucrativos
89380 23.1 15.0 25.8 NA NA NA NA NA NA NA NA NA EaD Belo Horizonte Privada Com Fins Lucrativos
312949 53.2 67.8 48.3 C C C B B A E E D Presencial Belo Horizonte Pública Federal
89380 35.6 29.0 37.8 D D A D D B B D D EaD Belo Horizonte Privada Com Fins Lucrativos
12945 63.4 54.1 66.5 C D C B B C B E C Presencial Belo Horizonte Pública Federal
89380 27.1 22.6 28.6 NA NA NA NA NA NA NA NA NA EaD Belo Horizonte Privada Com Fins Lucrativos
89380 49.3 26.7 56.8 D C A D D D D D E EaD Belo Horizonte Privada Com Fins Lucrativos
89380 26.7 19.2 29.2 D D C A A C A A C EaD Belo Horizonte Privada Com Fins Lucrativos

Agora que nossa base está pronta, podemos partir para a análise dos dados.

4 ANÁLISE DOS DADOS

4.1 Como é a cara dos nossos dados?

Vamos iniciar a nossa analise buscando ver de forma visual o rosto da nossa base de dados. Como nós queremos analisar as notas, que é uma variavel continua, vamos plotar um histograma, onde o eixo x será a variavel NT_GER, que é a nota bruta final da prova.

enade |> 
  ggplot(aes(x = NT_GER))+
  geom_histogram()+
  labs(
    title = "ENADE RMBH 2021",
    subtitle = "Nota bruta da avaliação",
    x = "Nota Bruta Geral",
    y = "Nº de Estudantes",
    caption = "Fonte - Microdados ENADE 2021")+
  theme_minimal()

Esse histograma já nos da informações bem importantes sobre as notas. Vemos que existe um pico em 25 pontos, e que a partir dali o número de estudantes que tiraram mais que 25 vai caindo gradativamente. Lembramos que a nota máxima bruta é 93,7 pontos, de acordo com o dicionário das variáveis que vem com os microdados. Então, nenhuma pessoa conseguiu fechar, tendo as maiores notas perto dos 80 pontos.

Okay, agora que já tivemos uma visão geral da distribuição das notas, vamos começar a responder as nossas perguntas iniciais. Vamos separar o histograma em estudantes de cursos presenciais e estudantes de cursos EaD:

enade |> 
  ggplot(aes(x = NT_GER, fill = CO_MODALIDADE))+
  geom_histogram()+
  labs(
    title = "ENADE RMBH 2021",
    subtitle = "Nota Bruta Da Avaliação Por Modalidade",
    x = "Nota Bruta Geral",
    y = "Nº de Estudantes",
    caption = "Fonte - Microdados ENADE 2021",
    fill = "Modalidade de Ensino")+
  theme_minimal()

Percebemos duas coisas nesse gráfico. A primeira, é que as notas dos cursos presenciais tem uma distribuição mais normal das notas, enquanto as notas dos cursos EaD tem o pico em 25 pontos, e vai caindo ao decorrer do grafico. Analisando a faixa dos 50 a 75 pontos, vemos um número muito grande de estudantes EaD, então, significa as notas são melhores? Vamos relembrar que da nossa base toda, 96,9% dos estudantes são de cursos EaD, e os restantes 3,1% de cursos presenciais. Então, sim, muitas pessoas tiraram notas equivalentes aos cursos presenciais, mas essas pessoas estão dentro do esperado, se comparado com os demais estudantes? Para isso, faremos um bloxpot, utilizando as mesmas variáveis:

enade |> 
  ggplot(aes(y = NT_GER, fill = CO_MODALIDADE))+
  geom_boxplot()+
  labs(
    title = "ENADE RMBH 2021",
    subtitle = "Nota Bruta Da Avaliação Por Modalidade",
    x = "Modalidade",
    y = "Nota Bruta Geral",
    caption = "Fonte - Microdados ENADE 2021",
    fill = "Modalidade de Ensino")+
  theme_minimal()

Cada ponto fora da caixa em um gráfico boxplot é o que chamamos de “outlier”, ou, pontos fora da curva. Temos uma representação visual de que enquanto nos cursos presenciais, tivemos alguns outliers com nota 0, nos cursos EaD tivemos vários outliers com notas maiores, significando que esses estudantes tiveram um desempenho, realmente, fora da caixa. Outra coisa que o bloxpot nos dá são as medianas e os quartis das notas. Aqui, percebemos que os cursos presenciais, em média, tiram notas maiores que os cursos EaD. A grandes questão da nossa pergunta é: O quão melhor é o desempenho dos cursos presenciais? Será que tem diferença estatística entre as notas? Agora que já vimos a cara dos nossos dados, vamos analisa-los estatísticamente.

4.2 Análise estatística dos dados

Na hora de escolher o nosso teste estatistico, precisamos verificar algumas caracteristicas das variaveis que vamos analisar. A Nota Geral Bruta segue distribuição normal? Se sim, nós podemos usar os testes paramétricos, como teste-t para amostras independentes para nossa análise. Caso não, nós teremos que usar testes não paramétricos, como o de Mann-Whitney e o Kruskal-Wallis. São testes de amostras independentes porque quem faz curso presencial, não pode fazer curso EaD ao mesmo tempo que fez a prova, por isso a escolha deste tipo de teste. Bem, para analisar a normalidade dos dados, um teste comum a se usar é o de Shapiro Wilk. Porém, o shapiro.test() no R suporta no máximo 5000 observações, e nossa base passa para além disso. Outra alternativa é usar o teste de Anderson Darling, que não tem essa limitação do numero de observações. O teste não vem no pacote base do R, sendo necessário instalar o pacote nortest.

ad.test(enade$NT_GER)

    Anderson-Darling normality test

data:  enade$NT_GER
A = 234.15, p-value < 2.2e-16

Conseguimos observar pelo valor de p (p < 2.2 e -16) que a nossa amostra não segue uma distribuição normal. Nós já tinhamos ideia de que a distribuição não é normal tanto pelo formato do histograma, quanto pela quantidade de outliers no bloxpot. Bem, sabemos então que teremos que usar testes não paramétricos para a análise.

Para a análise, escolhemos o teste de Mann-Whitney para saber se existe diferença estatística entre o grupo de estudantes EaD e o grupo de estudantes presencial. O motivo de sua escolha foi por ele poder ser usado com diferenças no tamanho das amostras, e falando de forma bem resumida, ao contrario do teste-t de amostras independentes que analisa as médias, o teste de Mann-Whitney analisa as medias e a amplitude inter-quartil das notas, fazendo um rankeamento dos valores observados. Para entender melhor como o teste funciona, indico este video que explica como é feito o calculo deste teste. Fazendo o teste então, temos:

enade |> 
  wilcox_test(NT_GER ~ CO_MODALIDADE)
# A tibble: 1 × 7
  .y.    group1 group2        n1    n2 statistic     p
* <chr>  <chr>  <chr>      <int> <int>     <dbl> <dbl>
1 NT_GER EaD    Presencial 30077  4691 34513230.     0

O teste automaticamente descarta os valores invalidos, por essa razão que a soma do grupo grupo 1 e grupo 2 da menos que a nossa amostra total. Então, olhando para o p (p = 0), nós rejeitamos a hipótese nula, e concluimos que existe uma diferença estatística entre as duas amostras. Agora, precisamos saber o quão forte é essa diferença. Para isso, usaremos o tamanho de efeito de Wilcox.

enade |> 
  wilcox_effsize(NT_GER ~ CO_MODALIDADE)
# A tibble: 1 × 7
  .y.    group1 group2     effsize    n1    n2 magnitude
* <chr>  <chr>  <chr>        <dbl> <int> <int> <ord>    
1 NT_GER EaD    Presencial   0.302 30077  4691 moderate 

Ao calcular o tamanho do efeito, os resultados variam entre 0 e 1, quanto mais perto do 0, menor o efeito, quanto mais perto do 1, maior o efeito. No R, o teste já nos da a magnitude desse efeito, até 0,29 é pequeno; até 0,49 é médio ou moderado;de 0,5 para cima é grande. Essa interpretação vai variar na literatura, tendo outras classificações para o resultado obtido. No nosso caso, ficaremos com a interpretação do programa.

5 REFLEXÕES

5.1 O Trabalho afeta na escolha da instituição?

Então, conseguimos responder utilizando de forma estatística a nossa pergunta. Existe diferença estatística entre as notas dos cursos EaD em relação aos cursos presenciais, e o tamanho do efeito dessa diferença é moderado. Embora exista essa diferença, vimos uma quantidade consideravel de pessoas que tiraram as mesmas notas que os estudantes de cursos presenciais. Ao analisar esse tipo de dado, não estamos buscando rotular os individuos, mas sim a performance da instituição em instruir os estudantes. Além disso, o público dos cursos presenciais tendem a ser diferentes do público dos cursos EaD. Vamos buscar observar se essa hipótese é verdadeira.

arq16 <- read_delim("E:/Isgael/R/Análise dos cursos de licenciatura ENADE 2021/microdados_Enade_2021/2.DADOS/microdados2021_arq16.txt", 
    delim = ";", escape_double = FALSE, col_types = cols(NU_ANO = col_skip()), 
    trim_ws = TRUE)
arq16_rmbh <- arq16 |> 
  filter(CO_CURSO %in% enade$CO_CURSO) |> 
  mutate(CO_CURSO = as.character(CO_CURSO)) |> 
  arrange(CO_CURSO)
# A tibble: 1 × 2
  observacoes variaveis
        <int>     <int>
1       40175         2
CO_CURSO QE_I10
1443184 E
89380 B
89380 E
89380 A
89380 E
97986 D
89380 B
89380 C
89380 E
89380 C
89380 E
89380 B
12968 A
1268023 E
89380 E
89380 C
1268023 E
89380 A
1190156 A
89380 A
enade <- enade |> 
  mutate(profissao = arq16_rmbh$QE_I10) |> 
  mutate(profissao = recode(profissao, "A" = "Não Trabalha",
                            "B" = "Trabalha Eventualmente",
                            "C" = "Trabalha até 20 Horas Semanais",
                            "D" = "Trabalha de 21 a 39 Horas Semanais",
                            "E" = "Trabalha 40 horas Semanais ou mais",)) |> 
  mutate(profissao = replace_na(profissao, "Não Respondeu")) |> 
  mutate(CO_RS_I1 = recode(CO_RS_I1, 
                                  "A" = "Muito Fácil",
                                  "B" = "Fácil",
                                  "C" = "Médio",
                                  "D" = "Dificil",
                                  "E" = "Muito Dificil",
                                  "*" = "Resposta Anulada"))|> 
  mutate(CO_RS_I1 = replace_na(CO_RS_I1, "Não Registrado"))
enade |> 
  ggplot(aes(x = CO_CATEGAD, fill = profissao))+
  geom_bar(position = "fill")+
  labs(
    title = "ENADE 2021 RMBH",
    subtitle = "Relação entre tipo de instituição e situação de trabalho",
    x = "Tipo Instituição",
    y = "Porcentagem",
    caption = "Fonte - Microdados ENADE 2021",
    fill = "Situação de Trabalho")+
  scale_y_continuous(labels = scales::percent)+
  scale_fill_brewer(palette = "Paired")+
  theme_minimal()

Embora exista uma diferença entre a proporção de pessoas que trabalham entre os tipos de instituições, essa diferença não parece ser tão grande. Para ter certeza, vamos fazer o teste Qui-quadrado de independencia para saber se há diferença estatística nesses resultados, que a olho nu não parece ter. Após o teste, vamos fazer o V de Cramer para saber qual é a força dessa diferença.

tabela_contingencia <- table(enade$CO_CATEGAD, enade$profissao)

teste_chi_quadrado <- chisq.test(tabela_contingencia)

teste_chi_quadrado

    Pearson's Chi-squared test

data:  tabela_contingencia
X-squared = 367.05, df = 15, p-value < 2.2e-16

Obversando o resultado do teste (X² = 367.05; df = 15; p < 2.2e-16), vemos que existe uma diferença estatisticamente significativa na nossa amostra. Porém, devido ao tamanho do banco de dados, observar apenas o P valor nos da margem para interpretações erradas dos nossos dados. Então, para saber a relação entre a situação profissional e a escolha do curso, vamos analisar os residuos padronizados do teste qui-quadrado de independência.

kable(teste_chi_quadrado$stdres, align = "c" ,digits = 2)
Não Respondeu Não Trabalha Trabalha 40 horas Semanais ou mais Trabalha até 20 Horas Semanais Trabalha de 21 a 39 Horas Semanais Trabalha Eventualmente
Privada Com Fins Lucrativos -8.55 -11.43 15.02 0.19 -2.42 1.62
Privada Sem Fins Lucrativos 7.00 4.71 -4.81 -3.06 0.03 -1.69
Pública Estadual 3.34 2.67 -6.06 2.03 2.02 -0.77
Pública Federal 3.82 10.56 -13.46 1.17 2.15 -0.30

Antes de analisarmos os residuos para saber a relação da situação de trabalho com a escolha do curso, temos que definir o intervalo de valores que representam uma distribuição normal. O valor normalmente utilizado é > 1,96 ou < -1,96, mas como usamos os residuos padronizados ajustados, para fazer uma analise mais precisa, precisamos calcular um novo intervalo de distribuição normal.

novoalfa <- 0.05/(4*6)

qnorm(novoalfa/2)
[1] -3.078088

Então, vamos considerar como resíduos significativos os valores >3.08 ou < -3,08. Voltando para a tabela então, tamos:

residuos <- teste_chi_quadrado$stdres

residuos_df <- as.data.frame(as.table(residuos))

residuos_df <- residuos_df |>
  transmute(
    Linha = Var1,
    Coluna = Var2,
    Resíduo = ifelse(
      Freq > 3.08, cell_spec(round(Freq, 2), background = "salmon", color = "white"),
      ifelse(Freq < -3.08, cell_spec(round(Freq, 2), background = "lightblue"),
             round(Freq, 2))
    )
  )

residuos_wide <- residuos_df |>
  pivot_wider(names_from = Coluna, values_from = Resíduo)

kbl(residuos_wide, escape = FALSE, align = "c") |>
  kable_styling(full_width = FALSE, position = "center")
Linha Não Respondeu Não Trabalha Trabalha 40 horas Semanais ou mais Trabalha até 20 Horas Semanais Trabalha de 21 a 39 Horas Semanais Trabalha Eventualmente
Privada Com Fins Lucrativos -8.55 -11.43 15.02 0.19 -2.42 1.62
Privada Sem Fins Lucrativos 7 4.71 -4.81 -3.06 0.03 -1.69
Pública Estadual 3.34 2.67 -6.06 2.03 2.02 -0.77
Pública Federal 3.82 10.56 -13.46 1.17 2.15 -0.3

Percebemos que, dentro da nossa amostra, quem trabalha eventualmente, trabalha até 20 horas, e trabalha entre 21 e 39 horas semanais, estão dentro dos valores esperados. As nossas diferenças estatísticas estão nas pessoas que trabalham 40 horas ou mais, e as que não trabalham. As que não responderam nós não iremos considerar na análise, embora tenham tido diferenças significativas. Além do valor, nós vamos observar se o valor é positivo ou negativo. Positivo indica que existem mais pessoas do que esperado pela amostra, e negativo, menos pessoas em relação a amostra.

Olhando pra coluna das pessoas que trabalham 40 horas semanais, percebemos algo que da força pra nossa hipótese inicial. Existem menos pessoas do que o esperado pela nossa amostra nos cursos presenciais que trabalham 40 horas semanais ou mais. Já nos cursos EaD, existem bem mais pessoas trabalhando esse tempo por semana. E, quando vamos pra coluna das pessoas que não trabalham, acaba re-confirmando nossa hipótese. Existem mais pessoas do que o esperado nos cursos presenciais que não trabalham, e menos pessoas que o esperado nos cursos EaD que não trabalham.

Para finalizar a nossa análise, vamos calcular o tamanho de efeito dessa diferença estatística. Como vimos nas notas, embora exista uma diferença estatística, ela pode ter um tamanho de efeito pequeno. Para isso, vamos calcular o V de Cramer:

assocstats(tabela_contingencia)
                    X^2 df P(> X^2)
Likelihood Ratio 368.22 15        0
Pearson          367.05 15        0

Phi-Coefficient   : NA 
Contingency Coeff.: 0.095 
Cramer's V        : 0.055 

Então, embora exista uma diferença estatística entre a situação de trabalho com o tipo de instituição que faz o curso, a força dessa associação é baixa. Então, uma das conclusões que podemos chegar é que embora os estudantes de cursos particulares trabalhem mais, tendo relevancia estatística, a força dessa relação é bem fraca. Então, a nossa hipótese embora se confirme de certa maneira, ela não tem tanta força sobre as notas de faculdades particulares EaD se sairem pior no ENADE.

5.2 Qual a relação entre a percepção da prova com a nota obtida?

Para concluir esse curto estudo de caso, vamos responder mais duas perguntas. A primeira pergunta é: A percepção da prova influenciou na nota?

enade |> 
  ggplot(aes(x = NT_GER, fill = CO_MODALIDADE))+
  geom_density(alpha = 1/1.5)+
  labs(title = "ENADE 2021 RMBH",
      subtitle = "RElação entre a percepção da prova e a nota",
      x = "Nota",
      y = "Proporção",
      fill = "Modalidade",
      caption = "Fonte - Microdados ENADE 2021")+
  facet_wrap(~ CO_RS_I1)+
  theme_minimal()

Percebemos que, aparentemente, não teve muita diferença. Agora, para finalizar, como as notas são distribuidas por categaria de curso, se é publico, privada, estadual ou federal, com ou sem fins lucrativos.

enade |> 
  group_by(CO_MUNIC_CURSO) |> 
  ggplot(aes(x = NT_GER, fill = CO_CATEGAD))+
  geom_histogram()+
   labs(title = "ENADE 2021 RMBH",
      subtitle = "RElação entre a categoria da instituição e a nota",
      x = "Nota",
      y = "Estudantes",
      fill = "Categoria",
      caption = "Fonte - Microdados ENADE 2021")

A maioria esmagadora dos estudantes são de instituições privadas com fins lucrativos. E , o dado mais chocante, é que 34038 são estudantes da Pitagoras / Unopar / Anhanguera. Uma instituição de ensino representa 84,7% dos licenciados formados na região metropolitana de Belo Horizonte. E, são quem tem as notas mais baixas no ENADE. Será que isso influencia na educação da RMBH? Buscaremos responder a essa pergunta em um outro momento. Obrigado por ler até aqui :).