統計学

Cox比例ハザード解析

$\gdef \vec#1{\boldsymbol{#1}} \\ \gdef \rank {\mathrm{rank}} \\ \gdef \det {\mathrm{det}} \\ \gdef \Bern {\mathrm{Bern}} \\ \gdef \Bin {\mathrm{Bin}} \\ \gdef \Mn {\mathrm{Mn}} \\ \gdef \Cov {\mathrm{Cov}} \\ \gdef \Po {\mathrm{Po}} \\ \gdef \HG {\mathrm{HG}} \\ \gdef \Geo {\mathrm{Geo}}\\ \gdef \N {\mathrm{N}} \\ \gdef \LN {\mathrm{LN}} \\ \gdef \U {\mathrm{U}} \\ \gdef \t {\mathrm{t}} \\ \gdef \F {\mathrm{F}} \\ \gdef \Exp {\mathrm{Exp}} \\ \gdef \Ga {\mathrm{Ga}} \\ \gdef \Be {\mathrm{Be}} \\ \gdef \NB {\mathrm{NB}} \\ \gdef \indep {\mathop{\perp\!\!\!\!\perp}} \\ \gdef \tr {\mathrm{tr}}$

すたどく

今回は生存関数$S(t)$の検定として、Cox比例ハザード解析を扱います。

学習者

Cox比例ハザード解析は生存時間解析で最もよく使われてるイメージがあります。何となく統計ソフトで使ってましたが、その仕組みを理解したいと思います。

1. Cox比例ハザードモデル

Cox比例ハザード解析とはCox比例ハザードモデルに基づく生存時間解析です。
このモデルはその名の通りハザード関数に基づくモデルとなっています。
具体的には、Cox比例ハザードモデル$h(t; \vec x_i)$は、


・ベースラインハザード$h_0(t)$
・説明変数ベクトル$\vec x_i ~~ (=(x_{i,1},\cdots, x_{i,d})^{\top} ~~ \small{(i=1,\cdots, n)} )$
・回帰係数ベクトル$\vec \beta ~~ (= (\beta_{1}, \cdots, \beta_d)^{\top} )$


を用いて、
$$\begin{aligned} h(t;\vec x_i) &= h_0 (t) \cdot \exp (\vec \beta^{\top} \vec x_i) \\ &= h_0 (t) \cdot \exp \{ \beta_1 x_{i,1} + \cdots + \beta_d x_{i,d} \} ~~~~~ \mathrm{(A)} \end{aligned}$$と定義されます。




この様に、関数形をパラメトリックに(有限次元のパラメータを用いて)定義しない部分(今回の場合は”$h_0 (t)$”)を含むモデルを『セミパラメトリックモデル』といいます。

すたどく

Cox比例ハザードモデルは、ハザード$h(t;\vec x_i)$がベースラインハザード$h_0 (t)$の(時間$t$に依らない)定数倍になっていて、『定数倍』については個人の特性(説明変数)に応じて変化するわけです。

2. 比例ハザード性

Cox比例ハザードモデルの重要な性質として、その名に含まれる通り『比例ハザード性』があります。

(説明)
異なる説明変数ベクトル$\vec x_i, \vec x_j$に対して、そのハザード比$\dfrac{h(t;\vec x_j)}{h(t;\vec x_i)}$は、
$$\begin{aligned} \dfrac{h(t;\vec x_j)}{h(t;\vec x_i)} &= \dfrac {h_0 (t) \cdot \exp \{ \beta_1 x_{j,1} + \cdots + \beta_d x_{j,d} \}} {h_0 (t) \cdot \exp \{ \beta_1 x_{i,1} + \cdots + \beta_d x_{i,d} \}} \\[10px] &= \exp \{ \beta_1 (x_{j,1}-x_{i,1}) + \cdots + \beta_d (x_{j,d}-x_{i,d}) \} \\[10px] &= \small{(Const)} \end{aligned}$$となります。




つまり、$h(t;\vec x_j)$は$h(t;\vec x_i)$の時間$t$に依らない定数倍になっているということで、これを『比例ハザード性』と言います

(補足)
比例ハザード性が成立するのは、ひとえにベースラインハザード$h_0 (t)$が共通しているためです。




またここで、
$$\begin{aligned} \vec x_i &=(x_{1},\cdots, x_{k-1}, x_{k}, x_{k+1},\cdots, x_{d})^{\top} \\ \vec x_j &=(x_{1},\cdots, x_{k-1}, x_{k} \textcolor{red}{+ 1}, x_{k+1},\cdots, x_{d})^{\top} \end{aligned}$$と説明変数ベクトルの$k$番目が1だけずれた場合について、そのハザード比は、
$$\begin{aligned} \dfrac{h (t; \vec x_j)}{h (t; \vec x_i)} &= \exp \{ \beta_1 (x_1-x_1) + \cdots + \beta_{k-1} (x_{k-1}-x_{k-1}) + \beta_k (x_k \textcolor{red}{+ 1}-x_k) + \\ &\beta_{k+1} (x_{k+1}-x_{k+1}) + \cdots + \beta_d (x_d-x_d) \} \\ &= \exp (\beta_k) \end{aligned}$$となります。




つまり$k$番目の説明変数が1だけ大きくなる時、ハザード関数は$\exp (\beta_k)$倍となります。この事実は回帰係数$\beta_k$の解釈として重要です

3. Cox比例ハザード解析の流れ

以下簡易verと詳細verを準備してるので、さっと概要のみを抑えたい方は簡易verを、計算式で詳細を追いたい方は詳細verまで参照してください。

3-1. 簡易ver

ハザード関数$h(t;\vec x_i)$が、例えば、
$$\begin{aligned} h(t;\vec x_i) &= h_0 (t; \alpha) \cdot \exp \{ \beta_1 x_{i,1} + \cdots + \beta_d x_{i,d} \} \\ &{\scriptsize (h_0(t;\alpha)とはここに含まれるパラメータが\alphaのみであることを表す)} \end{aligned}$$の様にかけるとすると、このモデルのパラメータは$\alpha, \beta_1, \cdots, \beta_d$となります。 (パラメトリックモデル




一方のCox比例ハザードモデルでは、
$$\begin{aligned} h(t; \vec x_i) &= h_0 (t) \cdot \exp \{ \beta_1 x_{i,1} + \cdots + \beta_d x_{i,d} \} \end{aligned}$$の様に書かれ、このモデルのパラメータは$h_0 (t), \beta_1, \cdots, \beta_d$となります。
セミパラメトリックモデル




上のパラメトリックモデルにおける$h_0 (t; \alpha)$は例えば、
$$\begin{aligned} h_0 (t; \alpha) = 3 \alpha t + \alpha^2 \end{aligned}$$の様に$t, \alpha$を用いて定式化されますが、 上のセミパラメトリックモデルにおける$h_0 (t)$ではその様な定式化はなされず、$h_0 (t)$自体をひとつのパラメータととらえます。




パラメトリックモデルであれば、<生存時間解析の基本概念>で扱った尤度関数$L$(または対数尤度関数$l$)を最大化するパラメータを求めれば良いわけですが、セミパラメトリックモデルではこの様にパラメータを求めることが困難です。


そこで、セミパラメトリックモデルの一種であるCox比例ハザードモデルにおいては、尤度の代わりとなる『部分尤度』と呼ばれる量を最大化することで、興味あるパラメータ($\beta_1, \cdots, \beta_d$)を求めます。

3-2. 詳細ver

興味あるパラメータ$\beta_1, \cdots, \beta_d$を求めるために最大化すべき『部分尤度』がどの様な形になるかを確認するために以下計算していきます。


ただし、簡単のために以下の条件の下での計算をします。

・イベントには重複がない
・イベントが生じうる時間$t$は$t=1,2,\cdots$と離散的である(よって、ハザード関数、累積ハザード関数も離散的である)




準備として以下の通りとします。
$$\begin{aligned} h(t;\vec x_i) &= h_0 (t) \cdot \exp (\vec \beta^{\top} \vec x_i) \\ &= h_0 (t) \cdot \exp \{ \beta_1 x_{i,1} + \cdots + \beta_d x_{i,d} \} \\[10px] E_i &= \begin{cases} 1 ~~ {\small (観測時間内にイベントの発生あり)} \\ 0 ~~ {\small (観測時間内にイベントの発生なし)} \end{cases} \\[10px] D &= \sum_i E_i \end{aligned}$$


この時『部分尤度』とは以下の形になります。
$$\begin{aligned} &\prod_{j=1}^{D} \dfrac {\exp (\vec \beta^{\top} \vec x_j)} {\sum_{i \in R_j} \exp (\vec \beta^{\top} \vec x_i)} \\ &{\scriptsize(ただしR_jはt_j直前においてイベントが発生しうる個体の集合を表す)} \end{aligned}$$


この『部分尤度』はCoxさんの原著において、尤度関数の一部分として定義されてます。 以下ではこの『部分尤度』が、尤度関数の一部分としてCoxさんが定義したのとは別の流れでも導出されることを以下確認します。

(部分尤度の導出)
まず尤度関数$L(\vec \beta, h_0)$は、
$$\begin{aligned} L(\vec \beta, h_0) &\propto \prod_{i=1}^{n} \{ h(t_i) \}^{E_i} \cdot \exp \{ – H(t_i) \} ~~~~~ \mathrm{(*)} \\[10px] &= \prod_{i=1}^{n} \{ h_0 (t_i) \cdot \exp (\vec \beta^{\top} \vec x_i) \}^{E_i} \cdot \exp \{ -H_0 (t_i) \cdot \exp (\vec \beta^{\top} \vec x_i) \} \\[10px] &= \prod_{j=1}^{D} \{ h_0 (t_j) \cdot \exp (\vec \beta^{\top} \vec x_j) \} \cdot \exp \{ – \sum_{i=1}^{n} H_0 (t_i) \cdot \exp (\vec \beta^{\top} \vec x_i) \} \\ &{\scriptsize (t_jはイベント発生時点を表す)} \end{aligned}$$となります。

$(*)$:<生存時間解析の基本概念> > 3.1では、$C_i = \vec 1 \{ V_i \leqq X_i \}$ (打ち切りがなければ$0$、あれば$1$)、を用いて尤度$L$は、
$$\begin{aligned} L &\propto \prod_{i=1}^{n} f (t_i)^{1-C_i} S(t_i)^{C_i} \end{aligned}$$と紹介しました。




今回は$C_i$ではなく$E_i$を用いてますが、
$$\begin{aligned} C_i = 1-E_i \end{aligned}$$の関係にあります。

すたどく

これは、最後まで観察された症例も形上打ち切りが生じたとみなすと、すべての症例が打ち切りあり(イベント発生なし)、または、打ち切りなし(イベント発生あり)、に割り振ることができるからですね。

これと、<生存時間解析の基本概念> > 2 > おまけ1/2、で紹介したとおり、

・$H(t) = – \log S(t)$
・$f(t) = h(t) S(t)$

であることを用いると以下の様になります。
$$\begin{aligned} L &\propto \prod_{i=1}^{n} f (t_i)^{1-C_i} S(t_i)^{C_i} \\[10px] &= \prod_{i=1}^{n} f (t_i)^{E_i} S(t_i)^{1-E_i} \\[10px] &= \prod_{i=1}^{n} \{ h(t_i) S(t_i) \}^{E_i} S(t_i)^{1-E_i} \\[10px] &= \prod_{i=1}^{n} h(t_i)^{E_i} S(t_i) \\[10px] &= \prod_{i=1}^{n} h(t_i)^{E_i} \cdot \exp\{ -H(t_i) \} \end{aligned}$$

(部分尤度の導出〜第一段階(開始))
$L(\vec \beta, h_0)$を最大化することを考えるにあたり、まずは$\vec \beta$をfixした上で$h_0 (,H_0)$について最大化することを考えます。




$H_0$が小さいほど$L(\vec \beta, h_0)$が大きくなるので、イベントが発生する時点を除いて$h_0 (t) = 0$が成立する時に$L(\vec \beta, h_0)$は最大化されます




そこで、
$$\begin{aligned} h_{0j} = h_0 (t_j) ~~~~~ \small{(j=1, \ldots, D)} \end{aligned}$$とすると、
$$\begin{aligned} H_0 (t_i) &= \sum_{t \leqq t_i} h_{0} (t) \\ &= \sum_{j:t_{j} \leqq t_i} h_{0j} \end{aligned}$$と書くことができます。




よって、
$$\begin{aligned} L_{\vec \beta} (h_{01}, \ldots, h_{0D}) &\propto \prod_{j=1}^{D} \{ h_{0j} \cdot \exp (\vec \beta^{\top} \vec x_j) \} \cdot \exp \{ – \sum_{i=1}^{n} \sum_{j:t_{j} \leqq t_i} h_{0j} \cdot \exp (\vec \beta^{\top} \vec x_i) \} \\[10px] &= \prod_{j=1}^{D} \{ h_{0j} \cdot \exp (\vec \beta^{\top} \vec x_j) \} \cdot \exp \{ – \sum_{j=1}^{D} \sum_{i \in R_j} h_{0j} \cdot \exp (\vec \beta^{\top} \vec x_i) \} \\ &{\scriptsize(ただしR_jはt_j直前においてイベントが発生しうる個体の集合を表す)} \\[10px] &= \prod_{j=1}^{D} \{ h_{0j} \cdot \exp (\vec \beta^{\top} \vec x_j) \} \cdot \exp \{ – \sum_{j=1}^{D} h_{0j} \cdot \sum_{i \in R_j} \exp (\vec \beta^{\top} \vec x_i) \} ~~~~~ \mathrm{(A)} \end{aligned}$$


$\log$をとると、
$$\begin{aligned} \log L_{\vec \beta} (h_{01}, \ldots, h_{0D}) = \sum_{j=1}^{D} \{ \log h_{0j} + \vec \beta^{\top} \vec x_j \} – \sum_{j=1}^{D} h_{0j} \cdot \sum_{i \in R_j} \exp (\vec \beta^{\top} \vec x_i) \end{aligned}$$


これを$h_{0j} ~~ \small{(j=1,\ldots,D)}$について最大化すると(上式右辺を$h_{0j}$で偏微分して$=0$としたものを解くと)、
$$\begin{aligned} \hat{h}_{0j} &= \dfrac {1} {\sum_{i \in R_j} \exp (\vec \beta^{\top} \vec x_i)} \\ \Rightarrow \hat{H}_0 (t) &= \sum_{j:t_{j} \leqq t_i} \dfrac {1} {\sum_{i \in R_j} \exp (\vec \beta^{\top} \vec x_i)} \end{aligned}$$
(部分尤度の導出〜第一段階(終了))


(部分尤度の導出〜第二段階(開始))
つづいて上記のとおり求めた$\hat{h}_0$を代入して$\vec \beta$について最大化することを考えます。


$$\begin{aligned} L (\vec \beta, \hat{h}_0) &\propto \prod_{j=1}^{D} \{ \hat{h}_{0j} \cdot \exp (\vec \beta^{\top} \vec x_j) \} \cdot \underbrace{ \prod_{j=1}^{D} \exp \{ – \textcolor{red}{\hat{h}_{0j} \cdot \sum_{i \in R_j} \exp (\vec \beta^{\top} \vec x_i)} \}}_{\exp内の赤文字部分は上記より1になるため、ここは定数} \\ &{\scriptsize(\mathrm{(A)}を少々変形した)} \\[10px] &\propto \prod_{j=1}^{D} \dfrac {\exp (\vec \beta^{\top} \vec x_j)} {\sum_{i \in R_j} \exp (\vec \beta^{\top} \vec x_i)} ~~~~~ \mathrm{(B)} \\ &{\scriptsize(上記\hat{h}_0を代入した)} \end{aligned}$$


この時$\mathrm{(B)}$は冒頭の形と一致しています。
(部分尤度の導出〜第二段階(終了))

すたどく

実は、今回ここで導出したものは『profile尤度』と呼ばれるものです。あるパラメータについて尤度を最大化して、また別のパラメータについて尤度を最大化して、、、としていく導出を『ヒューリスティックな導出』と言いますが、それにより導出されるのがこの『profile尤度』なのです。
部分尤度』自体はCoxさんが定義したものであり(興味ある方は原著を参照ください)、profile尤度という別の視点からも同じ形がでてくることを確認したわけです。

4. 比例ハザード性の確認

Cox比例ハザードモデルを仮定した解析を行う場合には、その仮定である『比例ハザード性』が成立する必要があり、それを確認しておく必要があります。


さて、『性別』という変数の中身として『男性』『女性』があるとして、『性別』を説明変数に、『死亡』を被説明変数にしたCox比例ハザード解析を行うことにします。


その場合の比例ハザード性の確認の方法として、結論からすると、男性の$\log ( -\log S (t) )$、女性の$\log ( -\log S (t) )$をそれぞれプロットしてそれらが並行であれば比例ハザード性が成立してるものとみなします。詳しくは、下記のFigと説明を参照ください。


Fig.

(説明)
$h(t; \vec x_i) = h_0 (t) \cdot \exp (\vec \beta^{\top} \vec x_i)$を前提とします。




すると、生存関数$S(t; \vec x_i)$について、
$$\begin{aligned} S(t; \vec x_i) &= \exp [-\int_0^t h(s; \vec x_i) ds] \\ &{\scriptsize(h(t) = -\frac{d}{dt} \log S(t)より変形)} \\[10px] &= \exp [-\int_0^t h_0 (s) \cdot \exp (\vec \beta^{\top} \vec x_i) ds] \\ &{\scriptsize(h(t; \vec x_i) = h_0 (t) \cdot \exp (\vec \beta^{\top} \vec x_i))} \\[10px] &= \{ S_0 (t) \}^{\exp (\vec \beta^{\top} \vec x_i)} \\ &{\scriptsize(ただしS_0 (t) := \exp[-\int_0^t h_0 (s) ds])} \end{aligned}$$となり、これより、
$$\begin{aligned} \log ( -\log S (t; \vec x_i) ) = \log ( -\log S_0 (t) ) + \vec \beta^{\top} \vec x_i \end{aligned}$$となります。




よって、異なる$\vec x_i, \vec x_j$について、
$$\begin{aligned} \log ( -\log S (t; \vec x_i) ) &= \textcolor{red}{\log ( -\log S_0 (t) )} + \vec \beta^{\top} \vec x_i \\[10px] \log ( -\log S (t; \vec x_j) ) &= \textcolor{red}{\log ( -\log S_0 (t) )} + \vec \beta^{\top} \vec x_j \end{aligned}$$となります。(赤文字部分は共通)

つまり、比例ハザード性が成立していれば、$\log ( -\log S (t; \vec x_i) ), \log ( -\log S (t; \vec x_j) )$は、$\vec \beta^{\top} \vec x_i-\vec \beta^{\top} \vec x_j$という定数分だけずれることになります。


これはプロット上においては、$\log ( -\log S (t; \vec x_i) )$と$\log ( -\log S (t; \vec x_j) )$が平行であることと同じです。

学習者

生存関数$S(t)$は<カプランマイヤー推定量・曲線とログランク検定>であつかった通りプロットすることができましたが、ここでは$\log ( -\log S (t) )$を層別にプロットして比例ハザード性を確認するわけですね。ちなみに、比例ハザード性を確認する検定はあるのでしょうか?

すたどく

はい。比例ハザード性を確認する検定として『Schoenfeld残差検定』などがありますが、この様な検定では帰無仮説が『比例ハザード性が成立する』と置かれてるため、帰無仮説が棄却された場合には積極的に『比例ハザード性が不成立』と主張できます。しかし、見た目には比例ハザード性が成立していそうでも、サンプルサイズやイベント発生数が大きくなると小さな差をも検出してしまい、帰無仮説が棄却される可能性が高くなります。


比例ハザード性の確認にあたってはこの様な検定に言及した医学論文は数少ないため、基本的にはプロットをして比例ハザード性が成立してそうなことを確認すればよいのかと思います(私見です)。

学習者

わかりました。ところでプロット的に明らかに比例ハザード性が成立してない時にはどのように解析すればよいのでしょうか?

すたどく

比例ハザード性が成立しない場合にはCox比例ハザードモデルを仮定した解析は成立しません。その場合には以下の様な対応が可能ですが、いずれが望ましいかについて一定の見解はない様です。


①時間依存性の説明変数をモデルに組み込む
②層別に(ある説明変数についてそのカテゴリーごとに)、異なるベースラインハザードを用いる
③$h(t; \vec x_i) = h_0 (t) \cdot \exp { \beta_1 x_{i,1} + \cdots + \beta_d x_{i,d} }$の、”$\beta_1 x_{i,1} + \cdots + \beta_d x_{i,d}$”に対して非線形変換を施す

まとめ.

  • Cox比例ハザードモデルに基づく解析においては、部分尤度を最大化するパラメータを求める。

  • $k$番目の説明変数が1だけ大きくなる時、ハザード関数は$\exp (\beta_k)$倍となる。

  • Cox比例ハザードモデルは『比例ハザード性』の仮定の上に成立しており、このモデルを使用する際には$\log ( -\log S (t) )$を層別にプロットして平行であることを確認することで、その比例ハザード性が成立することを確認できる。
他の記事を参照されたい方はこちら

 サイトマップからお好きな記事をお探しください。