1. はじめに
前回の記事はこちらです。
syleir.hatenablog.com
前回は、生存関数、ハザード関数とは何か、どのように計算するのかをいくつかの例題を交えながら説明したのでした。
今回は、カプランマイヤー曲線の作成に主眼を置きながら解説していきたいと思います。
今回のパートでは打ち切りのない場合でカプランマイヤー曲線の作成ができるようになることが目標です。
なお、打ち切りについては次回説明しますが、打ち切りによって不完全な情報のデータが生まれるという理解をしてください。
つまり、今回は完全なデータでカプランマイヤー曲線を作ることが目標です。
本稿では
これらの本から統計検定対策として必要十分なように要約、加筆しています。
わからないところがあれば原著にあたってみてください。
3. 生存時間解析の目的
そもそもカプランマイヤー曲線は生存時間解析の一分野です。Part2でも述べたように、生存時間解析の主眼は、どれくらいの時間が経過した状態で、どれだけの人が生存しているかという生存数-時間関係の解析でした。
そこで生存関数を導入し、生存関数は時刻を超えて生存する確率を見ることで、時間と生存数の関係性を視覚的に理解することが可能になります。
4. カプランマイヤー曲線とは
誤解を招くことを承知で簡易化すると、実際のデータから作った生存曲線のことです。
通常、モデリングで使用する生存関数は例えば前のPartで説明したようにのように「綺麗な」関数を用いることが多いです。
しかし、実際の解析では実際のデータから生存関数を推定したいというモチベーションが強いです。
その際に最もよく使われるのが「カプランマイヤー推定量」を用いて生存曲線を作成する「カプランマイヤー法」であり、これにより作られた生存曲線が「カプランマイヤー曲線」です。
用語が複雑ですが、ここはそんなもんという雑な理解で大丈夫です。追って説明します。
離散的な実際のデータから推定される曲線は、通常ステップ関数の形を取ります。
生存時間解析において、観察期間外にイベントが起きていることを打ち切りと言います。厳密にはもう少し勉強するべきことがありますが、これを話すと1章必要なのでいずれ番外編で書きます。
打ち切りが起きたデータは生存時間解析において特別な扱いが必要となります。
カプランマイヤー法はこの打ち切りデータを考慮に入れた生存関数の推定を可能にします。
5. 打ち切りのない場合
簡単のためにまず、打ち切りがない場合を考えます。
t | イベント発生数 | 生存数 | 生存率 |
0 | 0 | 5 | 1 |
1 | 2 | 3 | 0.6 |
2 | 0 | 3 | 0.6 |
3 | 0 | 3 | 0.6 |
4 | 1 | 2 | 0.4 |
5 | 1 | 1 | 0.2 |
6 | 0 | 1 | 0.2 |
非常に簡単な例ですが、これの生存関数を推定しようと思った場合、生存率を点推定値としてグラフを書いてみたらよいという、自然な発想があります。このようになります。
ところで、知りたいのは生存"関数"である以上、離散的でなく、連続的に定義されてほしい性質があります。イベントが起きていない間の推定はどうしたら良いでしょうか。
ここは、色んな推定の考えがあって良いところだと思います。
・点と点を直線で結び、折れ線にする
・最小2乗法のように曲線をフィッティングする
など、案としてはありうると思いますが、今回は説明の便宜上、その点から次のイベントが起きるまで右に伸ばして補完することにします。
また、 などの境界域では実際のイベントを反映した後の値を反映することにします。つまり上のグラフのプロットの値を優先することにします。( でとする)
さて、通常このグラフを作る時はどのような思考法をするでしょうか。一般的には例えば、ではでの生存数が、元々の生存数がなのでとするのではないでしょうか。
つまり、情報としては
①元々の生存数
②での生存数
を持っていることが多いと思います。しかし、発想を変えて**情報の持ち方を変える**ことで打ち切りのあるデータにも対応できるようになります。
その持ち方とは
①' の直前のの値
②' でのイベントの発生率
です。
この例では、①' : の直前の と②' : でのイベント発生率を情報として持ち、として情報を更新していきます。
具体的にはこの図のようにイベントが発生するごとに情報を更新していきます。この、イベントが発生するごとに更新していくという考え方は非常に重要で今後も出現するので覚えておいてください。
より厳密には、イベントが発生した時刻を
と並べると、
時間 から時間 まではイベントが起きないので、
(時間まで生き残る確率)=(時間 まで生き残る確率)✖️(次に時間 まで生き残った下で、時間を超えて生きる確率)
となり、生存確率は「それまでの生存確率」と「その時点での生き残り確率」の積で計算できるということです。
それまでの生存確率は帰納的に同様に計算できますから、「その時点での生き残り確率」が重要になると考えられます。データに打ち切りがない場合には、「その時点での生き残り確率」は次のようにして推定ができます。
(での生き残り確率)
=
=でイベントが起こらない確率
=
ただし
: で発生したイベント数
: 直前での生存症例数です。
よって、生存関数の推定が、
「生存確率」=「それまでの生存確率」×「その時点での生き残り確率」でできることから、
と表すことができます。
おわりに
このパートでは、打ち切りのない場合の生存関数の推定を行いました。「それまでの生存確率」、「その時点での生き残り確率」として情報を持つことが重要なのでした。
次回は、打ち切りのある場合にどのように考えたら良いかを解説します。
次回記事です。
syleir.hatenablog.com