Reflexos das Ações Afirmativas no ENADE: Formação de Professoras/es de Física
1. Carregamento da base de dados
Iniciamos a importação da base de dados do ENADE, utilizando um arquivo .csv que já recebeu um pré-processamento para reunir dados das edições de 2014, 2017 e 2021.
2. Pré-processamento dos dados
Aqui reduzimos o número de respostas das/os estudantes àquelas/es que fizeram Física Licenciatura em Universidades Públicas (Federais, Estaduais ou Municipais) na modalidade Presencial. Além disso, selecionamos as respostas de pessoas presentes e com resultado válido. Por fim, reduzimos nossa amostra às variáveis que julgamos importantes após extensa análise estatística e reflexões teóricas.
Essas variáveis foram: Ano, Categoria Administrativa da IES, Modalidade de Ensino, Estado, Região, Idade, Sexo, Tipo de Presença, Curso, Nota do Componente Específico, Cor ou Raça, Ações Afirmativas e Modalidade do Ensino Médio.
#reduz os dados para apenas o curso de Física Licenciatura 1402
dados <- dados |> filter(CO_GRUPO == 1402)
#reduz os dados às pessoas presentes e com resultados considerados
dados <- dados |> filter(TP_PRES == 555)
#seleciona as instituições públicas e presenciais
dados_pub <- dados |> filter(CO_CATEGAD == 1|CO_CATEGAD == 2|CO_CATEGAD == 3)
#seleciona os resultados dos cursos presenciais
dados_pub <- dados_pub |> filter(CO_MODALIDADE == 1)
dados_pub <- dados_pub |> select(NU_ANO, CO_CATEGAD, CO_MODALIDADE, CO_UF_CURSO,
CO_REGIAO_CURSO, NU_IDADE, TP_SEXO, TP_PRES,
CO_GRUPO, NT_CE, QE_I02, QE_I15, QE_I18
)Também modificamos as categorias das respostas para melhor se adequarem a nossa análise estatística. Por exemplo, as variáveis Ano (NU_ANO) e Região (CO_REGIAO) eram do tipo numérica, mas para nossa análise precisamos que sejam categóricas.
#Mudando a categoria das respostas ####
dados_pub <- dados_pub |>
mutate(
CO_REGIAO_CURSO = case_when(
CO_REGIAO_CURSO == 1 ~ "N",
CO_REGIAO_CURSO == 2 ~ "NE",
CO_REGIAO_CURSO == 3 ~ "SE",
CO_REGIAO_CURSO == 4 ~ "S",
CO_REGIAO_CURSO == 5 ~ "CO"
)
)
dados_pub <- dados_pub |>
mutate(
NU_ANO = case_when(
NU_ANO == 2014 ~ "2014",
NU_ANO == 2017 ~ "2017",
NU_ANO == 2021 ~ "2021"
)
)
dados_pub <- dados_pub |>
mutate(
CO_UF_CURSO = case_when(
CO_UF_CURSO == 11 ~ "Rondônia (RO)",
CO_UF_CURSO == 12 ~ "Acre (AC)",
CO_UF_CURSO == 13 ~ "Amazonas (AM)",
CO_UF_CURSO == 14 ~ "Roraima (RR)",
CO_UF_CURSO == 15 ~ "Pará (PA)",
CO_UF_CURSO == 16 ~ "Amapá (AP)",
CO_UF_CURSO == 17 ~ "Tocantins (TO)",
CO_UF_CURSO == 21 ~ "Maranhão (MA)",
CO_UF_CURSO == 22 ~ "Piauí (PI)",
CO_UF_CURSO == 23 ~ "Ceará (CE)",
CO_UF_CURSO == 24 ~ "Rio Grande do Norte (RN)",
CO_UF_CURSO == 25 ~ "Paraíba (PB)",
CO_UF_CURSO == 26 ~ "Pernambuco (PE)",
CO_UF_CURSO == 27 ~ "Alagoas (AL)",
CO_UF_CURSO == 28 ~ "Sergipe (SE)",
CO_UF_CURSO == 29 ~ "Bahia (BA)",
CO_UF_CURSO == 31 ~ "Minas Gerais (MG)",
CO_UF_CURSO == 32 ~ "Espírito Santo (ES)",
CO_UF_CURSO == 33 ~ "Rio de Janeiro (RJ)",
CO_UF_CURSO == 35 ~ "São Paulo (SP)",
CO_UF_CURSO == 41 ~ "Paraná (PR)",
CO_UF_CURSO == 42 ~ "Santa Catarina (SC)",
CO_UF_CURSO == 43 ~ "Rio Grande do Sul (RS)",
CO_UF_CURSO == 50 ~ "Mato Grosso do Sul (MS)",
CO_UF_CURSO == 51 ~ "Mato Grosso (MT)",
CO_UF_CURSO == 52 ~ "Goiás (GO)",
CO_UF_CURSO == 53 ~ "Distrito Federal (DF)"
)
)Por fim, ao analisarmos alguns testes de hipóteses observamos a importância de que não existam valores nulos. Utilizamos um método não otimizado para encontrar quais variáveis continham esses valores, sendo elas: Notas do Componente Específico (NT_CE) e as questões 2, 15 e 18 (QE_I02, QE_I15 e QE_I18) do Questionário do Estudante. Ambas indicando 9 respostas nulas.
table(dados_pub$NU_ANO)
table(dados_pub$CO_CATEGAD)
table(dados_pub$CO_MODALIDADE)
table(dados_pub$CO_UF_CURSO)
table(dados_pub$CO_REGIAO_CURSO)
table(dados_pub$NU_IDADE)
table(dados_pub$TP_SEXO)
table(dados_pub$TP_PRES)
table(dados_pub$CO_GRUPO)
table(dados_pub$NT_CE)
table(dados_pub$QE_I02) #existiram
table(dados_pub$QE_I15) #existiram
table(dados_pub$QE_I18) #existiramEstas respostas com valores nulos ou inexistentes foram excluídos de maneira simples e geral a partir da função “na.omit”. Sendo tais variáveis fundamentais para nossa análise posterior e compondo um número reduzido, não haverá impacto na amplitude dos resultados.
3. Análise Descritiva
Nesta seção mostraremos as tabela de contingência para as variáveis qualitativas, expressar alguns comportamentos importantes graficamente, bem como testes de relação entre as variáveis.
3.1 Base de dados
3.2 Agrupamento das Notas do Componente Específico
Nota do CE por Região
#Para agrupar e sumarisar com a média, desvio padrão, mínima e máxima
nt_ce_regiao <- dados_pub |>
group_by(CO_REGIAO_CURSO) |>
summarise(
Média = mean(NT_CE, na.rm = TRUE),
SD = sd(NT_CE, na.rm = TRUE),
Mínima = min(NT_CE, na.rm = TRUE),
Máxima = max(NT_CE, na.rm = TRUE)
)
#para colocar em ordem crescente das médias
nt_ce_regiao <- nt_ce_regiao |> arrange(Média)
#embelezando a tabela
formattable(nt_ce_regiao,
list(Máxima = color_tile("lightblue", "lightgreen"),Mínima = color_tile("orange","red"))
)| CO_REGIAO_CURSO | Média | SD | Mínima | Máxima |
|---|---|---|---|---|
| CO | 35.55232 | 20.17231 | 0.0 | 76.2 |
| N | 38.59257 | 17.17320 | 0.0 | 84.8 |
| SE | 39.07882 | 17.92505 | 0.0 | 87.1 |
| S | 39.92838 | 19.41922 | 3.0 | 84.7 |
| NE | 41.02119 | 16.38708 | 8.5 | 89.4 |
Nota do CE por Estado
#Para agrupar e sumarisar com a média, desvio padrão, mínima e máxima
nt_ce_estado <- dados_pub |>
group_by(CO_UF_CURSO) |>
summarise(
Média = mean(NT_CE, na.rm = TRUE),
SD = sd(NT_CE, na.rm = TRUE),
Mínima = min(NT_CE, na.rm = TRUE),
Máxima = max(NT_CE, na.rm = TRUE)
)
nt_ce_estado <- nt_ce_estado |> arrange(Média)
formattable(nt_ce_estado,
list(Máxima = color_tile("lightblue", "lightgreen"),Mínima = color_tile("orange","red"))
)| CO_UF_CURSO | Média | SD | Mínima | Máxima |
|---|---|---|---|---|
| Distrito Federal (DF) | 15.96449 | 17.210348 | 0.0 | 57.0 |
| Paraíba (PB) | 28.91733 | 10.683527 | 9.7 | 75.7 |
| Sergipe (SE) | 30.08462 | 7.578375 | 17.9 | 51.6 |
| Rondônia (RO) | 30.19149 | 11.593061 | 0.0 | 51.5 |
| Roraima (RR) | 34.43750 | 9.238427 | 19.3 | 50.2 |
| Rio de Janeiro (RJ) | 34.82537 | 15.132060 | 8.9 | 83.2 |
| Pará (PA) | 35.09874 | 12.745499 | 7.7 | 74.4 |
| Mato Grosso do Sul (MS) | 35.59425 | 12.895595 | 14.8 | 57.2 |
| Alagoas (AL) | 35.84396 | 14.113924 | 8.6 | 59.8 |
| Amazonas (AM) | 37.53916 | 21.341641 | 3.5 | 69.2 |
| Paraná (PR) | 37.97251 | 20.156946 | 5.1 | 84.7 |
| Bahia (BA) | 38.35084 | 13.878834 | 15.2 | 81.3 |
| Ceará (CE) | 38.68859 | 16.002009 | 16.6 | 89.4 |
| Mato Grosso (MT) | 39.03462 | 19.117769 | 0.0 | 60.9 |
| Minas Gerais (MG) | 39.41994 | 18.861534 | 3.8 | 85.9 |
| São Paulo (SP) | 40.26918 | 18.143601 | 0.0 | 78.8 |
| Rio Grande do Sul (RS) | 40.51023 | 17.066631 | 3.0 | 83.5 |
| Santa Catarina (SC) | 42.46735 | 19.928137 | 3.8 | 83.1 |
| Maranhão (MA) | 43.04306 | 18.771705 | 8.5 | 87.5 |
| Pernambuco (PE) | 44.15613 | 17.716354 | 8.5 | 85.6 |
| Goiás (GO) | 44.33452 | 17.520613 | 8.9 | 76.2 |
| Rio Grande do Norte (RN) | 46.09467 | 13.341872 | 10.7 | 72.2 |
| Tocantins (TO) | 47.43457 | 17.042206 | 14.7 | 71.1 |
| Piauí (PI) | 47.63511 | 15.699831 | 17.4 | 89.0 |
| Amapá (AP) | 53.14638 | 20.312272 | 25.5 | 84.8 |
| Espírito Santo (ES) | 54.72657 | 16.553809 | 19.4 | 87.1 |
| Acre (AC) | 55.66615 | 20.344885 | 23.8 | 82.2 |
3.3 Gráficos Descritivos
Histogramas
Histograma em planos mostrando uma possível normalidade da relação
ggplot(dados_pub, aes(x = NT_CE, fill = TP_SEXO)) + geom_histogram(binwidth = 1, alpha = 0.5) + facet_grid(TP_SEXO ~ .)ggplot(dados_pub, aes(x = NT_CE, fill = QE_I02)) + geom_histogram(binwidth = 1, alpha = 0.5) + facet_grid(QE_I02 ~ .)ggplot(dados_pub, aes(x = NT_CE, fill = QE_I15)) + geom_histogram(binwidth = 1, alpha = 0.5) + facet_grid(QE_I15 ~ .)ggplot(dados_pub, aes(x = NT_CE, fill = QE_I18)) + geom_histogram(binwidth = 1, alpha = 0.5) + facet_grid(QE_I18 ~ .)3.4 Testes de Normalidade
Shapiro-Wilk
set.seed(123) # Para reprodutibilidade escolher uma semente 123
subsample_NT <- sample(dados_pub$NT_CE, 5000)
shapiro.test(subsample_NT) #não funcionou##
## Shapiro-Wilk normality test
##
## data: subsample_NT
## W = 0.97592, p-value < 2.2e-16
ANOVA
## Df Sum Sq Mean Sq F value Pr(>F)
## TP_SEXO 1 1357058 1357058 22764.470 < 2e-16 ***
## QE_I02 3 507362 169121 2836.974 < 2e-16 ***
## QE_I15 4 99601 24900 417.700 < 2e-16 ***
## QE_I18 3 12724 4241 71.146 < 2e-16 ***
## TP_SEXO:QE_I02 1 379 379 6.351 0.011749 *
## QE_I02:QE_I15 3 1089 363 6.087 0.000392 ***
## QE_I02:QE_I18 2 571 286 4.790 0.008341 **
## QE_I15:QE_I18 1 268 268 4.493 0.034070 *
## Residuals 7914 471777 60
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
Welch ANOVA
oneway.test(NT_CE ~ interaction(TP_SEXO, QE_I02, QE_I15, QE_I18),
data = dados_pub, var.equal = FALSE)##
## One-way analysis of means (not assuming equal variances)
##
## data: NT_CE and interaction(TP_SEXO, QE_I02, QE_I15, QE_I18)
## F = 2648.5, num df = 18.00, denom df = 389.33, p-value < 2.2e-16
Indicou variações significativas
Teste de Levene
## Levene's Test for Homogeneity of Variance (center = median)
## Df F value Pr(>F)
## group 18 52.567 < 2.2e-16 ***
## 7914
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
As variâncias não são homogêneas, rejeitando a hipótese muito necessária para usar na ANOVA
4. Análise Inferencial
4.1 Binarização
Cria uma variável binária que indica se a nota está entre as 25% maiores notas
Encontra a menor nota necessária para estar nas 25% maiores notas
## 75%
## 54
Cria uma nova variável binária indicando se a Nota do Componente Específico foi menor que o encontrado, valorando 0 ou maior/igual valorando 1.
4.2 Modelo de Regressão Logística
reg_log_pub <- glm(atingiu ~ TP_SEXO + QE_I02 + QE_I15 + QE_I18,
data = dados_pub, family = binomial)
summary(reg_log_pub)##
## Call:
## glm(formula = atingiu ~ TP_SEXO + QE_I02 + QE_I15 + QE_I18, family = binomial,
## data = dados_pub)
##
## Coefficients:
## Estimate Std. Error z value Pr(>|z|)
## (Intercept) -8.4407 1.0001 -8.440 < 2e-16 ***
## TP_SEXOM 0.5483 0.1224 4.480 7.46e-06 ***
## QE_I02B 4.3299 1.0617 4.078 4.54e-05 ***
## QE_I02C 6.7527 1.0116 6.675 2.47e-11 ***
## QE_I02D 8.4799 1.0032 8.453 < 2e-16 ***
## QE_I15B 1.1138 0.2849 3.910 9.24e-05 ***
## QE_I15C 0.5922 0.2830 2.092 0.0364 *
## QE_I15D 15.4782 342.0817 0.045 0.9639
## QE_I15E 13.7510 918.2000 0.015 0.9881
## QE_I18B 1.1311 0.1929 5.864 4.51e-09 ***
## QE_I18C 2.9048 0.4181 6.948 3.71e-12 ***
## QE_I18D 4.2277 745.4034 0.006 0.9955
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## (Dispersion parameter for binomial family taken to be 1)
##
## Null deviance: 8925.9 on 7932 degrees of freedom
## Residual deviance: 2410.9 on 7921 degrees of freedom
## AIC: 2434.9
##
## Number of Fisher Scoring iterations: 17
4.3 Tabela dos Coeficientes do Modelo
tbl_regression(reg_log_pub,
label = list(TP_SEXO ~ "SEXO",
QE_I02 ~ "COR OU RAÇA",
QE_I15 ~ "AFIRMATIVAS",
QE_I18 ~ "MODALIDADE EM")
)| Characteristic | log(OR)1 | 95% CI1 | p-value |
|---|---|---|---|
| SEXO | |||
| F | — | — | |
| M | 0.55 | 0.31, 0.79 | <0.001 |
| COR OU RAÇA | |||
| A | — | — | |
| B | 4.3 | 2.6, 7.3 | <0.001 |
| C | 6.8 | 5.2, 9.6 | <0.001 |
| D | 8.5 | 7.0, 11 | <0.001 |
| AFIRMATIVAS | |||
| A | — | — | |
| B | 1.1 | 0.57, 1.7 | <0.001 |
| C | 0.59 | 0.04, 1.2 | 0.036 |
| D | 15 | 233, 186 | >0.9 |
| E | 14 | 642, 666 | >0.9 |
| MODALIDADE EM | |||
| A | — | — | |
| B | 1.1 | 0.76, 1.5 | <0.001 |
| C | 2.9 | 2.1, 3.7 | <0.001 |
| D | 4.2 | 0.51, 7.7 | >0.9 |
| 1 OR = Odds Ratio, CI = Confidence Interval | |||
tbl_regression(reg_log_pub, exponentiate = TRUE,
label = list(TP_SEXO ~ "SEXO",
QE_I02 ~ "COR OU RAÇA",
QE_I15 ~ "AFIRMATIVAS",
QE_I18 ~ "MODALIDADE EM")
)| Characteristic | OR1 | 95% CI1 | p-value |
|---|---|---|---|
| SEXO | |||
| F | — | — | |
| M | 1.73 | 1.36, 2.20 | <0.001 |
| COR OU RAÇA | |||
| A | — | — | |
| B | 75.9 | 13.9, 1,410 | <0.001 |
| C | 856 | 187, 15,183 | <0.001 |
| D | 4,817 | 1,083, 84,715 | <0.001 |
| AFIRMATIVAS | |||
| A | — | — | |
| B | 3.05 | 1.76, 5.41 | <0.001 |
| C | 1.81 | 1.05, 3.18 | 0.036 |
| D | 5,273,566 | 168,414,516,919,503,358,630,488,866,602,642,022,008,600,282,848,480,202,682,062,482,664,666,484,688,842,464,022,244,064,484,808,004,888, 396,292,211,345,452,538,208,484,866,860,864,648,000,802,886,244,426,668,620,464,026,062,088,604,848,600,622 | >0.9 |
| E | 937,556 | 757,955,472,074,415,115,362,484,222,460,020,864,464,042,002,840,020,224,424,886,406,446,406,880,064,608,080,642,284,262,666,402,224,684,428,280,444,444,064,622,800,444,426,680,624,060,824,404,688,820,488,666,280,222,624,066,426,260,240,684,080,606,886,448,604,462,264,466,646,468,486,260,008,684,860,826,446,008,086,220,068,406,022,282,622,068,642,668,688,200,640,444,044, 14,248,878,681,955,483,592,064,462,682,288,802,408,680,440,828,648,464,448,840,688,020,882,662,042,468,088,466,048,220,820,028,062,268,464,228,880,860,802,660,060,624,222,644,400,866,842,604,242,404,208,022,844,022,688,686,462,244,420,204,864,040,006,682,448,680,220,248,060,822,268,088,466,062,208,686,602,880,840,628,480,846,664,288,488,604,486,808,640,480,686,002,408,622,086,484,064 | >0.9 |
| MODALIDADE EM | |||
| A | — | — | |
| B | 3.10 | 2.13, 4.54 | <0.001 |
| C | 18.3 | 8.17, 42.2 | <0.001 |
| D | 68.6 | 1.66, 2,251 | >0.9 |
| 1 OR = Odds Ratio, CI = Confidence Interval | |||