Навіщо використовувати survival analysis?

Аналіз виживаності в Python

Shae Wang

Senior Data Scientist

Приклад середнього строку служби акумулятора

Назва DataFrame: battery_df

Battery ID Duration Dead Brand Truck
1 2.5 yrs No Brand A Long
2 6 yrs Yes Brand B Short
3 5 yrs No Brand B Long
... ... ... ... ...
1000 4.5 yrs Yes Brand A Short

Який середній строк служби акумулятора?

np.average(battery_df["Duration"])
Аналіз виживаності в Python

Приклад середнього строку служби акумулятора

Карикатура про цензурування строку служби акумулятора.

Аналіз виживаності в Python

Цензурування у строку служби акумулятора

Карикатура про цензурування строку служби акумулятора.

  • Для акумуляторів, що ще не вийшли з ладу, $T_{duration} \neq T_{lifetime}$.
  • Акумулятори 1, 3, 4 та інші, чиї відмови не спостерігалися, некоректно враховано під час обчислення середнього.
Аналіз виживаності в Python

Проблема цензурування

Коли час виживання відомий лише частково.

Як виникає цензурування?

  • Подія ще не сталася на момент завершення спостереження.
    • напр., користувач пробної версії не конвертувався у платного до кінця експерименту.
  • Дані особи відсутні через вибуття або втрату зв'язку.
    • напр., користувач пробної версії відмовився ділитися даними для експерименту.
Аналіз виживаності в Python

Типи цензурування

Карикатура про типи цензурування.

  • Не цензуровано: подія сталася, тривалість виживання відома.
  • Праве цензурування: тривалість виживання більша за спостережену.
  • Ліве цензурування: тривалість виживання менша за спостережену.
  • Інтервальне цензурування: тривалість у певному діапазоні, але точно невідома.
Аналіз виживаності в Python

Чому цензурування шкідливе?

Агреговані статистики

  • Різновид пропущених даних.
  • Викривляють статистики, напр., np.average(), max(), min().

Регресія

  • Лінійна регресія мінімізує суму квадратів похибок.
  • Для цензурованих даних ми не знаємо членів похибки.
Аналіз виживаності в Python

Функція виживання

  • Не імпутує цензуровані дані.
  • Моделює ймовірність, що тривалість виживання більша за певне значення.

$$S(t)=Pr(T>t)$$

Аналіз виживаності в Python

Survival analysis проти цензурування

Карикатура про нецензуровані дані.

Карикатура про цензуровані дані.

Аналіз виживаності в Python

Перевірка даних на цензурування

Чи можна визначити, які точки даних цензуровані?

Крок 1) Перевірте стовпці цензурування (часто вже підготовлені).

Чи не надто багато даних цензуровано?

Крок 2) Перевірте частку цензурованих точок (орієнтир — 50%).

Чи цензурування неінформативне й випадкове?

Крок 3) Дослідіть причини цензурування, щоб упевнитися, що сам факт цензурування не впливає на виживання.

Аналіз виживаності в Python

Давайте потренуємось!

Аналіз виживаності в Python

Preparing Video For Download...