差分
このページの2つのバージョン間の差分を表示します。
両方とも前のリビジョン前のリビジョン次のリビジョン | 前のリビジョン | ||
r:survival:survfit [2018/12/11 19:07] – watalu | r:survival:survfit [2018/12/11 19:32] (現在) – watalu | ||
---|---|---|---|
行 1: | 行 1: | ||
- | ==== ノンパラメトリックな生存関数の推定法 ==== | + | ==== カプラン・マイヤー法 ==== |
- | カプラン・マイヤー法は、特定の確率分布を仮定しない生存関数の推定法である。 | + | 生存関数は時点ごとの生存率を表す関数であり、カプラン・マイヤー法は、特定の確率分布を仮定しない生存関数の推定法である。ノンパラメトリックな生存関数の推定法と言う。 |
その推定量(推定値の計算方法)を、カプラン・マイヤー推定量と呼ぶ。 | その推定量(推定値の計算方法)を、カプラン・マイヤー推定量と呼ぶ。 | ||
ある時点の生存関数をそれまでの各時点の生存率の積で推定する、という計算方法を用いており、この推定量の性質を示す際にproduct limitという考え方が導入されることから、product limit推定量とも呼ばれる。 | ある時点の生存関数をそれまでの各時点の生存率の積で推定する、という計算方法を用いており、この推定量の性質を示す際にproduct limitという考え方が導入されることから、product limit推定量とも呼ばれる。 | ||
行 16: | 行 16: | ||
|10.0|打ち切り||10.0|0| | |10.0|打ち切り||10.0|0| | ||
|3.5|故障||5.5|1| | |3.5|故障||5.5|1| | ||
+ | |||
+ | このデータを小さい順に並び替える。 | ||
+ | |||
+ | |イベント発生時点|イベントの種類| | ||
+ | |3.5|故障| | ||
+ | |5.5|故障| | ||
+ | |10.0|打ち切り| | ||
+ | |10.3|故障| | ||
+ | |||
+ | そして時点ごとに、それまでに生存していた数、故障数、打ち切り数を求める。 | ||
+ | |||
+ | |イベント発生時点|イベントの種類|時点直前までの生存数|その時点での故障数|その時点での打ち切り数| | ||
+ | |3.5|故障|4|1|0| | ||
+ | |5.5|故障|3|1|0| | ||
+ | |10.0|打ち切り|2|0|1| | ||
+ | |10.3|故障|1|1|0| | ||
+ | |||
+ | 各時点での故障率は、故障数/ | ||
+ | |||
+ | |イベント発生時点|イベントの種類|時点直前までの生存数|その時点での故障数|その時点での打ち切り数|故障率| | ||
+ | |3.5|故障|4|1|0|1/ | ||
+ | |5.5|故障|3|1|0|1/ | ||
+ | |10.0|打ち切り|2|0|1|0/ | ||
+ | |10.3|故障|1|1|0|1/ | ||
+ | |||
+ | 生存率は、前の時点の生存率×(1-その時点の故障率)で繰り返し計算できる。 | ||
+ | |||
+ | |イベント発生時点|イベントの種類|時点直前までの生存数|その時点での故障数|その時点での打ち切り数|故障率|生存率| | ||
+ | |3.5|故障|4|1|0|1/ | ||
+ | |5.5|故障|3|1|0|1/ | ||
+ | |10.0|打ち切り|2|0|1|0/ | ||
+ | |10.3|故障|1|1|0|1/ | ||
+ | |||
+ | これがカプラン・マイヤー法である。 | ||
+ | 簡単な計算のように見えて、この方法の性質を検討するには、少し難しい確率論を学ぶことになる。 | ||
+ | 以下では、この方法が正しいとして、話を進める。 | ||
+ | |||
+ | === 関数survfit === | ||
このデータをデータフレームで与えるには、次のようにRに伝える。 | このデータをデータフレームで与えるには、次のようにRに伝える。 | ||
行 67: | 行 105: | ||
| | ||
</ | </ | ||
+ | |||
+ | この表示を読みながら、カプラン・マイヤー法の説明を少し加える。 | ||
+ | * データではイベント発生時点は小さい順に3.5, | ||
+ | * 時点3.5までは4つの対象が生存している、あるいは故障していない。時点3.5で一つ故障したので、それ以降、次の時点5.5までは3つの対象が生存している、あるいは故障していない。これがn.riskという列の数値の意味である。時点10.3で1とあるのは、それ以前の時点10.0で対象の1つの観測が打ち切られたためである。時点10.3の故障発生時に、それまで生存していることが確認できているのは1つだけだから。 | ||
+ | * 各時点の故障率は1/ | ||
+ | * survivalは生存関数の推定値である。時点3.5より前には、すべてが生存していたので、時点3.5の故障によって生存率が1から1×(1-1/ | ||
+ | * std.errはグリーンウッドの公式など、指定された方法を用いている。信頼区間も同様で、ここでは詳細を省略する。 | ||
推定した生存関数を描くには、関数plotを用いる。 | 推定した生存関数を描くには、関数plotを用いる。 | ||
行 85: | 行 130: | ||
{{: | {{: | ||
+ | |||
+ | 実線の折れ線が、カプラン・マイヤー法で推定した生存関数である。1から生存関数を引けば、累積分布関数の推定ができる。このグラフからまずは、寿命分布の密度関数が一山か、二山以上か、を読み取ろうとする。 | ||
+ | |||
+ | survfitが出力した各時点でのリスクセットの大きさn.riskとその時点での故障数n.eventの比を計算すると、故障率曲線も推定できる。 | ||
+ | < | ||
+ | X.survfit = survfit(Surv(time, | ||
+ | X.survfit$n.event/ | ||
+ | </ | ||
+ | これを縦軸に、時間を横軸にとったグラフ | ||
+ | < | ||
+ | plot(X.survfit$time, | ||
+ | | ||
+ | </ | ||
+ | が故障率曲線のノンパラメトリックな推定値となる。 | ||
+ | |||
+ | === ノンパラメトリックな推定量の長所と短所 === | ||
+ | |||
+ | ノンパラメトリックな推定量は、確率分布を仮定しないので、当初から色眼鏡で見ることがなく、データをそのまま吟味できるという長所を持つ。実際に観測された時点から先の予測ができない、という短所も合わせ持つ。また、精度よく確率分布を推定するには、とても大きいサンプルを必要とすることも、短所である。 |