Ваша первая кривая выживаемости!

Анализ выживаемости в Python

Shae Wang

Senior Data Scientist

Функция выживаемости

  • $T$: момент наступления интересующего события
  • $t$: любой момент времени в процессе наблюдения

$$\Large{S(t) = Pr(T>t)}$$

  • $S(t)$: вероятность того, что интересующее событие наступит после $t$
  • $Pr(T>t)$: вероятность выживания
Анализ выживаемости в Python

Кривая выживаемости

$$\Large{S(t) = Pr(T>t)}$$

Пример кривой выживаемости.

Анализ выживаемости в Python

Кривая выживаемости

$$\Large{S(t) = Pr(T>t)}$$

Пример кривой выживаемости.

Анализ выживаемости в Python

Кривая выживаемости

$$\Large{S(t) = Pr(T>t)}$$

Пример кривой выживаемости.

Легенда кривой выживаемости.

Анализ выживаемости в Python

Интерпретация кривой выживаемости

  • Точка$(a,b)$: вероятность того, что наблюдаемый объект «переживёт» момент $a$, равна $b$

Пример кривой выживаемости.

Анализ выживаемости в Python

Интерпретация кривой выживаемости

  • Точка$(a,b)$: вероятность того, что наблюдаемый объект «переживёт» момент $a$, равна $b$
  • Более пологая кривая: событие наступает реже
  • Более крутая кривая: событие наступает чаще

Пример кривой выживаемости с отмеченной точкой.

Анализ выживаемости в Python

Непараметрические и параметрические модели

Непараметрическое моделирование
  • Не делает предположений о форме распределения данных
Параметрическое моделирование
  • Предполагает определённую форму распределения данных
  • Описывается ограниченным набором параметров
    • Например, кривая выживаемости может подчиняться экспоненциальному распределению
Анализ выживаемости в Python

Непараметрические и параметрические модели

Непараметрическое моделирование
  • Кривая выживаемости обычно НЕ является гладкой

Пример непараметрической кривой выживаемости.

Параметрическое моделирование
  • Кривая выживаемости обычно гладкая

Пример параметрической кривой выживаемости.

  • Требует, чтобы параметрическая модель действительно хорошо описывала данные
Анализ выживаемости в Python

Построение кривой выживаемости

Пакет lifelines — полноценная библиотека для анализа выживаемости.

  • Подгонка функций выживаемости к данным
  • Построение кривых выживаемости на основе подобранных функций
import lifelines
import matplotlib.pyplot as plt

.fit(durations, event_observed)

.plot_survival_function()

Анализ выживаемости в Python

Пример кривой выживаемости

Название DataFrame: mortgage_df

id duration paid_off
1 25 0
2 17 1
3 5 0
... ... ...
100 30 1
  • id: идентификатор ипотечного кредита
  • duration: количество лет, в течение которых ипотека не погашена
  • paid_off: 1 — если ипотека полностью погашена, 0 — если нет
Анализ выживаемости в Python

Пример кривой выживаемости

import lifelines
from matplotlib import pyplot as plt
kmf = lifelines.KaplanMeierFitter()
kmf.fit(duration=mortgage_df["duration"], 
        event_observed=mortgage_df["paid_off"])
kmf.plot_survival_function()
plt.show()

пример кривой выживаемости Каплана–Мейера

Анализ выживаемости в Python

Давайте потренируемся!

Анализ выживаемости в Python

Preparing Video For Download...