Ajustando o modelo de Riscos Proporcionais de Cox

Análise de Sobrevivência em Python

Shae Wang

Senior Data Scientist

Função de risco e taxa de risco

Função de risco $h(t)$: descreve a probabilidade de o evento ocorrer em um tempo, dado que houve sobrevivência até ali.

Taxa de risco: a taxa instantânea de ocorrência do evento

$$h(t)=-\frac{d}{dt}logS(t)$$

A função de risco $h(t)$ e a função de sobrevivência $S(t)$ podem ser obtidas uma da outra.

Análise de Sobrevivência em Python

A suposição de riscos proporcionais

Suposição de riscos proporcionais: os riscos de todos os indivíduos são proporcionais entre si.

No caso dos indivíduos $A$ e $B$: $$h_A(t)=ch_B(t)$$

  1. Há uma função de risco de base e os demais riscos são definidos por fatores de escala.
  2. O impacto relativo na sobrevivência associado a uma variável não muda com o tempo (é invariante no tempo).

Comparação da suposição de riscos proporcionais entre duas curvas de sobrevivência

Análise de Sobrevivência em Python

O modelo de Riscos Proporcionais de Cox

Com base na suposição de riscos proporcionais: $$h(t|x)=b_0(t)exp\bigg(\sum^{n}_{i=1}b_i(x_i-\overline{x_i}\bigg)$$

$b_0(t)$: função de risco de base no nível da população, que muda com o tempo.

$exp\bigg(\sum^{n}_{i=1}b_i(x_i-\overline{x_i}\bigg)$: relação linear entre covariáveis e o log do risco, que NÃO muda com o tempo.

  • O modelo de Riscos Proporcionais de Cox (Cox PH) é um modelo de regressão que relaciona covariáveis ao tempo até o evento/duração.
Análise de Sobrevivência em Python

Requisitos de dados para o modelo Cox PH

  • Durações: o tempo de vida/duração dos indivíduos.
  • Eventos: se o evento foi observado (1=Sim, 0=Não, censurado).
    • Se não fornecido, o modelo assume que não há sujeitos censurados.
  • Covariáveis: variáveis contínuas ou categóricas codificadas em one-hot para a regressão.
Análise de Sobrevivência em Python

Ajustando o modelo Cox PH

  1. Importe e instancie a classe CoxPHFitter
    from lifelines import CoxPHFitter
    coxph = CoxPHFitter()
    
  2. Chame .fit() para ajustar o estimador aos dados
    coxph.fit(df, duration_col, event_col)
    
  3. Acesse outras propriedades para ver o sumário do modelo, covariáveis, coeficientes, prever, plotar etc.
    coxph.summary()
    coxph.predict()
    
Análise de Sobrevivência em Python

Exemplo de modelo Cox PH

  • DataFrame: mortgage_df
  • Covariáveis:
    • house
    • principal
    • interest
    • property_tax
    • credit_score
  • Outras colunas: duration, paid_off
from lifelines import CoxPHFitter

coxph = CoxPHFitter() coxph.fit(df=mortgage_df, duration_col="duration", event_col="paid_off")
Análise de Sobrevivência em Python

Modelo personalizado

Filtrar o DataFrame:

new_df = mortgage_df.loc[:, 
          mortgage_df.columns!="house"]
coxph.fit(df=new_df,
          duration_col="duration",
          event_col="paid_off")

Usar o parâmetro formula:

coxph.fit(df=mortgage_df,
          duration_col="duration",
          event_col="paid_off",
          formula="principal + interest 
          + property_tax + credit_score")
  • Mais prático e claro, mas não escala para muitas covariáveis.
Análise de Sobrevivência em Python

Interpretar coeficientes

print(coxph.summary)
<lifelines.CoxPHFitter: fitted with 1808 observations, 340 censored>
                        coef  exp(coef)  se(coef)      z       p
covariate house        -0.38       0.68      0.19. -1.98    0.05
          principal    -0.06       0.94      0.02  -2.61    0.01
          interest      0.31       1.37      0.31   1.02    0.31
          property_tax -0.15       0.86      0.21  -0.71    0.48
          credit_score -0.43       0.65      0.38  -1.14.   0.26
  • Razão de risco (hazard ratio): $e^{coef}$
    • Um aumento de uma unidade em interest a partir do seu valor mediano -> o risco muda por um fator de $e^{0.31}=1.37$, ou seja, aumento de 37% em relação ao risco de base.
Análise de Sobrevivência em Python

Vamos praticar!

Análise de Sobrevivência em Python

Preparing Video For Download...