Інші розподіли та вибір моделі

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

Shae Wang

Senior Data Scientist

Яка модель найкраще відповідає даним?

4 криві виживання для тих самих даних у різних моделях

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

Вибір параметричних моделей

  • Непараметричне моделювання (тобто модель Каплана — Меєра)
    • Точно описує дані, бо не залежить від розподілу
    • Не є гладким/неперервним/диференційовним
  • Параметричне моделювання (тобто модель Вейбулла)
    • Зазвичай дає більше інформації
    • Якщо модель вибрано хибно, висновки будуть суттєво зміщені
Аналіз виживаності в Python

Поширені параметричні моделі виживання

  • Модель Вейбулла
    from lifelines import WeibullFitter
    
  • Експоненційна модель
    from lifelines import ExponentialFitter
    
  • Логнормальна модель
    from lifelines import LogNormalFitter
    
  • Лог-логістична модель
    from lifelines import LogLogisticFitter
    
  • Гамма-модель
    from lifelines import GeneralizedGammaFitter
    
Аналіз виживаності в Python

Критерій інформації Акаїке (AIC)

  • AIC: оцінювач помилки прогнозу та відносної якості статистичних моделей для заданих даних.
  • Оцінює, скільки інформації втрачає модель, і штрафує за велику кількість параметрів.
    • Чим менше інформації втрачає модель, тим вона якісніша.
    • Чим менше параметрів (менша складність), тим вища якість моделі.
  • Серед набору кандидатних моделей перевага за моделлю з мінімальним значенням AIC.
Аналіз виживаності в Python

Використання AIC для вибору моделі

Крок 1) Підберіть параметричні моделі в lifelines

Крок 2) Виведіть і порівняйте властивість AIC_ кожної моделі

Крок 3) Найменше значення AIC — перевага

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
Аналіз виживаності в Python

find_best_parametric_model()

  • find_best_parametric_model(): вбудована функція lifelines для автоматизації порівнянь AIC між параметричними моделями.
  • Перебирає всі доступні в lifelines параметричні моделі.

Як використати?

  • T: тривалості, E: цензура
    best_model, best_aic_ = find_best_parametric_model(event_times=T,
                                                       event_observed=E,
                                                       scoring_method="AIC")
    print(best_model)
    
<lifelines.WeibullFitter:"Weibull_estimate", 
fitted with 686 total observations, 387 right-censored observations>
Аналіз виживаності в Python

QQ-графік

  • QQ-графік: порівнює два розподіли ймовірностей, відкладаючи їхні квантілі один проти одного.
  • Якщо розподіли подібні, точки на QQ-графіку лежать приблизно на прямій y = x.

приклад QQ-графіка

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

Вибір моделі за допомогою QQ-графіків

Крок 1) Підберіть параметричні моделі в lifelines.

Крок 2) Побудуйте QQ-графік для кожної моделі.

Крок 3) Перевага за QQ-графіком, що найближчий до y = x.

from lifelines.plotting import qq_plot

for model in [WeibullFitter(), LogNormalFitter(), LogLogisticFitter(), ExponentialFitter()]: model.fit(T, E) qq_plot(model)
plt.show()
Аналіз виживаності в Python

Вибір моделі за допомогою QQ-графіків

QQ-графік для порівняння

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

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

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

Preparing Video For Download...