Um estudo de dados end-to-end sobre ~6,2 mil candidaturas a um MBA de elite — da limpeza à modelagem preditiva — usando testes de hipótese, regressão logística (com odds ratios) e clusterização para entender o que realmente pesa no processo seletivo. Com tratamento honesto de classes desbalanceadas.
Gustavo Caldeira — Analista de Dados
Programas de MBA de elite recebem milhares de candidaturas para poucas vagas. Para o comitê de admissões, candidatos e consultorias educacionais, entender o que diferencia quem é aprovado tem valor direto: orienta estratégia de candidatura, políticas de diversidade e calibragem do processo seletivo.
A base reúne 6.194 candidaturas com notas acadêmicas (GPA, GMAT), experiência profissional, área de formação, indústria de origem e dados demográficos. Buscamos responder:
- 📝 Notas são tudo? Qual pesa mais: GPA ou GMAT?
- 💼 A experiência profissional faz diferença?
- ⚖️ Há diferença por gênero ou nacionalidade na taxa de aprovação?
- 🤖 É possível prever a admissão e quantificar o efeito de cada fator?
Decisão de dados crítica: na base original, a coluna de admissão vinha vazia para a maioria — mas isso não é dado faltante: representa candidatos negados (Deny). Interpretar corretamente esse valor (5.194 negados, 900 admitidos, 100 lista de espera) é o que torna toda a análise válida. Taxa de admissão real: 14,5%.
| # | Etapa | Técnicas | Por que foi escolhida |
|---|---|---|---|
| 1 | Limpeza & Preparação | Decodificação do alvo (Deny/Admit/Waitlist), tratamento de race estrutural, feature engineering |
A etnia é nula exatamente para internacionais (só se coleta de domésticos) — marcamos como categoria, não imputamos. Criamos um score_academico (GPA+GMAT padronizados). |
| 2 | Estatística Descritiva | Média, mediana, desvio, CV, assimetria, curtose, normalidade | Caracteriza GPA, GMAT e experiência. |
| 3 | EDA Avançada | Outliers (IQR/Z-score), correlação, taxa de admissão por categoria | Núcleo da leitura bivariada: quais grupos são mais aprovados. |
| 4 | Estatística Inferencial | Teste t de Welch, ANOVA, Qui-quadrado, intervalos de confiança | Valida se as diferenças observadas são reais ou acaso. |
| 5 | Modelagem | Regressão Logística (statsmodels → odds ratios; sklearn → ROC-AUC, balanceada), K-Means | Explica e prevê a admissão; segmenta perfis de candidato. |
Por que não medir o modelo por acurácia? Com apenas 14,5% de admitidos, prever "negado" para todos daria ~85% de acurácia — e seria inútil. Por isso usamos
class_weight='balanced'e avaliamos por ROC-AUC e recall.
Resultados obtidos na execução completa do pipeline (
python main.py).
Admitidos têm GMAT médio de 693 contra 644 dos demais (teste t de Welch: t = 32,5; p ≈ 10⁻¹⁷²). O GPA também difere (3,36 vs 3,23; p ≈ 10⁻¹²¹), mas o efeito do GMAT é maior. Na regressão logística (variáveis padronizadas):
| Fator | Odds Ratio | p-valor | Leitura |
|---|---|---|---|
| GMAT (+1 desvio) | 2,39× | < 0,001 | mais que dobra a chance de admissão |
| GPA (+1 desvio) | 1,57× | < 0,001 | forte, porém menor que o GMAT |
| Ser homem | 0,42× | < 0,001 | reduz a chance pela metade (vs mulher) |
| Experiência, nacionalidade, área | ~1,0 | n.s. | sem efeito significativo |
As mulheres são admitidas a 20,0%, contra 11,4% dos homens — uma diferença estatisticamente significativa (qui-quadrado: χ² = 84,2; p ≈ 10⁻²⁰). Curioso: o número absoluto de admitidos é idêntico (450 cada), embora os homens sejam 64% dos candidatos. A regressão logística confirma o efeito mesmo controlando GPA e GMAT.
A experiência profissional não diferencia admitidos de não admitidos (5,05 vs 5,01 anos; teste t p = 0,34) e é irrelevante no modelo (OR ≈ 1,0). A quantidade de anos não move o processo — provavelmente importa a qualidade, não capturada nesta base.
- ANOVA: o GMAT médio não difere entre áreas (Humanities/STEM/Business; p = 0,60).
- Qui-quadrado: nem a área (p = 0,76) nem a nacionalidade (p = 0,44) se associam à admissão.
➡️ O processo é, nessas dimensões, meritocrático em notas e neutro quanto a formação/origem.
A Regressão Logística balanceada atinge ROC-AUC = 0,82 e recall de 0,78 para a classe minoritária (captura 78% dos futuros admitidos). A acurácia (0,74) fica abaixo da linha de base ingênua — um trade-off consciente: priorizamos identificar os admitidos em vez de inflar a acurácia ignorando-os.
| Cluster | Perfil | GPA | GMAT | Taxa de admissão |
|---|---|---|---|---|
| 3 | 🏆 Alto desempenho | 3,42 | 714 | 35,6% |
| 1 / 2 | 📊 Mediano | ~3,26 | ~649 | ~11% |
| 0 | 📉 Baixo desempenho | 3,08 | 599 | 2,6% |
A chance de admissão salta de 2,6% (cluster mais fraco) para 35,6% (cluster mais forte) — a nota é destino.
MBA/
├── data/
│ ├── raw/MBA.csv # fonte
│ └── processed/ # base limpa (gerada pelo pipeline)
├── src/
│ ├── config.py # caminhos e parâmetros centralizados
│ ├── data_loader.py # 1. carregamento
│ ├── preprocessing.py # 2. limpeza + decodificação do alvo
│ ├── descriptive_stats.py # 3. descritiva (assimetria, curtose, normalidade)
│ ├── eda_advanced.py # 4. outliers + correlação + taxa de admissão
│ ├── inferential_stats.py # 5. teste t, ANOVA, qui-quadrado, IC
│ ├── modeling.py # 6. regressão logística + K-Means
│ └── visualization.py # funções de plotagem
├── notebooks/
│ ├── notebook_de_analise.ipynb # narrativa importando src/
│ └── notebook_eda_original.ipynb # EDA original (versão anterior do projeto)
├── reports/figures/ # gráficos exportados
├── main.py # orquestra o pipeline completo
├── requirements.txt
├── .gitignore
└── README.md
- Modularidade, tipagem e
dataclassespara resultados estruturados. - Configuração central em
config.py(sem números mágicos). - Reprodutibilidade:
random_statefixo e dependências travadas.
git clone https://github.com/gustavocaldeirasantos/MBA.git
cd MBAWindows (PowerShell):
py -m venv .venv
.\.venv\Scripts\Activate.ps1Linux / macOS:
python3 -m venv .venv && source .venv/bin/activatepip install -r requirements.txtpython main.pyExecuta todas as etapas, salva a base limpa em data/processed/ e os gráficos em reports/figures/.
python -m src.inferential_stats
python -m src.modelingAbra notebooks/notebook_de_analise.ipynb no VS Code/Jupyter e selecione o kernel do .venv.
Python · Pandas · NumPy · SciPy · statsmodels · scikit-learn · Seaborn · Matplotlib
Distribuído sob a licença MIT.
📊 Projeto de portfólio — análise de dados com fundamentação estatística. Dataset público de candidaturas a MBA. As conclusões refletem os padrões desta amostra específica.

