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

**カプラン=マイヤー推定量**（カプラン マイヤー すいていりょう、）は、**積極限推定量**（せききょくげんすいていりょう、）とも呼ばれ、生存データから生存関数を推定するために用いられるノンパラメトリック統計量である。医学研究では、治療後に一定期間生存している患者の割合を測定するためによく使われる。他の分野では、カプラン=マイヤー推定量を用いて、失業後に人々が失業している期間の長さや、機械部品の故障までの時間や、に食べられてしまうまでの肉果の残存期間を測定することができる。この推定量は、Edward L. KaplanとPaul Meierが米国統計学会誌（*[[:en:Journal of the American Statistical Association|Journal of the American Statistical Association]]*）に別々に原稿を提出したことにちなんで命名された。ジャーナル編集者のジョン・テューキーは、彼らの研究を1つの論文にまとめるよう説得した。この論文は1958年に発表されて以来、約61,000回も引用されている。

その生存関数 S(t) （寿命が t より長くなる確率）の推定量は次の式で与えられる。

:  \widehat S(t) = \prod\limits_{i:\ t_i\le t} \left(1 - \frac{d_i}{n_i}\right),

ここに、 t_i は少なくとも1つのイベントが発生した時刻、d_i は時刻 t_i で発生したイベントの数（たとえば、死亡）、そして  n_i は時刻 t_i まで生存していることが分かっている（まだイベントが発生していないか、打ち切られていない）個体の数である。

## 基本的な考え方
カプラン=マイヤー推定量のプロットは、一連の減少する水平ステップの系列であり、十分に大きな標本サイズの時に、その母集団の真の生存関数に近づく。連続する別個のサンプリングされた観測値（カチッと音がする）間の生存関数の値は一定であると仮定される。

カプラン=マイヤー曲線の重要な利点は、この手法がいくつかのタイプの打ち切りデータ、特に患者が研究から離脱した場合、またはフォローアップに失敗した場合、またはイベントなしで生存している場合に発生する「右側打ち切り」（*right-censoring*）を考慮に入れることができることである。プロット上では、小さな縦の目盛りが、生存時間が右側打ち切りされた個々の患者を示している。切り捨てや打ち切りが行われない場合、カプラン=マイヤー曲線は、の補集合である。

では、一般的な応用例として、たとえば遺伝子Aプロファイルを持つ患者と遺伝子Bプロファイルを持つ患者のように、患者をカテゴリーに分類することがある。このグラフでは、遺伝子Bを持つ患者は、遺伝子Aを持つ患者よりも早く死亡する。2年後の生存率は、遺伝子Aの患者では約80%だが、遺伝子Bの患者では半分未満である。

カプラン=マイヤー推定量を作成するには、各患者（または各被験者）について、少なくとも2個のデータが必要である。それらは、最後の観察時の状態（イベント発生または右側打ち切り）と、イベント発生までの時間（または打ち切りまでの時間）の対からなる。2つ以上のグループ間の生存関数を比較する場合、3番目のデータが必要で、それは各被験者のグループ割り当てである。

## 問題の定義
確率変数 \tau（タウ）を、関心のあるイベントが起こるまでの時間と考えよう（ただし、\tau\ge 0 である）。上に示したように、目的は、\tau の潜在的な生存関数 S を推定することである。この関数は、

: S(t) = \operatorname{Prob}(\tau > t )

として定義され、t=0,1,\dots は時間であることを思い出そう。

\tau_1,\dots,\tau_n\ge 0 を独立した同一分布の確率変数とし、その一般分布は \tau で、\tau_j は、あるイベント j が発生した確率的な時間としよう。S を推定するために利用できるデータは、(\tau_j)_{j=1,\dots,n} ではなく、ペアのリスト (\, ( \tilde \tau_j, c_j )\, )_{j=1,\dots,n} である。ここで、j\in [n] := \{1,2,\dots,n\} について、c_j\ge 0 は固定の決定論的整数で、イベント j の**打ち切り時間（censoring time）**であり、\tilde \tau_j = \min(\tau_j,c_j) である。特に、イベント j のタイミングについて利用可能な情報は、イベントが固定時間 c_j の前に起こったかどうかであり、もし起こった場合は、イベントの実際の時間も利用可能となる。課題は、このデータをもとに S(t) を推定することである。

## カプラン=マイヤー推定量の導出
ここでは、カプラン=マイヤー推定量の2つの導出方法を示す。どちらも生存関数を、**ハザード**（hazard）または**死亡率**（mortality rates）と呼ばれる観点で書き換えることに基づいている。ただし、これを行う前に、ナイーブ推定量を考える価値がある。

### ナイーブ推定量
カプラン=マイヤー推定量の能力を理解するために、まず、生存関数のナイーブ推定量（naive estimator）を説明する価値がある。

k\in [n]:=\{1,\dots,n\} とし、t>0 とする。基本的な議論により、以下の命題が成立することがわかる。

: **命題1**：イベント k の打ち切り時間 c_k が t (c_k\ge t) を超える場合、\tau_k=t である場合に限り、\tilde \tau_k=t になる。

c_k\ge t となるような k があるとしよう。上記の命題から、

: \operatorname{Prob}(\tau_k\ge t) = \operatorname{Prob}(\tilde \tau_k\ge t).

が成り立つ。


X_k = \mathbb{I}(\tilde \tau_k\ge t)
 とし、
k\in C(t) := \{ 1\le k \le n \,:\, c_k \ge t\}
 のものだけ、つまり時刻 t 以前に結果が打ち切られなかった事象を考えよう。
m(t)=|C(t)| 
 を 
C(t) 
 の要素の数としよう。なお、集合 
C(t)
 は確率的ではないので、
m(t)
 も確率的ではないことに注意を要する。さらに、
(X_k)_{k\in C(t)}
 は、共通パラメータ 
S(t-1)=\operatorname{Prob}(\tau\ge t)
 を持つ独立同分布のベルヌーイ確率変数の列である。
m(t)>0 
 と仮定すると、

: 
\hat S_\text{naive}(t-1)
= \frac{1}{m(t)} \sum_{k:c_k\ge t} X_k
= \frac
= \frac{m(t)},


を用いて S(t-1) を推定することになる。ここで、 \tilde \tau_k\ge t   は  c_k\ge t  を意味するため、2番目の等式が続く。最後の等式は単に表記法の変更である。

この推定量の質は、m(t) の大きさによって決まる。これは、m(t) が小さい場合に問題となる、これは定義上、多くのイベントが打ち切られた場合に起こる。この推定量の特に不快な特性は、おそらくそれが「最良」の推定量ではないことを示唆しており、それは打ち切り時間が t より前のすべての観測を無視することである。直感的には、これらの観測はまだ S(t) に関する情報を含んでいる。たとえば、c_k  の多くのイベントで、\tilde \tau_k も成り立つ場合、イベントが早期に起こることが多いと推測できる。これは、\operatorname{Prob}(\tau\le t) が大きいことを意味し、S(t) = 1-\operatorname{Prob}(\tau\le t) を介して、S(t) は小さくなければならないことを意味する。ただし、このナイーブ推定法では、この情報は無視される。そこで問題となるのは、すべてのデータをより有効に利用できる推定量が存在するかどうかである。これを実現したのが、カプラン=マイヤー推定量である。なお、打ち切りが行われていない場合には、ナイーブ推定量を改善することはできないので注意を要する。したがって、改善できるかどうかは打ち切りが行われているかどうかに決定的に依存する。

### プラグインアプローチ
基本的な計算によって、

:  \begin{align}
S(t) & = \operatorname{Prob}(\tau > t\mid\tau > t-1)\operatorname{Prob}(\tau > t-1)  \\[4pt]
            & = (1-\operatorname{Prob}(\tau\le t\mid\tau > t-1)) \operatorname{Prob}(\tau > t-1)\\[4pt]
            & = (1-\operatorname{Prob}(\tau=t\mid\tau \ge t)) \operatorname{Prob}(\tau > t-1) \\[4pt]
            & = q(t) S(t-1)\,,
\end{align}


となり、ここで最後の等式は \tau が整数値であることを利用し、最終行で

: q(t) = 1-\operatorname{Prob}(\tau=t\mid\tau\ge t).

を導いた。

等式 S(t) = q(t) S(t-1) を再帰的に展開すると、

:  S(t) = q(t) q(t-1) \cdots q(0). 

となる。

ここで、q(0) = 1-\operatorname{Prob}(\tau=0\mid\tau > -1) = 1-\operatorname{Prob}(\tau=0) となることに注意すること。

カプラン=マイヤー推定量は、各  q(s)
 がデータに基づいて推定され、 S(t)
 の推定量はこれらの推定量の積として得られる「プラグイン推定量」（plug-in estimator）と見なすことができる。

あとは、q(s)=1-\operatorname{Prob}(\tau=s\mid\tau\ge s) をどのように推定するかを指定するだけである。命題1により、c_k\ge s となるような任意の k\in [n] に対して、\operatorname{Prob}(\tau=s) = \operatorname{Prob}(\tilde \tau_k=s) と \operatorname{Prob}(\tau\ge s) = \operatorname{Prob}(\tilde \tau_k\ge s) がともに成立する。したがって、 c_k\ge s  となるような任意の 
k\in [n]  に対して、

:  \operatorname{Prob}(\tau=s|\tau\ge s) = \operatorname{Prob}(\tilde \tau_k=s)/\operatorname{Prob}(\tilde \tau_k\ge s). 

となる。

上記のナイーブ推定量の構築と同様の推論により、

: \hat q(s) 
= 1 - \frac
= 1 - \frac

という推定量が得られる（「ハザード率」\operatorname{Prob}(\tau=s|\tau\ge s) の定義において、分子と分母を別々に推定することを考えてみよ）。そして、カプラン=マイヤー推定量は、

: \hat S(t) = \prod_{s=0}^t \hat q(s). 

で与えられる。

記事の冒頭で述べた推定量の形式は、さらにいくつかの代数を用いて得られる。そのためには、\hat q(s)=1-d(s)/n(s) と記述する。ここで、保険数理の用語を用いて、d(s)=|\{1\le k\le n\,:\,\tilde \tau_k=s\}| は時刻 s における既知の死亡者数であり、n(s)=|\{1\le k \le n\,:\, \tilde \tau_k\ge s\}| は時刻 s-1 において生存している人の数とする。

なお、d(s)=0 であれば、\hat q(s)=1 であることに注意を要する。このことは、\hat S(t) を定義する積から、d(s)=0 の項をすべて除外できることを意味する。そして、d(s)>0、d_i = d(t_i)、n_i = n(t_i) の時、0\le t_1 を時間 s とすると、冒頭に述べたカプラン=マイヤー推定量の形、

: \hat S(t) = \prod_{i:t_i\le t} \left(1-\frac{d_i}{n_i}\right). 

になる。

この推定量は、ナイーブ推定量とは対照的に、利用可能な情報をより効果的に利用していることがわかる。前述の特殊なケースでは、多くの初期イベントが記録されている場合、推定量は1未満の値を持つ多くの項を乗算するため、その結果、生存確率が大きくならないことを考慮に入れよ。

### 最尤推定量としての導出
カプラン=マイヤー推定量は、の最尤推定から導出できる。より具体的には、イベントの数を d_i、時刻&nbsp; t_i でのリスクのある個人の総数を  n_i とすると、離散ハザード率  h_i は、時刻&nbsp; t_i でイベントが発生した個人の確率として定義できる。この場合、生存率は次のように定義でき、

:  S(t) = \prod\limits_{i:\ t_i\le t} (1-h_i)

時刻  t_i までのハザード関数に対する尤度関数は、

:  \mathcal{L}(h_{j: j\le i}\mid d_{j: j\le i},n_{j: j\le i}) = \prod_{j=1}^i h_j^{d_j}(1-h_j)^{n_j-d_j}

となり、したがって対数尤度は次のようになる。

:  \log(\mathcal{L}) = \sum_{j=1}^i \left(d_j\log(h_j)+(n_j-d_j)\log(1-h_j)\right)

 h_i に対する対数尤度の最大値は、

:  \frac{\partial \log(\mathcal{L})}{\partial h_i} = \frac{d_i}{\widehat{h}_i}-\frac{n_i-d_i}{1-\widehat{h}_i} = 0 \Rightarrow \widehat{h}_i=\frac{d_i}{n_i} 

と求められる。ここでハット記号（\hat{}）は最尤推定を表すのに用いられている。この結果から、次のように書くことができる。

:  \widehat S(t) = \prod\limits_{i:\ t_i\le t} \left(1 - \widehat{h}_i\right) = \prod\limits_{i:\ t_i\le t} \left(1 - \frac{d_i}{n_i}\right)

## 利点と限界
カプラン=マイヤー推定量は、生存分析で最も頻繁に使用される手法の1つである。この推定量は、回復率、死亡の確率、および治療の有効性を検討するのに有用である。そので調整された生存率を推定する能力には限界がある。共変量で調整された生存率を推定するには、パラメトリック生存モデルおよびCox比例ハザード検定が有用であろう。

## 統計学的考察
カプラン=マイヤー推定量は統計量であり、その分散を近似するためにいくつかの推定量が使用される。最も一般的な推定量の1つはGreenwoodの式である。

:  \widehat{\operatorname{Var}} \left( \widehat S(t) \right) = \widehat S(t)^2  \sum_{i:\ t_i\le t} \frac{d_i}{n_i(n_i-d_i)},

ここで、 d_i  は症例数、n_i は観測の総数で、t_i  である。
{{hidden|bg1=#f2dfce;|contentcss=border:1px #C4C3D0solid;|headercss=color:black;|header=上の式の数学的導出の「スケッチ」については、「表示」をクリックして表示される。|content=Greenwoodの式は、 n_i 件のうち d_i 件の故障が発生する確率が、故障確率 h_i の二項分布に従うことに着目して導き出される。最尤ハザード率 \widehat{h}_i = d_i/n_i に対する結果として、E\left(\widehat{h}_i\right) = h_i
、および \operatorname{Var}\left(\widehat{h}_i\right) = h_i(1-h_i)/n_iとなる。確率の乗算を回避するために、 \widehat S(t) の対数の分散を計算し、を使用して元の分散に変換する。

: \begin{align}
\operatorname{Var}\left(\log \widehat{S}(t)\right) &\sim \frac{1}{{\widehat{S}(t)}^2} \operatorname{Var} \left(\widehat{S}(t)\right) \Rightarrow \\
\operatorname{Var}\left( \widehat{S}(t)\right) &\sim {{\widehat{S}(t)}^2}\operatorname{Var}\left(\log\widehat{S}(t) \right)
\end{align}

を使用して、次の式の和の分散が、分散の和に等しいことが示される。:

:  \log\widehat S(t) = \sum\limits_{i:\ t_i\le t} \log\left(1 - \widehat{h}_i\right)

結果として、次のように記述できる。

: \begin{align}
\operatorname{Var}( \widehat{S}(t)) &\sim 
{{\widehat{S}(t)}^2}\operatorname{Var}\left(\sum_{i:\ t_i\le t} \log\left(1 - \widehat{h}_i\right)\right) \\
&\sim
{{\widehat{S}(t)}^2}\sum\limits_{i:\ t_i\le t} \operatorname{Var}\left(\log\left(1 - \widehat{h}_i\right)\right)
\end{align}

必要に応じて、デルタ法をもう一度使用して、

: \begin{align}
\operatorname{Var}( \widehat{S}(t)) &\sim 
{{\widehat{S}(t)}^2}\sum_{i:\ t_i\le t}\left(\frac{\partial \log\left(1 - \widehat{h}_i\right)}{\partial \widehat{h}_i}\right)^2 \operatorname{Var}\left(\widehat{h}_i\right)\\
&={{\widehat{S}(t)}^2}\sum_{i:\ t_i\le t}\left(\frac{1}{1-\widehat{h}_i}\right)^2\frac{\widehat{h}_i \left( 1-\widehat{h}_i \right)}{n_i} \\
&= {{\widehat{S}(t)}^2}\sum_{i:\ t_i\le t} \frac{\widehat{h}_i}{n_i\left(1-\widehat{h}_i\right)} \\
&= 

場合によっては、異なるカプラン=マイヤー曲線を比較したいことがある。これは、ログランク検定、およびCox比例ハザード検定によって行うことができる。

この推定量で使用できる他の統計量は、Hall-Wellnerバンド（Hall-Wellner band）および等精度バンド（equal-precision band）である。

## ソフトウェア

* Mathematica: 組み込み関数 `SurvivalModelFit` で生存モデルを作成。
*  - カプラン=マイヤー推定量は `proc lifetest` プロシージャで実装されている。
* R - カプラン=マイヤー推定量は、 `survival` パッケージの一部として利用可能である。
* Stata - コマンド `sts` は、カプラン=マイヤー推定量を返す。
* Python - `lifelines` パッケージにはカプラン=マイヤー推定量が含まれている。
* MATLAB - `ecdf` 関数に `'function','survivor'` 引数を指定すると、カプラン=マイヤー推定量を計算したり、プロットしたりすることができる。
* StatsDirect - カプラン=マイヤー推定量は `Survival Analysis` メニューに実装されている。
* SPSS - カプラン=マイヤー推定量は、 `Analyze > Survival > Kaplan-Meier...` メニューに実装されている。
* Julia - `Survival.jl` パッケージには、カプラン=マイヤー推定量が含まれている。

## 参照項目

* 生存分析
* 
* 半数致死量
* 

## 脚注

## 推薦文献

* 
* 
* 
* 

## 外部リンク

* 
* 
*