差分

このページの2つのバージョン間の差分を表示します。

この比較画面へのリンク

両方とも前のリビジョン前のリビジョン
次のリビジョン
前のリビジョン
r:survival:survfit [2018/12/11 19:21] watalur: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/4|
 +|5.5|故障|3|1|0|1/3|
 +|10.0|打ち切り|2|0|1|0/2|
 +|10.3|故障|1|1|0|1/1|
 +
 +生存率は、前の時点の生存率×(1-その時点の故障率)で繰り返し計算できる。
 +
 +|イベント発生時点|イベントの種類|時点直前までの生存数|その時点での故障数|その時点での打ち切り数|故障率|生存率|
 +|3.5|故障|4|1|0|1/4|1×(1-1/4)=0.75|
 +|5.5|故障|3|1|0|1/3|0.75×(1-1/3)=0.50|
 +|10.0|打ち切り|2|0|1|0/2|0.50×(1-0/2)=0.50|
 +|10.3|故障|1|1|0|1/1|0.50×(1-1/1)=0|
 +
 +これがカプラン・マイヤー法である。
 +簡単な計算のように見えて、この方法の性質を検討するには、少し難しい確率論を学ぶことになる。
 +以下では、この方法が正しいとして、話を進める。
 +
 +=== 関数survfit ===
  
 このデータをデータフレームで与えるには、次のようにRに伝える。 このデータをデータフレームで与えるには、次のようにRに伝える。
行 91: 行 129:
  
 {{:r:survival:kaplan-meier-estimate-2.png|}} {{:r:survival:kaplan-meier-estimate-2.png|}}
 +
 +
 +実線の折れ線が、カプラン・マイヤー法で推定した生存関数である。1から生存関数を引けば、累積分布関数の推定ができる。このグラフからまずは、寿命分布の密度関数が一山か、二山以上か、を読み取ろうとする。
 +
 +survfitが出力した各時点でのリスクセットの大きさn.riskとその時点での故障数n.eventの比を計算すると、故障率曲線も推定できる。
 +<code>
 +X.survfit = survfit(Surv(time, status)~1, data=X)
 +X.survfit$n.event/X.survfit$n.risk
 +</code>
 +これを縦軸に、時間を横軸にとったグラフ
 +<code>
 +plot(X.survfit$time,X.survfit$n.event/X.survfit$n.risk,
 +     xlab="Time", ylab="Failure Rate")
 +</code>
 +が故障率曲線のノンパラメトリックな推定値となる。
  
 === ノンパラメトリックな推定量の長所と短所 === === ノンパラメトリックな推定量の長所と短所 ===
  
 ノンパラメトリックな推定量は、確率分布を仮定しないので、当初から色眼鏡で見ることがなく、データをそのまま吟味できるという長所を持つ。実際に観測された時点から先の予測ができない、という短所も合わせ持つ。また、精度よく確率分布を推定するには、とても大きいサンプルを必要とすることも、短所である。 ノンパラメトリックな推定量は、確率分布を仮定しないので、当初から色眼鏡で見ることがなく、データをそのまま吟味できるという長所を持つ。実際に観測された時点から先の予測ができない、という短所も合わせ持つ。また、精度よく確率分布を推定するには、とても大きいサンプルを必要とすることも、短所である。