Применение анализа выживаемости к группам

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

Shae Wang

Senior Data Scientist

Задача об ипотеке

Название DataFrame: mortgage_df

id тип недвижимости длительность paid_off
1 house 25 0
2 apartment 17 1
3 apartment 5 0
... ... ... ...
100 house 30 1

Тип недвижимости: вид жилья, приобретённого в ипотеку (дом или квартира)

Различается ли время погашения для ипотеки на дома и квартиры?
Анализ выживаемости в Python

Сравнение функций выживаемости групп

Нередко нас интересует, различаются ли функции выживаемости (или вероятности событий) между разными группами наблюдений.

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

Виды сравнений групп по выживаемости

1. Различаются ли точечные оценки или показатели выживаемости?
  • Сравнение вероятностей выживаемости двух групп в конкретный момент времени
  • Сравнение общей доли выживших объектов между двумя группами
Анализ выживаемости в Python

Виды сравнений групп по выживаемости

2. Различаются ли лежащие в основе распределения?
  • Требуется формальная проверка гипотез
Анализ выживаемости в Python

Виды сравнений групп по выживаемости

3. Насколько сильно атрибут влияет на выживаемость?
  • Требуются регрессионные модели
Анализ выживаемости в Python

Визуализация различий между группами

Подгоняем функцию выживаемости Каплана–Майера для каждой группы и отображаем кривые рядом.

Преимущества:

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

Определение групп

Название DataFrame: mortgage_df

id тип недвижимости длительность 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")

Если групп всего две, достаточно одной маски. На вторую группу можно ссылаться через отрицание.

Анализ выживаемости в 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()

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

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

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

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

  • В среднем ипотека на квартиры погашается быстрее, чем на дома.
  • При любой длительности бо́льшая доля пользователей погашает ипотеку на квартиры, чем на дома.

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

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

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

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

Preparing Video For Download...