カプラン＝マイヤー推定量
X k = I ( τ ~ k ≥ t ) {\displaystyle X_{k}=\mathbb {I} ({\tilde {\tau }}_{k}\geq t)} とし、 k ∈ C ( t ) := { 1 ≤ k ≤ n : c k ≥ t } {\displaystyle k\in C(t):=\{1\leq k\leq n\,:\,c_{k}\geq t\}} のものだけ、つまり時刻 t {\displaystyle t} 以前に結果が打ち切られなかった事象を考えよう。 m ( t ) = | C ( t ) | {\displaystyle m(t)=|C(t)|} を C ( t ) {\displaystyle C(t)} の要素の数としよう。なお、集合 C ( t ) {\displaystyle C(t)} は確率的ではないので、 m ( t ) {\displaystyle m(t)} も確率的ではないことに注意を要する。さらに、 ( X k ) k ∈ C ( t ) {\displaystyle (X_{k})_{k\in C(t)}} は、共通パラメータ S ( t − 1 ) = Prob  ( τ ≥ t ) {\displaystyle S(t-1)=\operatorname {Prob} (\tau \geq t)} を持つ独立同分布のベルヌーイ確率変数の列である。 m ( t ) > 0 {\displaystyle m(t)>0} と仮定すると、
, n {\displaystyle (\tau _{j})_{j=1,\dots ,n}} ではなく、ペアのリスト ( ( τ ~ j , c j ) ) j = 1 , ... , n {\displaystyle (\,({\tilde {\tau }}_{j},c_{j})\,)_{j=1,\dots ,n}} である。ここで、 j ∈ [ n ] := { 1 , 2 , ... , n } {\displaystyle j\in [n]:=\{1,2,\dots ,n\}} について、 c j ≥ 0 {\displaystyle c_{j}\geq 0} は固定の決定論的整数で、イベント j {\displaystyle j} の打ち切り時間(censoring time)であり、 τ ~ j = min ( τ j , c j ) {\displaystyle {\tilde {\tau }}_{j}=\min(\tau _{j},c_{j})} である。特に、イベント j {\displaystyle j} のタイミングについて利用可能な情報は、イベントが固定時間 c j {\displaystyle c_{j}} の前に起こったかどうかであり、もし起こった場合は、イベントの実際の時間も利用可能となる。課題は、このデータをもとに S ( t ) {\displaystyle S(t)} を推定することである。
この推定量の特に不快な特性は、おそらくそれが「最良」の推定量ではないことを示唆しており、それは打ち切り時間が t {\displaystyle t} より前のすべての観測を無視することである。直感的には、これらの観測はまだ S ( t ) {\displaystyle S(t)} に関する情報を含んでいる。たとえば、 c k < t {\displaystyle c_{k}<t} の多くのイベントで、 τ ~ k < c k {\displaystyle {\tilde {\tau }}_{k}<c_{k}} も成り立つ場合、イベントが早期に起こることが多いと推測できる。これは、 Prob  ( τ ≤ t ) {\displaystyle \operatorname {Prob} (\tau \leq t)} が大きいことを意味し、 S ( t ) = 1 − Prob  ( τ ≤ t ) {\displaystyle S(t)=1-\operatorname {Prob} (\tau \leq t)} を介して、 S ( t ) {\displaystyle S(t)} は小さくなければならないことを意味する。ただし、このナイーブ推定法では、この情報は無視される。そこで問題となるのは、すべてのデータをより有効に利用できる推定量が存在するかどうかである。これを実現したのが、カプラン=マイヤー推定量である。なお、打ち切りが行われていない場合には、ナイーブ推定量を改善することはできないので注意を要する。したがって、改善できるかどうかは打ち切りが行われているかどうかに決定的に依存する。
Mathematica: 組み込み関数 SurvivalModelFit で生存モデルを作成。
SAS(英語版) - カプラン=マイヤー推定量は proc lifetest プロシージャで実装されている。
R - カプラン=マイヤー推定量は、 survival パッケージの一部として利用可能である。
Stata - コマンド sts は、カプラン=マイヤー推定量を返す。
Python - lifelines パッケージにはカプラン=マイヤー推定量が含まれている。
MATLAB - ecdf 関数に 'function','survivor' 引数を指定すると、カプラン=マイヤー推定量を計算したり、プロットしたりすることができる。
StatsDirect - カプラン=マイヤー推定量は Survival Analysis メニューに実装されている。
SPSS - カプラン=マイヤー推定量は、 Analyze > Survival > Kaplan-Meier... メニューに実装されている。
Julia - Survival.jl パッケージには、カプラン=マイヤー推定量が含まれている。
log  ( L ) = ∑ j = 1 i ( d j log  ( h j ) + ( n j − d j ) log  ( 1 − h j ) ) {\displaystyle \log({\mathcal {L}})=\sum _{j=1}^{i}\left(d_{j}\log(h_{j})+(n_{j}-d_{j})\log(1-h_{j})\right)}
h i {\displaystyle h_{i}} に対する対数尤度の最大値は、
∂ log  ( L ) ∂ h i = d i h ^ i − n i − d i 1 − h ^ i = 0 ⇒ h ^ i = d i n i {\displaystyle {\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}}}}
と求められる。ここでハット記号( ^ {\displaystyle {\hat {}}} )は最尤推定を表すのに用いられている。この結果から、次のように書くことができる。
S ^ ( t ) = ∏ i : t i ≤ t ( 1 − h ^ i ) = ∏ i : t i ≤ t ( 1 − d i n i ) {\displaystyle {\widehat {S}}(t)=\prod \limits _{i:\ t_{i}\leq t}\left(1-{\widehat {h}}_{i}\right)=\prod \limits _{i:\ t_{i}\leq t}\left(1-{\frac {d_{i}}{n_{i}}}\right)}