Застосування аналізу виживання до груп

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

Shae Wang

Senior Data Scientist

Завдання про іпотеку

Назва DataFrame: mortgage_df

id property type duration paid_off
1 house 25 0
2 apartment 17 1
3 apartment 5 0
... ... ... ...
100 house 30 1

Property type: тип житла, що фінансується іпотекою (house або apartment)

Чи відрізняється час до погашення для іпотек на будинки й квартири?
Аналіз виживаності в Python

Порівняння розподілів виживання між групами

Часто потрібно оцінити, чи відрізняється виживаність (або ймовірності події/виживання) між різними групами об'єктів.

  • Вимірні атрибути об'єктів
    • напр., різні типи іпотек, різні бренди шин
  • Різні експериментальні групи
    • напр., групи лікування проти контролю
  • Різні значення одного атрибута
    • напр., домогосподарства з високим проти низького доходу
Аналіз виживаності в Python

Види порівнянь груп за виживанням

1. Чи відрізняються точкові оцінки або статистики виживання?
  • Порівняйте ймовірності виживання двох груп у фіксований момент часу
  • Порівняйте загальну частку тих, хто «вижив», у двох групах
Аналіз виживаності в Python

Види порівнянь груп за виживанням

2. Чи різняться базові розподіли?
  • Потрібне формальне статистичне тестування
Аналіз виживаності в Python

Види порівнянь груп за виживанням

3. Наскільки атрибут впливає на виживання?
  • Потрібні регресійні моделі
Аналіз виживаності в Python

Візуалізація відмінностей між групами

Підігнати функцію виживання Каплана — Мейєра для кожної групи й показати криві поряд.

Переваги:

  • Просто використовувати й інтерпретувати.
  • Непараметричний підхід — гнучкіший для різних розподілів виживання.
  • Наочний інструмент для демонстрації відмінностей у функціях виживання.
Аналіз виживаності в Python

Ідентифікація груп

Назва DataFrame: mortgage_df

id property type duration paid_off
1 house 25 0
2 apartment 17 1
3 apartment 5 0
... ... ... ...
100 house 30 1

Створіть булеву маску для кожної групи.

house = (mortgage_df["property_type"]=="house")
apt = (mortgage_df["property_type"]=="apartment")

Якщо є лише 2 групи, достатньо 1 маски. Іншу групу можна задати запереченням.

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

Підгонка та побудова кривих виживання

Створіть одну фігуру та створіть екземпляр класу KaplanMeierFitter.

ax = plt.subplot(111)
mortgage_kmf = KaplanMeierFitter()

Підіженіть mortgage_kmf для групи будинків і побудуйте графік на фігурі ax.

mortgage_kmf.fit(duration=mortgage_df[house]["duration"], 
                 event_observed=mortgage_df[house]["paid_off"],
                 label="Houses")
mortgage_kmf.plot_survival_function(ax=ax)
Аналіз виживаності в Python

Підгонка та побудова кривих виживання

Підіженіть mortgage_kmf для групи квартир і побудуйте графік на фігурі ax.

mortgage_kmf.fit(duration=mortgage_df[apt]["duration"], 
                 event_observed=mortgage_df[apt]["paid_off"],
                 label="Apartments")
mortgage_kmf.plot_survival_function(ax=ax)
Аналіз виживаності в Python

Візуалізація поруч

plt.show()

Криві виживання Каплана — Мейєра: квартири vs будинки.

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

Інтерпретація кривих виживання груп

Криві виживання Каплана — Мейєра: квартири vs будинки

  • Іпотеки на квартири зазвичай погашаються швидше, ніж на будинки.
  • За будь-якої тривалості більша частка користувачів погашає іпотеки на квартири, ніж на будинки.

Примітка: якщо довірчі інтервали місцями перекриваються, імовірність реальної різниці між кривими менша.

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

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

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

Preparing Video For Download...