Narzędzia analizy przeżycia w Pythonie [zamknięte]

46

Zastanawiam się, czy są jakieś pakiety dla Pythona, które są w stanie przeprowadzić analizę przeżycia. Korzystam z pakietu przetrwania w R, ale chciałbym przenieść moją pracę do Pythona.

MarkSAlen
źródło
11
Użyj Rpy, aby wywołać R z Pythona ;-)
2
Niezwykle wątpliwe jest, aby programiści Pythona w zakresie analizy przeżycia włożyli wysiłek gdziekolwiek blisko tego, co Terry Therneau i inni włożyli w pakiet przetrwania R w ciągu ostatnich 30 lat, w tym szeroko zakrojone testy. Pakiet przetrwania przechodzi najbardziej rygorystyczne procedury testowe, jakie widziałem w statystykach.
Frank Harrell,
2
Zgoda. survivalPakiet R. jest dokładnie badany przez dużą społeczność.
Marc Claesen
RPy (teraz 2) jest bardzo bolesne w instalacji.
Zhubarb

Odpowiedzi:

21

AFAIK, w Pythonie nie ma żadnych pakietów analizy przeżycia. Jak mbq komentuje powyżej, jedyną dostępną trasą byłaby Rpy .

Nawet jeśli byłby dostępny pakiet czystego pytona, byłbym bardzo ostrożny w korzystaniu z niego, w szczególności patrzyłbym na:

  • Jak często jest aktualizowany.
  • Czy ma dużą bazę użytkowników?
  • Czy ma zaawansowane techniki?

Jedną z zalet R jest to, że te standardowe pakiety otrzymują ogromną ilość testów i informacji zwrotnych od użytkowników. W przypadku rzeczywistych danych mogą się wkraść nieoczekiwane przypadki brzegowe.

csgillespie
źródło
6
W ciągu ostatnich 5 lat wiele rzeczy zmieniło się (na lepsze) dla Pythona. Zobacz odpowiedź od Cam.Davidson.Pilon na Lifelines .
Piotr Migdal
69

Sprawdź projekt lifelines ¹, aby uzyskać prostą i czystą implementację modeli przetrwania w Pythonie, w tym

  • Estymatory funkcji przeżycia
  • Estymatory skumulowanych krzywych zagrożenia
  • Model proporcjonalnej regresji hazardu Coxa
  • Model regresji zmiennej Coxa
  • parametryczne modele AFT
  • Model regresji addytywnej Aalen
  • Testy wielowymiarowe

Korzyści:

  • zbudowany na Pandach
  • czysty Python i łatwy w instalacji
  • wbudowane funkcje drukowania
  • prosty interfejs

Dokumentacja jest dostępna tutaj: dokumentacja i przykłady

Przykładowe użycie:

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()

Przykładowe wykresy z wbudowanej biblioteki wydruków:

wprowadź opis zdjęcia tutaj

  1. Oświadczenie: Jestem głównym autorem. Ping me (e-mail w profilu), aby uzyskać pytania lub opinie na temat linii życia .
Cam.Davidson.Pilon
źródło
14
(+1) Dość sprytna nazwa pakietu przetrwania.
Marc Claesen
8

python-asurv to próba przeniesienia oprogramowania asurv do metod przetrwania w astronomii. Być może warto mieć na oku, ale cgillespie ma rację, jeśli chodzi o rzeczy, na które należy uważać: ma przed sobą długą drogę, a rozwój nie wydaje się aktywny. (AFAICT istnieje tylko jedna metoda, a nawet ukończona, pakiet może brakować, powiedzmy, biostatystów).

Prawdopodobnie lepiej jest użyć pakietu przetrwania w języku R od Pythona poprzez RPy lub PypeR . Sam nie miałem żadnych problemów.

ars
źródło
7

PyIMSL zawiera garść procedur do analizy przeżycia. Jest bezpłatny jak w piwie do użytku niekomercyjnego, w pełni obsługiwany inaczej. Z dokumentacji w Podręczniku użytkownika statystyki ...

Oblicza szacunki Kaplana-Meiera dotyczące prawdopodobieństwa przeżycia: kaplanMeierEstimates ()

Analizuje dane dotyczące przeżycia i niezawodności za pomocą proporcjonalnego modelu zagrożeń Coxa: propHazardsGenLin ()

Analizuje dane dotyczące przeżycia za pomocą uogólnionego modelu liniowego: survivalGlm ()

Szacunki przy użyciu różnych trybów parametrycznych: survivalEstimates ()

Szacuje funkcję zagrożenia niezawodności przy użyciu podejścia nieparametrycznego: nonparamHazardRate ()

Tworzy tabele życia populacji i kohorty: lifeTables ()

Josh Hemann
źródło
4

Możesz teraz używać R z IPython , więc możesz rozważyć użycie IPython z rozszerzeniem R.

Carl Smith
źródło
2
Czy możesz podać przykład? Jestem ciekawy, aby to wypróbować!
user603
Myślę, że odwołujesz się do magicznego interfejsu R (który używa rpy2). Ja też chciałbym zobaczyć szybki przykład. (Rozumiem, że modele przetrwania nie są jeszcze w pełni dostępne w modelach ).
chl
Nie jestem zbyt pewny statsmodels, ale można dostać zeszyty z github z przykładów C, Octave i R rozszerzeń. Musisz oczywiście uruchomić Notatnik, aby z nich korzystać, ale jestem pewien, że możesz użyć tego samego kodu w dowolnym interfejsie.
Carl Smith
3
@ user603 Oto prosta wersja demonstracyjna: nbviewer.ipython.org/4383682 ; wierzę, że to opiera się na dość niedawnym iPython.
shabbychef
2

Chcę również wspomnieć o scikit-survival , który zapewnia modele do analizy przeżycia, które można łatwo łączyć z narzędziami scikit-learn (np. Walidacja krzyżowa KFold).

W tym piśmie scikit-survival obejmuje implementacje

  • Estymator Nelsona-Aalena skumulowanej funkcji hazardu.
  • Estymator Kaplana-Meiera funkcji przeżycia.
  • Model proporcjonalnego hazardu Coxa z elastyczną karą netto i bez niej.
  • Model przyspieszonego czasu awarii.
  • Maszyna wektorowa wsparcia przetrwania.
  • Model Coxa wzmocniony gradientem.
  • wskaźnik zgodności do oceny wydajności.
wrz
źródło
scikit-survival jest doskonały do ​​zadań związanych z przewidywaniem czasu na zdarzenie!
Cam.Davidson.Pilon
1

Oprócz użycia Rpoprzez RPylub równoważnego istnieje wiele procedur analizy przeżycia w bibliotece pytsmodels (wcześniej sicpy.statsmodel). Są one jednak w pakiecie „piaskownicy”, co oznacza, że ​​nie powinny być teraz gotowe do produkcji.

Np. Masz tutaj zakodowany model proporcjonalnego hazardu Coxa .

oDDsKooL
źródło