| English | Português |
Cerca de 1 em cada 6 ensaios clínicos é interrompido antes do fim previsto. Houve doentes expostos a tratamentos experimentais, gastou-se dinheiro, e a pergunta científica fica muitas vezes sem resposta. Este projeto analisa 46 911 ensaios de fase 2 e 3 do ClinicalTrials.gov para perceber porque param, quais param mais e se é possível prever a interrupção logo no registo.
Os notebooks e o código estão em inglês, para chegar a um público mais alargado.
Dados: API v2 do ClinicalTrials.gov: ensaios de intervenção de fase 2/3 iniciados entre 2008 e 2019, já concluídos ou interrompidos.
Resumo em linguagem simples: abre o dashboard online (código), uma página de síntese para quem não é técnico, em inglês e português.
Outros projetos: Previsão de toxicidade Tox21 · Dados da educação em Portugal · Alunos em risco em cursos online
A maioria dos ensaios não para porque o medicamento falhou. As razões mais comuns são o recrutamento lento (35% das interrupções), decisões de negócio ou estratégicas (11%) e falta de financiamento (6%). A falta de eficácia (9%) e a segurança (5%) são menos frequentes.

A interrupção só é moderadamente previsível no registo. Um modelo de gradient boosting testado em ensaios iniciados em 2016–2019 chega a um ROC-AUC de 0,69, ou 0,70 combinado com um modelo de texto. Ainda assim, o décimo de ensaios com maior risco foi interrompido 8 vezes mais do que o décimo com menor risco (39% contra 5%).

src/download_data.py descarrega os ensaios da API do ClinicalTrials.gov (~47 000 registos)
src/build_dataset.py uma linha por ensaio: desenho, áreas da doença, texto e razões de interrupção agrupadas por regras de palavras-chave
src/style.py estilo comum dos gráficos
notebooks/01_why_trials_stop.ipynb razões, e interrupção por fase, promotor, desenho, área da doença e ano
notebooks/02_predict_termination.ipynb fuga de informação, comparação de modelos, importância das variáveis, modelo de texto, grupos de risco
figures/ gráficos exportados
trials-at-a-glance.html dashboard em linguagem simples
pip install -r requirements.txt
python src/download_data.py # alguns minutos, ~185 MB
python src/build_dataset.py
jupyter notebook notebooks/