lifelines について
lifelines は、生存時間やイベント発生までの時間を分析する Python ライブラリです。臨床研究者や疫学研究者向けに、打ち切りデータを扱う推定や回帰手法を提供します。
主な機能
- 01Kaplan-Meier 生存推定
- 02Cox 比例ハザード回帰
- 03Log-rank 群間比較
- 04パラメトリック生存モデル
- 05打ち切りデータの処理
活用シーン
- 01臨床試験群間の生存を比較
- 02疾患進行までの時間を推定
- 03患者の転帰に関わるリスク要因を調査
- 04感染や回復までの時間を分析
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ tondevrel/ scientific-agent-skills --skill lifelinesインストール後、Claude Code で/lifelinesを入力して読み込まれたか確認します。
詳細
Lifelines - 生存時間解析
医療では、「イベントまでの時間」(死亡、回復、再発)に関心を持つことがよくあります。Lifelines は「打ち切り」データ(研究から離脱した患者)の複雑さに対応します。
使用する場面
- 臨床試験データ(死亡までの時間、疾患の進行)の分析。
- 治療群間の生存率の比較。
- Cox 比例ハザード回帰を使ったリスク因子の特定。
- 予後予測のための生存モデルの構築。
- 疫学研究(感染までの時間、回復までの時間)。
基本原則
打ち切り
研究終了時までにイベントを経験していない患者は「打ち切り」となります。Lifelines はこれを適切に考慮します。
ハザード比
Cox 回帰では、ハザード比が 1 より大きい場合はリスクの増加、1 より小さい場合はリスクの低下を意味します。
生存曲線
Kaplan-Meier 法では、分布を仮定せずに時間経過に伴う生存確率を推定します。
クイックリファレンス
標準的なインポート
from lifelines import KaplanMeierFitter, CoxPHFitter
from lifelines.statistics import logrank_test
import pandas as pd
基本パターン
# 1. Kaplan-Meier (Visualizing survival)
kmf = KaplanMeierFitter()
kmf.fit(durations=df['days'], event_observed=df['died'])
kmf.plot_survival_function()
kmf.median_survival_time_ # Time when 50% have died
# 2. Cox Proportional Hazards (Risk factors)
cph = CoxPHFitter()
cph.fit(df, duration_col='days', event_col='died')
cph.print_summary() # See hazard ratios for age, drug type, etc.
cph.plot_partial_effects_on_outcome(covariates=['age'], values=[30, 50, 70])
重要なルール
✅ 推奨事項
- event_observed を正しく使用する - 1 = イベント発生、0 = 打ち切り。
- 比例ハザードの仮定を確認する -
cph.check_assumptions()を使用して Cox モデルを検証します。 - ログランク検定で群を比較する - 生存曲線の差を検定する統計手法です。
- 信頼区間をプロットする - 生存率の推定には不確実性が伴います。特にサンプル数が少ない場合は顕著です。
❌ 禁止事項
- 打ち切りを無視しない - 打ち切りとなった患者を「生存」として扱うと、結果に偏りが生じます。
- 通常の回帰分析を使用しない - イベントまでの時間を扱うデータには、専用の手法が必要です。
- 比例ハザードを前提としない - 仮定が満たされない場合は、層別 Cox モデルまたはパラメトリックモデルを使用します。
高度なパターン
複数群の比較
from lifelines.statistics import multivariate_logrank_test
# Compare survival across treatment groups
results = multivariate_logrank_test(df['days'], df['group'], df['died'])
print(results.p_value)
パラメトリックモデル
from lifelines import WeibullFitter, ExponentialFitter
# When you need to extrapolate beyond observed data
wf = WeibullFitter()
wf.fit(df['days'], df['died'])
wf.plot()
Lifelines は複雑な生存データを実用的な医療知見に変換し、臨床研究と実践におけるエビデンスに基づく意思決定を可能にします。
コメント
Markdown 対応