Alat Analisis Kelangsungan Hidup dalam Python [ditutup]

46

Saya bertanya-tanya apakah ada paket untuk python yang mampu melakukan analisis survival. Saya telah menggunakan paket survival dalam R tetapi ingin memport pekerjaan saya ke python.

MarkSAlen
sumber
11
Gunakan Rpy untuk menelepon R dari Python ;-)
2
Sangat diragukan bahwa pengembang Python untuk analisis survival telah melakukan upaya di dekat apa yang Terry Therneau dan lainnya telah masukkan ke dalam paket survival R dalam 30 tahun terakhir, termasuk pengujian ekstensif. Paket survival menjalani prosedur pengujian paling ketat yang pernah saya lihat dalam statistik.
Frank Harrell
2
Sepakat. survivalPaket R berada di bawah pengawasan ketat oleh komunitas besar.
Marc Claesen
RPy (2 sekarang) sangat menyakitkan untuk diinstal dalam pengalaman saya.
Zhubarb

Jawaban:

21

AFAIK, tidak ada paket analisis kelangsungan hidup dengan python. Seperti komentar mbq di atas, satu-satunya rute yang tersedia adalah Rpy .

Bahkan jika ada paket python murni yang tersedia, saya akan sangat berhati-hati dalam menggunakannya, khususnya saya akan melihat:

  • Seberapa sering diperbarui?
  • Apakah ini memiliki basis pengguna yang besar?
  • Apakah ada teknik yang canggih?

Salah satu manfaat R, adalah bahwa paket standar ini mendapatkan sejumlah besar pengujian dan umpan balik pengguna. Saat berurusan dengan data nyata, kasing tepi yang tidak terduga dapat masuk.

csgillespie
sumber
6
Dalam 5 tahun terakhir banyak hal berubah (menjadi lebih baik) untuk Python. Vide jawaban oleh Cam.Davidson.Pilon di Lifelines .
Piotr Migdal
69

Lihat proyek garis hidup for untuk implementasi sederhana dan bersih dari model survival dengan Python, termasuk

  • Estimator fungsi bertahan hidup
  • Pengukur kurva bahaya kumulatif
  • Model regresi hazard proporsional Cox
  • Model regresi beragam waktu Cox
  • model AFT parametrik
  • Model regresi aditif Aalen
  • Pengujian multivarian

Manfaat:

  • dibangun di atas panda
  • Python murni & mudah dipasang
  • built in fungsi merencanakan
  • antarmuka yang sederhana

Dokumentasi tersedia di sini: dokumentasi dan contoh

Contoh penggunaan:

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

Contoh plot dari pustaka plot bawaan:

masukkan deskripsi gambar di sini

  1. Penafian: Saya penulis utama. Ping saya (email di profil) untuk pertanyaan atau umpan balik tentang jalur kehidupan .
Cam.Davidson.Pilon
sumber
14
(+1) Nama yang cukup pintar untuk paket bertahan hidup.
Marc Claesen
8

python-asurv adalah upaya untuk port perangkat lunak asurv untuk metode bertahan hidup dalam astronomi. Mungkin patut diawasi, tetapi cgillespie benar tentang hal-hal yang harus diperhatikan: ia masih memiliki jalan panjang dan pengembangan tampaknya tidak aktif. (AFAICT hanya ada satu metode dan bahkan selesai, paket mungkin kurang untuk, katakanlah, biostatisticians.)

Anda mungkin lebih baik menggunakan paket survival dalam R dari Python melalui sesuatu seperti RPy atau PypeR . Saya tidak punya masalah melakukan ini sendiri.

ars
sumber
7

PyIMSL berisi beberapa rutinitas untuk analisis survival. Ini Gratis Sebagai Dalam Bir untuk penggunaan nonkomersial, didukung penuh sebaliknya. Dari dokumentasi di Panduan Pengguna Statistik ...

Menghitung estimasi Kaplan-Meier untuk kemungkinan bertahan hidup: kaplanMeierEstimates ()

Menganalisa data survival dan reliabilitas menggunakan model hazard proporsional Cox: propHazardsGenLin ()

Menganalisa data survival menggunakan model linier umum: survivalGlm ()

Diperkirakan menggunakan berbagai mode parametrik: survivalEstimates ()

Memperkirakan fungsi bahaya keandalan menggunakan pendekatan nonparametric: nonparamHazardRate ()

Menghasilkan populasi dan tabel kehidupan kelompok: lifeTables ()

Josh Hemann
sumber
4

Anda sekarang dapat menggunakan R dari dalam IPython , jadi Anda mungkin ingin melihat menggunakan IPython dengan ekstensi R.

Carl Smith
sumber
2
Bisakah Anda memberi contohnya? Saya penasaran untuk mencobanya!
user603
Saya percaya Anda merujuk ke antarmuka sihir R (yang menggunakan rpy2). Saya juga ingin melihat contoh cepat. (Ini adalah pemahaman saya bahwa model bertahan hidup belum sepenuhnya tersedia di statsmodels .)
chl
Saya tidak terlalu yakin tentang statsmodels, tetapi Anda bisa mendapatkan notebook dari github dengan contoh ekstensi C, Octave, dan R. Anda perlu menjalankan Notebook untuk menggunakannya secara jelas, tetapi saya yakin Anda dapat menggunakan kode yang sama di antarmuka apa pun.
Carl Smith
3
@ user603 Ini adalah demo sederhana: nbviewer.ipython.org/4383682 ; ini bergantung pada iPython yang cukup baru, saya percaya.
shabbychef
2

Saya juga ingin menyebutkan scikit-survival , yang menyediakan model untuk analisis survival yang dapat dengan mudah dikombinasikan dengan alat-alat dari scikit-learn (mis. KFold cross-validation).

Pada tulisan ini, scikit-survival meliputi implementasi dari

  • Penduga fungsi bahaya kumulatif Nelson-Aalen.
  • Penduga fungsi fungsi survival Kaplan-Meier.
  • Model hazard proporsional Cox dengan dan tanpa penalti bersih elastis.
  • Model waktu kegagalan yang dipercepat.
  • Mesin Vektor Dukungan Kelangsungan Hidup.
  • Gradient meningkatkan model Cox.
  • indeks kesesuaian untuk evaluasi kinerja.
rumput laut
sumber
scikit-survival sangat baik untuk tugas terkait prediksi waktu-ke-acara!
Cam.Davidson.Pilon
1

Selain menggunakan Rmelalui RPyatau setara ada sejumlah rutinitas analisis kelangsungan hidup di perpustakaan python statsmodels (sebelumnya sicpy.statsmodel). Mereka berada dalam paket "kotak pasir", artinya mereka tidak seharusnya siap untuk produksi sekarang.

Misalnya Anda memiliki model Cox dari kode hazard proporsional di sini .

oDDsKooL
sumber