【学習動機】
つい先日, 生まれてから1万日が経過した. そんなわけなので, 記念に生存時間解析について書く(生存時間解析に関する日本語の良い感じの記事少ないから書く).
生存時間解析をやるとなると, モデルの種類が, ノンパラメトリック(カプランマイヤー法やログランク検定の話), セミパラメトリック(Cox比例ハザードモデルの話), パラメトリック(ワイブル分布や比例ハザードモデル, 加速故障モデルの話)と出てくるが, ここではパラメトリックモデルについてのみ扱うこととする.
パラメトリックモデルに絞っても分量が多いので, 何回かに分けて書く.
今回は, 生存時間の分布関数と生存関数とハザード関数の関係について扱う.
【学習内容】
今回は, パラメトリックモデルに限らず, 生存時間解析一般について共通する話を書く.
生存時間解析では, 起点(time origin)からイベント(死亡, 失敗, 故障, 再発, 寛解など)の発生までの時間のデータ(time to event data)をモデリングする. 以降, 言葉の統一のため, とくに何か書かない場合は, イベント発生までの時間については生存時間と書き, イベントについては死亡と書き, 各データの対象は患者として書くこととする. 生存時間解析という風に, 通常とは別に区切られて扱われているのは, この生存時間のデータは非対称であることと打ち切りが存在することが特徴として挙げられるためである.
さて, ここから生存時間の分布関数と生存関数とハザード関数の関係について書く. この関係性は, 数式展開で度々登場するので, 理解しておく必要がある.
生存時間\(T\)の分布関数(distribution function)は\(t\)以下で死亡する確率であり, \[ F(t)=P(T<t)=\int_0^t {f(u)}du \] 生存関数\(S(t)\)は生存時間が\(t\)以上になる確率であり, \[ S(t)=P(T \geq t)=1-F(t) \] ハザード関数は, 患者が時点\(t\)まで生存したという条件のもとでその時間に死亡する確率である. ハザード率(hazard rate), 瞬間死亡率(instantaneous death rate), 強度率(intensity rate)や死力(force of mortality)などと呼ばれることもある.
\[ h(t) = \lim_{\delta \to 0} {\frac{P(t \leq T < t+\delta | T \geq t)}{\delta}} \] ハザード関数\(h(t)\)は生存時間の確率密度関数\(f(t)\)と生存関数\(S(t)\)で表せる.
また, \(h(t)=-\frac{d}{dt} log S(t)\)と表せる.
これは
となるため. したがって, \(H(t)=\int_0^t{h(u)}du\)とすると(累積ハザード関数(cumulative hazard function)という), \[ S(t)=exp(-H(t)) \] と表せる.
以上見てきたように, 生存時間の分布は, 生存関数, ハザード関数, 累積ハザード関数のどれでも表すことができる. どれか一つを定めれば残りも決まる, 数学的に等価な関係となっている. ただし, 分析の面では等価でない. 分析のしやすさや誤差の出やすさが異なってくる.
比例ハザードと生存関数の関係もここで書いておく.
任意の時点でもハザードが\(a\)倍になるハザードに対応する生存関数は, \(h_a(t)=a*h(t)\) とハザード関数を表すとすると,
となり, ハザードの\(a\)倍は生存関数が\(a\)乗となって現れる.
【参考文献】
- Collett本
基本的にはこれを中心に学習している。数式が追いやすくて分かりやすいと個人的には感じている。
- 大橋本
SASでの解析方法とともに解説している本。文章部分に結構、理解を深めてくれるところが多く、併読している。別に出ている応用編もあるが、あっちはSASの使い方がメインなのと、もう少し難しいことも解説されている。
- クラインバウム本
デカい。スライドとその説明という形で解説される。重くてあんまり読んでいなかったが、デカいだけあって詳しく書いてあることも多いので、これも読まねば。
Maxwellさんがnoteで生存時間解析の解説をしているが、この解説はクラインバウム本に準拠しているようだ。
- ホスマー本
個人的には、あんまり読み心地が良くないからほとんど読めていないが、この本もよく使われているみたい。