ChatGPTと一緒に統計学に関わる事象について直感的な理解を目指すシリーズ。
Cox比例ハザードモデルの記事(【統計解説】Cox比例ハザードモデルについて)では、説明変数とハザードの関係を扱った。本稿では、その前提となる生存関数そのものをデータから推定する方法として、Kaplan–Meier法を整理する。
0. 目次
- まず全体像:Kaplan–Meier法は「生存関数を推定する方法」
- Kaplan–Meier法ではどんなデータを扱うのか
- そもそも何を推定したいのか:生存関数 $S(t)$
- なぜ単純な「生存者数 ÷ 全患者数」ではダメなのか
- 打ち切り患者をどう考えるのか
- Kaplan–Meier法の基本的な発想
- 条件付き生存確率を掛け合わせる
- Kaplan–Meier推定量の式
- 実際のデータからKaplan–Meier曲線を作る
- 9-1. 2年時点
- 9-2. 4年時点
- 9-3. 5年時点
- 9-4. 6年時点
- なぜ打ち切りでは曲線が下がらないのか
- なぜKaplan–Meier曲線は階段状になるのか
- Kaplan–Meier曲線から何を読み取れるのか
- 生存率の標準誤差と95%信頼区間
- 2群のKaplan–Meier曲線を比較する
- log-rank検定とは何を検定しているのか
- Kaplan–Meier法とCox比例ハザードモデルの関係
- Kaplan–Meier法・Cox・パラメトリックモデルの比較
- Kaplan–Meier法の前提と注意点
- 全体のまとめ
1. まず全体像:Kaplan–Meier法は「生存関数を推定する方法」
Kaplan–Meier法(Kaplan–Meier estimator)は、
打ち切りを含む生存時間データから、生存関数 $S(t)$ を推定する方法
である。
Cox比例ハザードモデルの記事では、
$$ S(t)=P(T>t) $$という生存関数を扱った。
これは、
時刻 $t$ を超えてイベントを起こさずにいる確率
を表していた。
しかし、ここで一つ疑問が生じる。
実際の研究では、生存関数
$$ S(t) $$そのものは最初から分かっているわけではない。
例えば、
5年を超えて生存する確率は何%なのか
という問いに答えるためには、実際に集めた患者データから、
$$ S(5) $$を推定する必要がある。
そのために使われる代表的な方法がKaplan–Meier法である。
したがってKaplan–Meier法の目的は、
$$ \boxed{ \text{患者データ} \longrightarrow \hat S(t) } $$である。
ここで、
$$ \hat S(t) $$の上についている
$$ \hat{} $$は、
真の生存関数 $S(t)$ そのものではなく、データから推定した値
という意味である。
Cox比例ハザードモデルが、
説明変数によってハザードが何倍変化するか
を推定するモデルだったのに対して、Kaplan–Meier法では、
そもそも時間とともに生存確率がどのように低下していくのか
を直接推定する。
ここが両者の最初の大きな違いである。
2. Kaplan–Meier法ではどんなデータを扱うのか
Cox比例ハザードモデルと同じように、生存時間データを扱う。
例えば5人の患者を追跡したとする。
| 患者 | 観察時間 | 結果 |
|---|---|---|
| A | 2年 | 死亡 |
| B | 4年 | 死亡 |
| C | 5年 | 打ち切り |
| D | 6年 | 死亡 |
| E | 8年 | 打ち切り |
患者 $i$ について必要なのは基本的に、
$$ (T_i,\delta_i) $$である。
ここで、
$$ T_i $$は観察された時間、
$$ \delta_i $$はイベントが観測されたかどうかを表す。
$$ \delta_i= \begin{cases} 1 & \text{イベントが観測された場合}\\\\ 0 & \text{打ち切りの場合} \end{cases} $$である。
例えばAは、
$$ T_A=2,\qquad \delta_A=1 $$である。
一方Cは5年で追跡が終了したが、その時点では死亡していない。
したがって、
$$ T_C=5,\qquad \delta_C=0 $$となる。
重要なのは、
$$ \delta_C=0 $$が、
Cは死亡しなかった
という意味ではないことである。
分かっているのは、
少なくとも5年までは死亡していなかった
ということだけである。
これが右打ち切りである。
3. そもそも何を推定したいのか:生存関数 $S(t)$
イベントが起こるまでの時間を確率変数
$$ T $$とする。
生存関数は、
$$ \boxed{ S(t)=P(T>t) } $$だった。
例えば、
$$ S(5)=0.8 $$なら、
5年を超えてイベントを起こさずにいる確率が80%
という意味である。
死亡をイベントとするなら、
5年を超えて生存する確率が80%
となる。
再発をイベントとするなら、
5年を超えて再発しない確率が80%
となる。
つまり「生存関数」という名前ではあるが、死亡以外のイベントにもそのまま使える。
Kaplan–Meier法では、この未知の
$$ S(t) $$を患者データから推定する。
つまり、
$$ S(t) $$という理論上の確率に対して、
$$ \hat S(t) $$という推定値を作ることが目的である。
4. なぜ単純な「生存者数 ÷ 全患者数」ではダメなのか
まず、打ち切りが一切ない場合を考える。
100人全員を5年間追跡できて、そのうち80人が5年を超えて生存していたなら、
$$ \hat S(5)
\frac{80}{100}
0.8 $$
と考えるのは自然である。
問題は、実際の研究では全患者を同じ期間追跡できるとは限らないことである。
例えば100人のうち、
| 結果 | 人数 |
|---|---|
| 5年以内に死亡 | 20 |
| 5年を超えて生存 | 60 |
| 3年で追跡不能 | 20 |
だったとする。
このとき単純に、
$$ \frac{60}{100}=0.6 $$とすると、3年で追跡不能になった20人を、
5年以内に死亡した人
と同じように扱ってしまう。
しかし実際には、その20人は少なくとも3年間は生存していた。
逆に、その20人を最初から除外して、
$$ \frac{60}{80}=0.75 $$とするのも問題である。
今度は、
その20人が3年間生存していた
という情報をすべて捨ててしまう。
したがって必要なのは、
打ち切られるまではその患者の情報を利用し、打ち切られた後はそれ以降の計算から外す
という方法である。
Kaplan–Meier法はまさにこれを行う。
5. 打ち切り患者をどう考えるのか
例えば、
| |
だったとする。
Cは5年で打ち切られている。
しかしCについては、
| |
していたことが分かっている。
したがって2年時点ではCも、
まだイベントを起こしていない患者
として使える。
4年時点でも同様である。
しかし6年時点では、Cが生存しているのか死亡しているのか分からない。
したがって6年時点の計算には使えない。
つまり、
$$ \boxed{ \text{打ち切り患者}
\text{打ち切られるまでは利用し、その後はリスク集合から外す} } $$
という扱いになる。
この考え方はCox比例ハザードモデルでも同じである。
6. Kaplan–Meier法の基本的な発想
では、実際に
$$ S(t) $$をどう推定するのか。
Kaplan–Meier法では、
イベントが発生する時点ごとに、その時点を生き残る条件付き確率を計算する
という方法を使う。
例えば研究開始時点で5人いるとする。
2年時点で1人死亡した。
この2年時点の直前には5人全員がイベントを起こしていなかった。
そのうち1人が死亡し、4人が生き残った。
したがって、
2年時点直前まで生存していた人が、2年時点を生き残る確率
は、
$$ \frac{4}{5} $$と推定できる。
したがって、
$$ \hat S(2)=\frac{4}{5}=0.8 $$となる。
次に4年時点でさらに1人死亡したとする。
この時点の直前には4人が残っている。
その4人のうち3人が4年時点を生き残ったので、
$$ P( 4\text{年を生き残る} \mid 2\text{年まで生存} )
\frac{3}{4} $$
と推定できる。
では、研究開始から4年を超えて生存する確率はどうなるか。
それには、
まず2年を生き残り、さらにその条件のもとで4年も生き残る
必要がある。
したがって、
$$ \hat S(4)
\frac{4}{5} \times \frac{3}{4}
0.6 $$
となる。
ここがKaplan–Meier法の核心である。
7. 条件付き生存確率を掛け合わせる
なぜ掛け算するのかをもう少し整理する。
4年を超えて生存するためには、
2年を超えて生存する
ことに加えて、
2年まで生存したという条件のもとで、さらに4年を超えて生存する
必要がある。
確率の積の公式から、
$$ P(T>4)
P(T>2) P(T>4\mid T>2) $$
となる。
例えば、
$$ P(T>2)=0.8 $$で、
$$ P(T>4\mid T>2)=0.75 $$なら、
$$ P(T>4)
0.8\times0.75
0.6 $$
となる。
さらに6年時点まで考えるなら、
$$ P(T>6)
P(T>2) \times P(T>4\mid T>2) \times P(T>6\mid T>4) $$
となる。
Kaplan–Meier法は、この条件付き確率をイベント時点ごとに計算して、次々と掛け合わせている。
したがって、
$$ \boxed{ \text{Kaplan–Meier法}
\text{各イベント時点の条件付き生存確率を順番に掛け合わせる} } $$
と理解するとよい。
8. Kaplan–Meier推定量の式
イベントが起きた時刻を、
$$ t_1,t_2,\ldots,t_k $$とする。
各イベント時点
$$ t_i $$の直前に、
$$ n_i $$人がまだイベントを起こさず観察されていたとする。
この
$$ n_i $$人を、その時点のrisk set(リスク集合)と考える。
そして、その時点で
$$ d_i $$人にイベントが起きたとする。
すると、その時点をイベントなしで通過する条件付き確率は、
$$ \frac{n_i-d_i}{n_i} $$である。
これは、
$$ 1-\frac{d_i}{n_i} $$とも書ける。
したがって、時刻 $t$ までのすべてのイベント時点について掛け合わせると、
$$ \boxed{ \hat S(t)
\prod_{t_i\le t} \left( 1-\frac{d_i}{n_i} \right) } $$
となる。
これがKaplan–Meier推定量である。
ここで、
$$ \prod $$は、
該当するすべての項を掛け合わせる
という意味である。
つまり式の中身は、
$$ \boxed{ \hat S(t)
\text{1回目を生き残る確率} \times \text{2回目を生き残る確率} \times \cdots } $$
というだけである。
Kaplan–Meier推定量はproduct-limit estimatorとも呼ばれる。
「product」と呼ばれるのは、このように条件付き生存確率を積として求めるためである。
9. 実際のデータからKaplan–Meier曲線を作る
次のデータを使う。
| 患者 | 観察時間 | 結果 |
|---|---|---|
| A | 2年 | 死亡 |
| B | 4年 | 死亡 |
| C | 5年 | 打ち切り |
| D | 6年 | 死亡 |
| E | 8年 | 打ち切り |
研究開始時点では5人全員が生存しているので、
$$ \hat S(0)=1 $$である。
9-1. 2年時点
2年直前には5人全員がリスク集合に入っている。
したがって、
$$ n_1=5 $$である。
2年時点でAが死亡したので、
$$ d_1=1 $$である。
したがって、
$$ 1-\frac{d_1}{n_1}
1-\frac{1}{5}
\frac{4}{5} $$
となる。
よって、
$$ \boxed{ \hat S(2)
1\times\frac{4}{5}
0.8 } $$
である。
9-2. 4年時点
Aはすでに死亡している。
したがって4年直前のリスク集合は、
$$ \{B,C,D,E\} $$であり、
$$ n_2=4 $$である。
4年時点でBが死亡するので、
$$ d_2=1 $$である。
この時点を生き残る条件付き確率は、
$$ 1-\frac{1}{4}
\frac{3}{4} $$
となる。
したがって、
$$ \hat S(4)
\frac{4}{5} \times \frac{3}{4} $$
なので、
$$ \boxed{ \hat S(4)=0.6 } $$となる。
9-3. 5年時点
5年時点でCが打ち切られる。
ここでは死亡というイベントは発生していない。
したがって、
$$ \hat S(5)=0.6 $$のままである。
ただしCは5年以降のリスク集合から外れる。
9-4. 6年時点
6年直前には、
$$ D,E $$の2人が残っている。
したがって、
$$ n_3=2 $$である。
Dが死亡するので、
$$ d_3=1 $$である。
したがって6年時点を生き残る条件付き確率は、
$$ 1-\frac{1}{2}
\frac{1}{2} $$
となる。
よって、
$$ \hat S(6)
0.6\times\frac{1}{2} $$
なので、
$$ \boxed{ \hat S(6)=0.3 } $$となる。
8年ではEが打ち切られるだけなので、生存率は0.3のままである。
結果をまとめると、
| 時刻 | 直前のリスク集合 $n_i$ | イベント数 $d_i$ | 条件付き生存確率 | $\hat S(t)$ |
|---|---|---|---|---|
| 0年 | 5 | 0 | 1 | 1.00 |
| 2年 | 5 | 1 | $4/5$ | 0.80 |
| 4年 | 4 | 1 | $3/4$ | 0.60 |
| 5年 | 3 | 0 | ― | 0.60 |
| 6年 | 2 | 1 | $1/2$ | 0.30 |
| 8年 | 1 | 0 | ― | 0.30 |
この表が、そのままKaplan–Meier曲線の元になる。
10. なぜ打ち切りでは曲線が下がらないのか
5年時点でCが打ち切られている。
しかし、
$$ \hat S(5) $$は下がらない。
なぜなら、打ち切りは、
イベントが起きた
という情報ではないからである。
分かっているのは、
$$ T_C>5 $$すなわち、
少なくとも5年まではイベントが起きなかった
ということだけである。
そのため、
$$ \boxed{ \text{イベント} \Longrightarrow \hat S(t)\text{ が低下する} } $$のに対して、
$$ \boxed{ \text{打ち切り} \Longrightarrow \hat S(t)\text{ は低下しない} } $$となる。
ただし、打ち切りが全く影響しないわけではない。
Cは5年以降、
リスク集合の人数 $n_i$ から外れる
ので、その後にイベントが起きたときの計算には影響する。
つまり打ち切りは、
その時点で生存曲線を下げるのではなく、将来の分母を減らす
のである。
11. なぜKaplan–Meier曲線は階段状になるのか
先ほどのデータでは、
$$ \hat S(t) $$は、
| |
のようになる。
生存率が変化するのは、
実際にイベントが発生した時点
だけである。
2年で死亡が起きれば、その瞬間に曲線が下がる。
その後4年までイベントがなければ、
$$ \hat S(t)=0.8 $$のままである。
4年で再び死亡が起こると、
$$ 0.8\rightarrow0.6 $$と下がる。
つまり、
$$ \boxed{ \text{イベントがない期間} \Longrightarrow \hat S(t)\text{ は一定} } $$で、
$$ \boxed{ \text{イベント発生} \Longrightarrow \hat S(t)\text{ が下がる} } $$ため、階段状になる。
打ち切りは通常、Kaplan–Meier曲線上に小さな印で表示される。
| |
しかし、その位置では曲線自体は下がらない。
12. Kaplan–Meier曲線から何を読み取れるのか
Kaplan–Meier曲線から最も直接的に読み取れるのは、
$$ \hat S(t) $$である。
例えば5年時点で、
$$ \hat S(5)=0.60 $$なら、
5年を超えてイベントを起こさない確率は60%と推定された
と解釈する。
また、よく使われる指標としてmedian survival time(生存期間中央値)がある。
これは、
$$ \hat S(t)\le0.5 $$となる最初の時刻である。
例えば、
| |
なら、生存期間中央値はおよそ7年となる。
これは、
患者の半数でイベントが起こるまでの時間
という意味である。
ただし研究終了まで、
$$ \hat S(t)>0.5 $$のままであれば、生存期間中央値は推定できない。
これは異常ではなく、
観察期間中に50%までイベントが発生しなかった
という意味である。
13. 生存率の標準誤差と95%信頼区間
Kaplan–Meier法で得られる、
$$ \hat S(t) $$も標本から計算した推定値である。
したがって、
$$ \hat S(5)=0.60 $$と得られたとしても、母集団における真の
$$ S(5) $$が正確に0.60だと分かるわけではない。
推定値には不確実性がある。
Kaplan–Meier推定量の分散を推定する代表的な方法が、Greenwoodの公式である。
概念的には、
$$ \widehat{\operatorname{Var}} [ \hat S(t) ]
\hat S(t)^2 \sum_{t_i\le t} \frac{d_i}{n_i(n_i-d_i)} $$
と表される。
したがって標準誤差は、
$$ SE[\hat S(t)]
\sqrt{ \widehat{\operatorname{Var}}[\hat S(t)] } $$
となる。
概念的には、
$$ \boxed{ \text{イベントが少なく、リスク集合が大きい} \Longrightarrow \text{生存率を比較的精密に推定できる} } $$一方、
$$ \boxed{ \text{追跡後半で残っている患者が少ない} \Longrightarrow \text{生存率の推定が不安定になる} } $$という関係になる。
そのためKaplan–Meier曲線では、生存曲線だけでなく95%信頼区間も表示されることが多い。
典型的には、
| |
という形になる。
特に追跡後半ではリスク集合が小さくなるため、信頼区間が広がりやすい。
したがってKaplan–Meier曲線の右端を読むときには、
その時点で実際に何人がリスク集合に残っているのか
も重要になる。
そのため論文では曲線の下に、
| |
のようなnumber at riskを併記することが多い。
14. 2群のKaplan–Meier曲線を比較する
実際の医学研究では、一つの集団の生存曲線だけを見るよりも、
治療群と対照群で生存時間が違うか
を調べたい場合が多い。
例えば治療A群と治療B群について、それぞれKaplan–Meier曲線を推定する。
| |
この図から、
A群のほうがイベントなし生存率が高そうだ
ということは視覚的に分かる。
しかし、
曲線が離れて見える
ことと、
統計学的に差がある
ことは同じではない。
そのため、2群の生存曲線を統計的に比較する方法が必要になる。
代表的なのがlog-rank検定である。
15. log-rank検定とは何を検定しているのか
log-rank検定では、各イベント時点について、
もし2群でイベント発生傾向に差がなければ、各群で何人くらいイベントが起きるはずか
を考える。
そして、
実際に各群で起きたイベント数
と比較する。
例えばあるイベント時点で、
| 治療A群 | 治療B群 | 合計 | |
|---|---|---|---|
| リスク集合 | 80 | 20 | 100 |
| 実際のイベント | 2 | 8 | 10 |
だったとする。
もし両群のイベントリスクが同じなら、100人中80人がA群なので、10件のイベントのうち期待されるイベント数は概ね、
$$ E_A
10\times\frac{80}{100}
8 $$
である。
B群では、
$$ E_B
10\times\frac{20}{100}
2 $$
となる。
しかし実際には、
$$ O_A=2 $$$$ O_B=8 $$だった。
つまりB群では、
差がないと仮定した場合より多くのイベントが起きている
ことになる。
log-rank検定では、こうした、
$$ O-E $$すなわち、
Observed − Expected
をすべてのイベント時点について積み上げる。
そして、
$$ H_0: \text{2群の生存時間分布に差がない} $$という帰無仮説を検定する。
$p$ 値が十分小さければ、
2群の生存曲線には統計学的な差がある
と判断する。
したがって、
$$ \boxed{ \text{Kaplan–Meier法} \longrightarrow \text{生存曲線を推定} } $$$$ \boxed{ \text{log-rank検定} \longrightarrow \text{生存曲線を群間比較} } $$という役割分担になる。
16. Kaplan–Meier法とCox比例ハザードモデルの関係
ここでCox比例ハザードモデルとつながる。
Kaplan–Meier法は、
各群の生存関数 $S(t)$ がどのようになっているか
を推定する。
例えば、
| |
を求める。
一方Cox比例ハザードモデルでは、
$$ h(t|X)
h_0(t)e^{\beta X} $$
として、
説明変数によってハザードが何倍変化するか
を推定する。
したがって治療AとBを比較するなら、
Kaplan–Meier法では、
A群とB群の生存曲線を別々に描く
のに対して、Coxモデルでは、
A群とB群のハザード比を推定する
という違いがある。
さらにCoxモデルでは、
$$ h(t|X_1,X_2,\ldots)
h_0(t) e^{\beta_1X_1+\beta_2X_2+\cdots} $$
とすることで、
年齢、性別、重症度などを同時に調整した治療効果
を推定できる。
Kaplan–Meier法そのものには、このような多変量調整の仕組みはない。
したがって実際の論文では、
| |
という流れがよく用いられる。
ここで重要なのは、
$$ \boxed{ \text{Kaplan–Meier法} \neq \text{Cox比例ハザードモデルの簡易版} } $$ということである。
目的が異なる。
Kaplan–Meier法の主目的は、
$$ \boxed{ S(t)\text{ の推定} } $$である。
Cox比例ハザードモデルの主目的は、
$$ \boxed{ \text{説明変数とハザードの関係の推定} } $$である。
詳細は 【統計解説】Cox比例ハザードモデルについて もあわせて参照するとわかりやすい。
17. Kaplan–Meier法・Cox・パラメトリックモデルの比較
| Kaplan–Meier法 | Cox比例ハザードモデル | パラメトリック生存時間モデル | |
|---|---|---|---|
| 主な目的 | 生存関数を推定 | 説明変数とハザードの関係を推定 | 生存時間分布全体をモデル化 |
| 時間情報 | 使う | 使う | 使う |
| 打ち切り | 扱える | 扱える | 扱える |
| $S(t)$ | 直接推定 | モデルから推定可能 | 分布から決まる |
| 説明変数 | 基本的には使わない | 使う | 使える |
| 分布仮定 | 不要 | 基準ハザードの形は仮定しない | 必要 |
| 主な結果 | 生存曲線、生存率、中央値 | Hazard Ratio | モデルに応じたHR、time ratioなど |
| 群間比較 | log-rank検定など | 回帰係数 $\beta$ | 回帰係数など |
ここで重要なのは、
$$ \boxed{ \text{Kaplan–Meier法は、生存時間分布の形を決めずに }S(t)\text{ を推定する} } $$という点である。
例えば指数分布を仮定すれば、
$$ S(t)=e^{-\lambda t} $$という滑らかな関数になる。
一方Kaplan–Meier法では、
生存時間が指数分布に従う
などとは仮定しない。
実際にイベントが発生した時点を使って、
$$ \hat S(t) $$を階段状に推定する。
この意味でKaplan–Meier法はノンパラメトリックな生存関数推定法である。
18. Kaplan–Meier法の前提と注意点
Kaplan–Meier法は打ち切りを扱える。
しかし、
どのような打ち切りでも問題なく扱える
という意味ではない。
重要なのが、打ち切りが生存時間と強く関連していないという考え方である。
例えば重症患者ほど急速に脱落し、その後死亡している可能性が高いにもかかわらず、
単なる打ち切り
として扱うと、生存率を高く見積もる可能性がある。
極端な例として、
| |
という仕組みなら、
追跡不能になった患者は、追跡を続けられた患者と同じような予後である
とは考えにくい。
Kaplan–Meier法では基本的に、
打ち切られた時点までは情報を利用し、その後は同じリスクにさらされていた患者としては扱わない
という仕組みである。
したがって、打ち切りがイベント発生リスクと系統的に関係している場合には注意が必要になる。
また追跡後半では、リスク集合が非常に小さくなることがある。
例えば、
| |
となっていたとする。
5年時点のKaplan–Meier曲線は数学的には計算できる。
しかし、その推定値はたった3人の情報に大きく依存する。
したがって、
曲線がどこまで伸びているか
だけを見るのではなく、
その時点のnumber at riskが何人なのか
を見ることが重要である。
19. 全体のまとめ
Kaplan–Meier法を理解する流れは次のように整理できる。
| |
したがって、Kaplan–Meier法の本質を一つの式で表すなら、
$$ \boxed{ \hat S(t)
\prod_{t_i\le t} \left( 1-\frac{d_i}{n_i} \right) } $$
である。
しかし、この式で行っていることは複雑ではない。
各イベント時点で、
$$ \frac{n_i-d_i}{n_i} $$という、
その時点までイベントを起こしていなかった人が、さらにその時点をイベントなしで通過する割合
を求めている。
そして、
$$ \boxed{ \text{そこまで生存する確率}
\text{各時点を生き残る条件付き確率の積} } $$
としているだけである。
つまりKaplan–Meier法とは、
打ち切り患者の「観察できたところまで」の情報を残しながら、イベントが起きるたびに条件付き生存確率を更新し、それを積み重ねることで生存関数 $S(t)$ を推定する方法
である。
Cox比例ハザードモデルとの関係まで含めて整理すると、
$$ \boxed{ \text{Kaplan–Meier} \rightarrow S(t)\text{ を見る} } $$$$ \boxed{ \text{log-rank} \rightarrow S(t)\text{ の群間差を見る} } $$$$ \boxed{ \text{Cox} \rightarrow \text{説明変数とハザードの関係を見る} } $$という役割分担になる。
この3つを一続きの生存時間解析として理解すると、Kaplan–Meier曲線、log-rank検定、Hazard Ratioが別々の統計手法としてバラバラに見えなくなる。