Outras distribuições e seleção de modelos

Análise de Sobrevivência em Python

Shae Wang

Senior Data Scientist

Qual modelo se ajusta melhor aos dados?

4 curvas de sobrevivência para os mesmos dados usando modelos diferentes

Análise de Sobrevivência em Python

Escolhendo modelos paramétricos

  • Modelagem não paramétrica (ex.: modelo de Kaplan-Meier)
    • Descreve bem os dados por não assumir distribuição
    • Não é suave/contínua/diferenciável
  • Modelagem paramétrica (ex.: modelo de Weibull)
    • Estatísticas paramétricas geralmente trazem mais informação
    • Com o modelo errado, levam a viés significativo nas conclusões
Análise de Sobrevivência em Python

Modelos paramétricos de sobrevivência comuns

  • O modelo Weibull
    from lifelines import WeibullFitter
    
  • O modelo Exponencial
    from lifelines import ExponentialFitter
    
  • O modelo Log-Normal
    from lifelines import LogNormalFitter
    
  • O modelo Log-Logístico
    from lifelines import LogLogisticFitter
    
  • O modelo Gama
    from lifelines import GeneralizedGammaFitter
    
Análise de Sobrevivência em Python

O Critério de Informação de Akaike (AIC)

  • AIC: Um estimador do erro de previsão e da qualidade relativa de modelos estatísticos para um conjunto de dados.
  • Estima quanto de informação um modelo perde e penaliza muitos parâmetros.
    • Quanto menos informação o modelo perde, maior a sua qualidade.
    • Quanto menos parâmetros (menos complexo) o modelo tem, maior a sua qualidade.
  • Dado um conjunto de modelos candidatos, o de menor AIC é o preferido.
Análise de Sobrevivência em Python

Usando o AIC para selecionar modelos

Passo 1) Ajuste modelos paramétricos no lifelines

Passo 2) Imprima e compare a propriedade AIC_ de cada modelo

Passo 3) O menor AIC é o preferido

from lifelines import WeibullFitter, 
                      ExponentialFitter, 
                      LogNormalFitter
wb = WeibullFitter().fit(D, E)
exp = ExponentialFitter().fit(D, E)
log = LogNormalFitter().fit(D, E)
print(wb.AIC_, exp.AIC_, log.AIC_)
215.9091   216.1183   202.3498
Análise de Sobrevivência em Python

find_best_parametric_model()

  • find_best_parametric_model(): função do lifelines que automatiza comparações de AIC entre modelos paramétricos.
  • Itera por cada modelo paramétrico disponível no lifelines.

Como usar?

  • T: durações, E: censura
    best_model, best_aic_ = find_best_parametric_model(event_times=T,
                                                       event_observed=E,
                                                       scoring_method="AIC")
    print(best_model)
    
<lifelines.WeibullFitter:"Weibull_estimate", 
ajustado com 686 observações no total, 387 observações censuradas à direita>
Análise de Sobrevivência em Python

O QQ plot

  • QQ plot: Compara duas distribuições de probabilidade traçando seus quantis uma contra a outra.
  • Se as distribuições forem semelhantes, os pontos do QQ plot ficarão aproximadamente na linha y = x.

exemplo de QQ plot

Análise de Sobrevivência em Python

Usando QQ plots para seleção de modelos

Passo 1) Ajuste modelos paramétricos no lifelines.

Passo 2) Plote o QQ plot de cada modelo.

Passo 3) Prefira o QQ plot mais próximo de y = x.

from lifelines.plotting import qq_plot

for model in [WeibullFitter(), LogNormalFitter(), LogLogisticFitter(), ExponentialFitter()]: model.fit(T, E) qq_plot(model)
plt.show()
Análise de Sobrevivência em Python

Usando QQ plots para seleção de modelos

qq plot para comparar

Análise de Sobrevivência em Python

Vamos praticar!

Análise de Sobrevivência em Python

Preparing Video For Download...