Инструменты анализа выживания в Python [закрыто]

46

Мне интересно, есть ли какие-нибудь пакеты для Python, которые способны выполнять анализ выживания. Я использовал пакет для выживания в R, но хотел бы перенести свою работу на python.

MarkSAlen
источник
11
Используйте Rpy для вызова R из Python ;-)
2
Крайне сомнительно, что разработчики Python для анализа выживания приложили усилия к тому, что Терри Терно и другие вложили в пакет выживания R за последние 30 лет, включая всестороннее тестирование. Пакет выживания проходит самые строгие процедуры тестирования, которые я видел в статистике.
Фрэнк Харрелл
2
Согласовано. survivalПакет R находится под пристальным вниманием большого сообщества.
Марк Класен
RPy (сейчас 2) очень больно устанавливать по моему опыту.
Жубарб

Ответы:

21

AFAIK, в python нет пакетов для анализа выживания. Как указано выше в комментариях mbq, единственным доступным маршрутом будет Rpy .

Даже если бы был доступен чистый пакет python, я бы очень осторожно использовал его, в частности, я бы посмотрел на:

  • Как часто это обновляется.
  • У него большая база пользователей?
  • Есть ли передовые методы?

Одним из преимуществ R является то, что эти стандартные пакеты проходят огромное количество тестирований и отзывов пользователей. При работе с реальными данными могут появляться неожиданные крайние случаи.

csgillespie
источник
6
За последние 5 лет многое изменилось (в лучшую сторону) для Python. Vide ответ на Cam.Davidson.Pilon на Lifelines .
Петр Мигдаль
69

Ознакомьтесь с проектом « Источники жизни » для простой и понятной реализации моделей выживания в Python, включая:

  • Оценщики функций выживания
  • Оценщики кривых совокупной опасности
  • Модель пропорциональной регрессии Кокса
  • Изменяющаяся во времени модель регрессии Кокса
  • параметрические модели AFT
  • Аддитивная модель регрессии Аалена
  • Многовариантное тестирование

Выгоды:

  • построен на вершине панд
  • чистый Python и прост в установке
  • встроенные функции построения графиков
  • простой интерфейс

Документация доступна здесь: документация и примеры

Пример использования:

from lifelines import KaplanMeierFitter

survival_times = np.array([0., 3., 4.5, 10., 1.])
events = np.array([False, True, True, False, True])

kmf = KaplanMeierFitter()
kmf.fit(survival_times, event_observed=events)

print(kmf.survival_function_)
print(kmf.median_)
kmf.plot()

Примеры графиков из встроенной библиотеки графиков:

введите описание изображения здесь

  1. Отказ от ответственности: я главный автор. Пинг мне (адрес электронной почты в профиле) для вопросов или отзывов о спасательных кругов .
Cam.Davidson.Pilon
источник
14
(+1) Довольно умное имя для пакета выживания.
Марк Класен
8

python-asurv - это попытка портировать программное обеспечение asurv для методов выживания в астрономии. Возможно, стоит присмотреть, но cgillespie прав насчет вещей, на которые стоит обратить внимание: ему предстоит пройти долгий путь, и развитие не кажется активным. (AFAICT только один метод существует и даже завершен, пакет может отсутствовать, скажем, для биостатистов.)

Вы , вероятно , лучше использовать для выживания пакета в R от Python через что - то вроде RPY или Пайпер . У меня не было проблем с этим.

АРС
источник
7

PyIMSL содержит несколько процедур для анализа выживания. Это бесплатно как в пиве для некоммерческого использования, полностью поддерживается в противном случае. Из документации в Руководстве пользователя по статистике ...

Вычисляет оценки вероятности выживания Каплана-Мейера: kaplanMeierEstimates ()

Анализирует данные о выживаемости и надежности с использованием модели пропорциональных рисков Кокса: propHazardsGenLin ()

Анализирует данные о выживаемости с использованием обобщенной линейной модели: SurvivialGlm ()

Оценки с использованием различных параметрических режимов: SurveEstimates ()

Оценивает функцию риска надежности, используя непараметрический подход: nonparamHazardRate ()

Создает таблицы жизни населения и когорты: lifeTables ()

Джош Хеманн
источник
4

Теперь вы можете использовать R изнутри IPython , поэтому вы можете захотеть изучить использование IPython с расширением R.

Карл Смит
источник
2
Можете ли вы привести пример этого? Мне любопытно попробовать!
user603
Я полагаю, вы ссылаетесь на магический интерфейс R (который использует rpy2). Я тоже хотел бы увидеть быстрый пример. ( Насколько я понимаю, модели выживания еще не полностью доступны в statsmodels .)
chl
Я не очень уверен насчет statsmodels, но вы можете получить блокноты из github с примерами расширений C, Octave и R. Вам нужно запустить Notebook, чтобы использовать их, но я уверен, что вы можете использовать один и тот же код в любом интерфейсе.
Карл Смит
3
@ user603 Вот простая демонстрация: nbviewer.ipython.org/4383682 ; Я полагаю, что это зависит от сравнительно недавнего iPython.
Шаббычеф
2

Я также хочу упомянуть о scikit-Survival , который предоставляет модели для анализа выживания, которые можно легко комбинировать с инструментами из scikit-learn (например, перекрестная проверка KFold).

На момент написания статьи, Scikit-Survival включает в себя реализации

  • Оценка Нельсона-Аалена функции кумулятивного риска.
  • Каплан-Мейер оценка функции выживания.
  • Модель пропорциональной опасности Кокса с упругим штрафом и без него.
  • Модель времени ускоренного отказа.
  • Машина выживания для опорных векторов.
  • Градиентная модель Кокса.
  • индекс соответствия для оценки эффективности.
sebp
источник
Scikit-Survival отлично подходит для задач, связанных с прогнозированием событий!
Cam.Davidson.Pilon
1

Помимо использования Rсквозного RPyили эквивалентного, в библиотеке python statsmodels (ранее sicpy.statsmodel) есть ряд процедур анализа выживания . Они находятся в пакете «песочница», а это означает, что они не должны быть готовы к производству прямо сейчас.

Например, у вас есть модель пропорционального риска Кокса здесь .

oDDsKooL
источник