Pythonの生存分析ツール[終了]


46

生存分析を実行できるpythonのパッケージがあるかどうか疑問に思っています。私はRでサバイバルパッケージを使用していますが、私の仕事をPythonに移植したいと思います。


11
Rpyを使用してPythonからRを呼び出す;

2
生存分析のためのPython開発者が、テリーテルノーや他の人々が過去30年間にRサバイバルパッケージに投入したものに近い場所で、広範なテストを含めて努力したことは非常に疑わしいです。サバイバルパッケージは、統計で見た中で最も厳格なテスト手順を経ています。
フランクハレル

2
同意した。Rのsurvivalパッケージは、大規模なコミュニティによって綿密に調査されています。
マーククレセン

私の経験では、RPy(2現在)をインストールするのは非常に苦痛です。
ジュバル14年

回答:


21

私の知る限り、Pythonには生存分析パッケージはありません。上記のmbqのコメントの通り、利用可能な唯一のルートはRpyになります。

利用可能な純粋なpythonパッケージがあったとしても、私はそれを使用する際に非常に注意します。特に、私は以下を見ます:

  • 更新の頻度。
  • 大規模なユーザーベースを持っていますか?
  • 高度なテクニックはありますか?

Rの利点の1つは、これらの標準パッケージが大量のテストとユーザーフィードバックを取得できることです。実際のデータを扱うとき、予期しないエッジケースが忍び寄ることがあります。


6
過去5年間で、Pythonの多くのことが(改善のために)変更されました。VideのCam.Davidson.Pilonによって解答ライフライン
ピョートルミグダル

69

Pythonでのサバイバルモデルのシンプルでクリーンな実装については、ライフライン ¹プロジェクトをご覧ください。

  • 生存関数の推定量
  • 累積ハザード曲線の推定量
  • コックスの比例ハザード回帰モデル
  • Coxの時変回帰モデル
  • パラメトリック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. 免責事項:私は主な著者です。ライフラインに関する質問やフィードバックについては、ping(プロファイル内のメール)を行ってください。

14
(+1)サバイバルパッケージのかなり賢い名前。
マーク

8

python-asurvは、天文学におけるサバイバルメソッドのためにasurvソフトウェアを移植する取り組みです。価値に目を維持することが、cgillespieは右に注意すべき点についてです可能性があります:それは持っている長い移動するための方法を開発が活発なようではありません。(AFAICTには1つのメソッドしか存在せず、完了していても、生物統計学者にとってはパッケージが欠けている可能性があります。)

RPyPypeRのようなものを使用して、PythonからRのサバイバルパッケージを使用する方がおそらく良いでしょう。私はこれを自分でやっても問題はありませんでした。


7

PyIMSLには、生存分析のためのいくつかのルーチンが含まれています。非営利目的での使用はビールとして無料で、その他の場合は完全にサポートされています。統計ユーザーガイドのドキュメントから...

生存確率のKaplan-Meier推定値を計算します:kaplanMeierEstimates()

Coxの比例ハザードモデルを使用して、生存および信頼性データを分析します:propHazardsGenLin()

一般化線形モデルを使用して生存データを分析します:survivalGlm()

さまざまなパラメトリックモードを使用した推定:survivalEstimates()

ノンパラメトリックアプローチを使用して、信頼性ハザード関数を推定します:nonparamHazardRate()

人口とコホートの生命表を生成します:lifeTables()


4

IPython内からRを使用できるようになったため、R拡張機能を使用したIPythonの使用を検討することをお勧めします。


2
この例を挙げていただけますか?試してみたい!
user603

Rマジックインターフェイス(を使用rpy2)を参照していると思います。私も簡単な例を見てみたいです。(サバイバルモデルがstatsmodelsでまだ完全に利用可能ではないことは私の理解です。)
chl

statsmodelsについてはあまりよくわかりませんが、C、Octave、Rの拡張機能の例が記載されたgithubからノートブックを入手できます。これらを使用するには明らかにノートブックを実行する必要がありますが、どのインターフェイスでも同じコードを使用できると確信しています。
カールスミス

3
@ user603以下に簡単なデモを示します。nbviewer.ipython.org / 4383682 ; これはかなり最近のiPythonに依存していると思います。
みすぼらしいシェフ

2

scikit-survivalについても言及したいと思います。これは、scikit-learnのツール(KFold交差検証など)と簡単に組み合わせることができる生存分析のモデルを提供します。

この記事の執筆時点では、scikit-survivalには以下の実装が含まれています

  • 累積ハザード関数のネルソン・アーレン推定量。
  • 生存関数のカプラン・マイヤー推定量。
  • 弾性正味ペナルティの有無によるコックスの比例ハザードのモデル。
  • 加速故障時間モデル。
  • サバイバルサポートベクターマシン。
  • 勾配ブーストCoxモデル。
  • パフォーマンス評価のための一致指数。

scikit-survivalは、イベント発生までの時間に関連するタスクに最適です!
Cam.Davidson.Pilon

1

Rthrough RPyまたは同等のものの使用とは別に、statsmodels(以前のsicpy.statsmodel)pythonライブラリにはいくつかの生存分析ルーチンがあります。ただし、これらは「サンドボックス」パッケージに含まれています。つまり、現時点で本番環境に対応することは想定されていません。

たとえば、ここにコード化され比例ハザードのCoxモデルがあります

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.