Reactive Stats
EMUYN 統計シミュレーター

生存分析シミュレーター

生存分析とは?

生存分析は、あるイベント (死亡、再発、故障など) が発生するまでの時間を分析する統計手法です。 医学研究や信頼性工学などで広く使われており、打ち切りデータ (観察期間終了時点でイベントが発生していないケース) を適切に扱うことができます。

重要な概念

  • 生存関数: 特定の時間までイベントが発生しない確率を表す関数
  • ハザード関数: ある時点でのイベント発生率 (条件付き確率)
  • 打ち切り: 観察期間中にイベントが発生しなかった、または追跡不能になったケース
  • カプランマイヤー法: 打ち切りデータを考慮した生存関数の推定方法
注意点: このシミュレーターでは、2つの群 (処置群と対照群) の生存曲線を比較できます。 サンプルサイズ、打ち切り率、処置効果 (ハザード比) などを変更することで、 生存分析の基本的な概念を視覚的に理解できます。
パラメータ設定
サンプルサイズ: {{ sampleSize }}
20 500
処置群/対照群比率: {{ treatmentControlRatio.toFixed(1) }}
0.2 (対照群が多い) 5.0 (処置群が多い)
打ち切り率 (%): {{ censoringRate }}
0% 50%
ハザード比 (処置効果): {{ hazardRatio.toFixed(2) }}
0.2 (良い効果) 5.0 (悪い効果)
基準ハザード率: {{ (1.0 / baseHazardRate).toFixed(3) }}
高い (0.2) 低い (0.02)
最大追跡期間: {{ maxTime }} 単位時間
10 50
生存率閾値: {{ survivalThreshold }}%
5% 95%
時間: {{ timeThreshold }} 単位時間
1 {{ maxTime }}
更新速度: {{ (autoSimulationSpeed / 1000).toFixed(1) }}秒
速い (0.2秒) 遅い (3秒)
データ生成ロジック
  1. 生存時間: 指数分布から生成(λ = 基準ハザード率)
    • 処置群: λ × ハザード比
    • 対照群: λ
  2. 打ち切り時間: 指数分布から生成(λ × 打ち切り率)
  3. 観測時間: 生存時間、打ち切り時間、最大追跡期間の最小値
  4. イベント判定: 観測時間 = 生存時間の場合にイベント発生

ハザード比が1より大きい場合は処置群の予後が悪く、1より小さい場合は予後が良いことを示します。

カプランマイヤー生存曲線
統計結果
グループ サンプルサイズ イベント数 打ち切り数
処置群 {{ treatmentEvents + treatmentCensored }} {{ treatmentEvents }} {{ treatmentCensored }}
対照群 {{ controlEvents + controlCensored }} {{ controlEvents }} {{ controlCensored }}
指標
一般統計指標
ログランク検定 p値 {{ logRankP.toFixed(4) }}
ハザード比 (95% CI) {{ calculatedHR.toFixed(2) }} ({{ hrLowerCI.toFixed(2) }} - {{ hrUpperCI.toFixed(2) }})
自然打ち切り率 (理論値) {{ calculateNaturalCensoringRate() }}%
{{ survivalThreshold }}%生存時間比較
処置群 vs 対照群 {{ medianTreatment.toFixed(1) }} vs {{ medianControl.toFixed(1) }}
差 (95% CI) {{ survivalTimeTest.timeDifference.toFixed(1) }} ({{ (survivalTimeTest.timeDifference - 1.96 * survivalTimeTest.standardError).toFixed(1) }} - {{ (survivalTimeTest.timeDifference + 1.96 * survivalTimeTest.standardError).toFixed(1) }})
p値 {{ survivalTimeTest.pValue.toFixed(2) }} {{ survivalTimeTest.isSignificant ? '(有意差あり)' : '' }}
{{ timeThreshold }}時間単位後の生存率比較
処置群 vs 対照群 {{ calculateSurvivalAtTime(kmCurves.treatment, timeThreshold).toFixed(2) }} vs {{ calculateSurvivalAtTime(kmCurves.control, timeThreshold).toFixed(2) }}
{{ ((calculateSurvivalAtTime(kmCurves.treatment, timeThreshold) - calculateSurvivalAtTime(kmCurves.control, timeThreshold)) * 100).toFixed(1) }}%
累積ハザード関数
生存分析の基本概念
カプランマイヤー法

カプランマイヤー法は、生存時間データを分析するノンパラメトリックな手法です。 イベント発生時点ごとに生存率を段階的に計算し、打ち切りデータを適切に扱うことができます。

カプランマイヤー推定量:

\[ \hat{S}(t) = \prod_{t_i \leq t} \left(1 - \frac{d_i}{n_i}\right) \]

ここで、\(d_i\)は時間\(t_i\)でのイベント発生数、\(n_i\)は時間\(t_i\)直前のリスク集合のサイズです。

ハザード比と比例ハザードモデル

ハザード比は、処置群と対照群のイベント発生リスク (ハザード) の比率です。 例えば、ハザード比が0.5の場合、処置群は対照群の半分のリスクでイベントが発生します。

コックスの比例ハザードモデル:

\[ h(t|X) = h_0(t) \exp(\beta X) \]

ここで、\(h_0(t)\)はベースラインハザード関数、\(\beta\)は回帰係数、\(X\)は共変量 (この場合は処置群か対照群か) です。

打ち切りデータ

打ち切りデータは、観察期間中にイベントが発生しなかった、または追跡不能になったケースです。 生存分析では、このような不完全なデータを適切に扱うことが重要です。

右側打ち切り: イベントが観察期間後に発生する場合
左側打ち切り: イベントが観察開始前に発生していた場合
区間打ち切り: イベントが2つの時点の間で発生した場合

ログランク検定

ログランク検定は、2つ以上の生存曲線を比較するためのノンパラメトリックな検定法です。 帰無仮説は「群間で生存曲線に差がない」というものです。

ログランク統計量:

\[ Q = \frac{(\sum_{j=1}^J (O_{1j} - E_{1j}))^2}{\sum_{j=1}^J V_{1j}} \]

ここで、\(O_{1j}\)は群1での観測イベント数、\(E_{1j}\)は期待イベント数、\(V_{1j}\)は分散です。

生存時間の比較検定 (Z検定)

特定の生存率 (例: 50%) における生存時間の群間比較は、臨床的に重要な意味を持ちます。 このシミュレーターでは、Z検定を用いて処置群と対照群の生存時間の差が統計的に有意かどうかを評価します。

Z検定統計量:

\[ Z = \frac{T_1 - T_2}{\sqrt{SE(T_1)^2 + SE(T_2)^2}} \]

ここで、\(T_1\)と\(T_2\)は各群の指定された生存率における生存時間、\(SE(T)\)はその標準誤差です。

基準ハザード率と自然打ち切り

基準ハザード率は単位時間あたりのイベント発生確率を表し、値が大きいほどイベントが早く発生します。 自然打ち切り率は、基準ハザード率と最大追跡期間から理論的に計算される、観察期間終了時点でイベントが発生していない確率です。

自然打ち切り率 (指数分布モデルでの理論値):

\[ P(\text{打ち切り}) = \exp(-\lambda \cdot T_{max}) \]

ここで、\(\lambda\)は基準ハザード率、\(T_{max}\)は最大追跡期間です。この式は一定のハザード率 (指数分布) を仮定した場合の計算式です。

注意点: このシミュレーターは教育目的であり、結果の解釈には注意が必要です。実際の臨床研究や統計分析では、より複雑なモデルや前提条件の検証が必要になる場合があります。また、生存曲線の差と特定の生存率における生存時間の差は異なる概念であり、それぞれの検定結果が一致しない場合もあります。