A coordenção dos Cursos de tecnologia engenharia da univiersidade notou um padrão preocupante na disciplina de EStatistica. Historicamente, a matéria apresneta altos indices de reprovação, o que gera atrasos na formação dos alunos e superlotação nas turmas seguintes.
Além disso, os professores relatam que a adesão aos horários de monitoria é baixa, e há uma suspeita de que a rotina de trabalho e estágio dos alunos esteja impactando o tempo de dedicação aos estudos. Para sair “achismo” e tomar decisões baseados em evidencias, a coordenação extraiu usa amostra de daods de 120 alunos matriculados recentemente na disciplina.
## 2. Desenvolvimento e Pipeline de Dados
O desenvolvimento seguiu um pipeline de cinco blocos lógicos, garantindo a integridade dos dados e a precisão das métricas calculadas, como a média amostral e as frequências por classe.
### 2.1 Processamento de Código em R
```R
dados <- read.csv("alunos_curso.csv", stringsAsFactors = FALSE)
# Verificando a estrutura inicial (tipos de dados incorretos e NAs presentes)
str(dados)
# ----------------------------------------------------------
# BLOCO 2 — MANIPULAÇÃO E TIPOS DE VARIÁVEIS
# ----------------------------------------------------------
# Ajuste 1: Transformar satisfacao_curso em fator ordenado
dados$satisfacao_curso <- factor(
dados$satisfacao_curso,
levels = 1:5,
labels = c("Muito Insatisfeito", "Insatisfeito", "Neutro", "Satisfeito", "Muito Satisfeito"),
ordered = TRUE
)
# Ajuste 2: Criar variáveis dummy para modelagem (0 = Não, 1 = Sim)
dados$trabalha_dummy <- ifelse(dados$trabalha == "Sim", 1, 0)
dados$monitoria_dummy <- ifelse(dados$usa_monitoria == "Sim", 1, 0)
# ----------------------------------------------------------
# BLOCO 3 — TRATAMENTO DE VALORES FALTANTES (NAs)
# ----------------------------------------------------------
# Mapeando o percentual de dados faltantes por coluna
round(colSums(is.na(dados)) / nrow(dados) * 100, 1)
# Isolando as notas válidas para os cálculos estatísticos
nota <- na.omit(dados$nota_final)
# ----------------------------------------------------------
# BLOCO 4 — REGRA DE STURGES E TABELA DE FREQUÊNCIA
# ----------------------------------------------------------
n <- length(nota)
# Cálculo dos parâmetros de Sturges
k <- round(1 + 3.322 * log10(n))
h <- ceiling(((max(nota) - min(nota)) / k) * 10) / 10
inicio <- floor(min(nota) * 10) / 10
# Definindo limites e classificando as notas
limites <- seq(inicio, inicio + k * h, by = h)
classes <- cut(nota, breaks = limites, right = FALSE, include.lowest = TRUE)
# Construção da Tabela de Frequência
freq_abs <- table(classes)
tabela_nota <- data.frame(
Classe = names(freq_abs),
Freq_Absoluta = as.numeric(freq_abs),
Freq_Relativa_pct = round(as.numeric(prop.table(freq_abs)) * 100, 2),
Freq_Acumulada_pct = round(cumsum(as.numeric(prop.table(freq_abs))) * 100, 2)
)
print(tabela_nota)
# ----------------------------------------------------------
# BLOCO 5 — GRÁFICOS ESTATÍSTICOS AVANÇADOS
# ----------------------------------------------------------
# 5.1 Diagrama de Ramo-e-Folhas (Visão micro da distribuição)
cat("\n--- Diagrama de Ramo-e-Folhas ---\n")
stem(nota, scale = 2)
# 5.2 Histograma com classes de Sturges (Visão macro)
hist(nota, breaks = limites, right = FALSE,
main = "Distribuição das Notas Finais (Sturges)",
xlab = "Nota Final", ylab = "Frequência",
col = "steelblue", border = "white")
abline(v = 6, col = "red", lty = 2, lwd = 2) # Linha de corte para aprovação
# 5.3 Ogiva (Polígono de Frequência Acumulada)
pontos_medios <- (limites[-length(limites)] + limites[-1]) / 2
freq_ac_pct <- cumsum(as.numeric(prop.table(freq_abs))) * 100
plot(c(inicio, pontos_medios), c(0, freq_ac_pct),
type = "b", pch = 16, col = "darkblue",
main = "Ogiva – Frequência Acumulada da Nota Final",
xlab = "Nota Final", ylab = "Frequência Acumulada (%)",
ylim = c(0, 100))
abline(h = 50, col = "gray50", lty = 2) # Referência dos 50% dos alunos
abline(v = 6, col = "red", lty = 2) # Referência da nota de corte
A partir da execução do pipeline, as seguintes conclusões foram estabelecidas para a gestão do projeto:
trabalha_dummy e monitoria_dummy são os
principais features para o desenvolvimento do software de
predição. Elas permitem correlacionar o comportamento do aluno com a sua
posição na Ogiva de Frequência Acumulada, identificando
o percentual de alunos em risco de evasão.