Ajustando um estimador de Kaplan-Meier

Análise de Sobrevivência em Python

Shae Wang

Senior Data Scientist

O que é o estimador de Kaplan-Meier?

Uma estatística não paramétrica que estima a função de sobrevivência de dados de tempo até o evento.

  • Também conhecido como
    • estimador de limite de produto
    • estimador K-M
  • Não paramétrico: constrói uma curva de sobrevivência a partir dos dados coletados e não assume distribuição subjacente
Análise de Sobrevivência em Python

A intuição matemática

Definições:

  • $t_i$: um tempo de duração
  • $d_i$: número de eventos que ocorreram no tempo $t_i$
  • $n_i$: número de indivíduos conhecidos por terem sobrevivido até o tempo $t_i$

 

A função de sobrevivência $S(t)$ é estimada com: $$S(t)=\prod_{i:t_i\leq t}\bigg(1-\frac{d_i}{n_i}\bigg)$$

Análise de Sobrevivência em Python

Por que é chamado de estimador de limite de produto?

Suponha que temos eventos em 3 tempos: 1, 2, 3

Taxa de sobrevivência para $t=2$: $$S(t=2)=\bigg(1-\frac{d_1}{n_1}\bigg)*\bigg(1-\frac{d_2}{n_2}\bigg)$$

Taxa de sobrevivência para $t=3$: $$S(t=3)=S(t=2)*\bigg(1-\frac{d_3}{n_3}\bigg)$$

A taxa de sobrevivência no tempo t é o produto da chance de sobreviver em t e em cada tempo anterior.

Análise de Sobrevivência em Python

Pressupostos para ter em mente

  • Eventos inequívocos: o evento de interesse ocorre em um tempo claramente definido.
  • Probabilidades de sobrevivência comparáveis em todos os participantes: as probabilidades não dependem de quando entraram no estudo.
  • Censura não informativa: observações censuradas têm as mesmas perspectivas de sobrevivência que as que continuam sendo acompanhadas.
Análise de Sobrevivência em Python

Estimador Kaplan-Meier com lifelines

from lifelines import KaplanMeierFitter

KaplanMeierFitter: uma classe da biblioteca lifelines

kmf = KaplanMeierFitter()
kmf.fit(durations, event_observed)
Análise de Sobrevivência em Python

O exemplo do problema de hipoteca

Nome do DataFrame: mortgage_df

id duration paid_off
1 25 0
2 17 1
3 5 0
... ... ...
100 30 1
Análise de Sobrevivência em Python

O exemplo do problema de hipoteca

Nome do DataFrame: mortgage_df

id duration paid_off
1 25 0
2 17 1
3 5 0
... ... ...
100 30 1
from lifelines import KaplanMeierFitter
mortgage_kmf = KaplanMeierFitter()
mortgage_kmf.fit(duration=mortgage_df["duration"], 
        event_observed=mortgage_df["paid_off"])
<lifelines.KaplanMeierFitter:"KM_estimate", 
fitted with 100 total observations, 
18 right-censored observations>
Análise de Sobrevivência em Python

Usando o estimador de Kaplan-Meier

Qual é a mediana do tempo de uma hipoteca em aberto?

print(mortgage_kmf.median_survival_time_)
4.0

Qual é a probabilidade de uma hipoteca continuar em aberto a cada ano após o início?

print(mortgage_kmf.survival_function_)
          KM_estimate
timeline             
0.0          1.000000
1.0          0.983267
2.0          0.950933
3.0          0.892328
Análise de Sobrevivência em Python

Usando o estimador de Kaplan-Meier

Qual é a probabilidade de uma hipoteca não estar quitada no ano 34 após o início?

mortgage_kmf.predict(34)
0.037998
Análise de Sobrevivência em Python

Benefícios e limitações

Benefícios
  • Interpretação intuitiva das probabilidades de sobrevivência.
  • Flexível para qualquer dado de tempo até o evento.
  • Geralmente é o primeiro modelo aplicado a dados de tempo até o evento.
Limitações
  • A curva de sobrevivência não é suave.
  • Se 50% ou mais dos dados forem censurados, .median_survival_time_ não pode ser calculado.
  • Não é eficaz para analisar o efeito de covariáveis na função de sobrevivência.
Análise de Sobrevivência em Python

Vamos praticar!

Análise de Sobrevivência em Python

Preparing Video For Download...