高齢者のコホートで、ある疾患への進展率を推定するケースがあります。追跡中に進展しないまま亡くなる患者が多数いて、その人たちは進展の観察対象から外れます。
ここでKaplan-Meier推定量を使い、死亡を打ち切りとして扱うと、進展率は実際より高く出ます。打ち切りは「その後も観察が続けば、いずれ進展したかもしれない人」として扱われますが、亡くなった患者は二度と進展しないからです。
この構造を競合リスクと呼びます。関心のある事象の発生を妨げる別の事象があり、そちらが先に起きると対象から永久に外れる。がん研究の他死因死亡、心血管研究の非心血管死、移植研究の再移植。高齢者を扱う研究では避けて通れません。
打ち切りとして扱うとどれだけズレるか
survivalパッケージのmgus2は、意義不明の単クローン性ガンマグロブリン血症1384例の追跡記録です。関心のある事象は形質細胞腫瘍への進展で115件、進展しないままの死亡が860件あります。診断時年齢の中央値が高いため、競合事象のほうが圧倒的に多くなります。
library(survival)
m <- mgus2
m$etime <- with(m, ifelse(pstat == 0, futime, ptime))
m$event <- factor(with(m, ifelse(pstat == 0, 2*death, 1)),
0:2, c("censor", "pcm", "death"))
wrong <- survfit(Surv(etime, event == "pcm") ~ 1, data = m) # 死亡を打ち切り扱い
right <- survfit(Surv(etime, event) ~ 1, data = m) # 競合リスクを扱う
#> 時点 1-KM 累積発生関数 比
#> 120か月 0.0952 0.0637 1.49
#> 240か月 0.2096 0.0998 2.10
#> 360か月 0.4248 0.1340 3.17

3倍の差は誤差の範囲ではありません。42.5%と報告するか13.4%と報告するかで、患者への説明も、次の研究の設計も変わります。
原因別ハザードと累積発生関数
競合リスクでは、事象の種類ごとにハザードを定義します。事象$k$の原因別ハザードは
$$h_k(t) = \lim_{\Delta t \to 0} \frac{P(t \le T < t+\Delta t,\ K = k \mid T \ge t)}{\Delta t} \tag{1}$$
です。式(1)の条件は$T \ge t$、つまり「まだどの事象も起きていない人」のなかで、事象$k$がどの速さで起きるか。ハザード関数の定義をそのまま事象別にしたものです。
知りたいのが「$t$までに事象$k$が起きた人の割合」なら、別の量が要ります。累積発生関数です。
$$F_k(t) = \int_0^t S(u)\,h_k(u)\,du \tag{2}$$
式(2)の$S(u)$は、どの事象も起きていない確率です。ここが要点で、事象$k$の発生確率は$k$自身のハザードだけでは決まりません。競合事象のハザードが高ければ$S(u)$が速く下がり、$F_k(t)$も低く抑えられます。
Kaplan-Meier推定量が過大評価するのは、式(2)の$S(u)$を「事象$k$以外を無視した生存確率」で置き換えてしまうためです。競合事象で脱落した人を、まだ$k$を起こしうる集団に残したまま計算することになります。
推定にはAalen-Johansen推定量を使います。Rではsurvfitに多値の因子を渡すだけで、内部で切り替わります。全ての事象の$F_k(t)$と生存確率を足すと1になるので、図1右のような積み上げが描けます。1-KMにはこの性質がありません。
どちらの問いに答えるかで検定が変わる
群間比較でも同じ区別が要ります。mgus2を性別で比べます。
survdiff(Surv(etime, event == "pcm") ~ sex, data = m) # 原因別ハザード
coxph(Surv(etime, event == "death") ~ sex, data = m) # 競合事象のほう
#> 進展の原因別ハザード(log-rank) chisq 0.1 p = 0.8
#> 進展の原因別ハザード比 0.94 (0.65-1.36)
#> 死亡の原因別ハザード比 1.26 (1.10-1.44)
#> 進展のサブ分布ハザード比 0.80 (0.56-1.13)


「男性のほうが進展しやすいか」という問いは、実は2通りに読めます。進展の生物学的な起きやすさを聞いているなら原因別ハザード、この集団で最終的に何割が進展するかを聞いているなら累積発生関数です。前者はログランク検定、後者はGray検定が対応します。
Gray検定は累積発生関数そのものを群間で比べる検定で、cmprskパッケージのcuminc関数で計算できます。survivalパッケージだけで済ませるなら、finegray関数で重み付きデータを作ってスコア検定を見る方法があり、漸近的に同じ問いに答えます。この例では$\chi^2 = 1.51$、p=0.22でした。
どちらを主要な解析にするか
2つの指標は競合しません。答えている問いが違うだけです。ただし論文には主要な解析を1つ決めて書く必要があります。
病因を論じるなら原因別ハザードです。「この遺伝子多型は進展を促進するか」という問いは、進展しうる状態にある人のなかでの速さの話なので、競合事象を打ち切って構いません。生物学的機序を語る文脈では、こちらが自然です。
予後や医療資源を論じるなら累積発生関数です。「この患者集団の何割が10年以内に進展するか」「そのために何床必要か」という問いには、競合事象で脱落する人も込みの絶対リスクが要ります。患者に説明する数字もこちらです。
私が受ける相談では、後者を知りたいのに前者で解析されている例が多数を占めます。予後を語る論文で1-KMが使われていたら、まず競合事象の件数を確認します。mgus2のように競合事象が関心事象の7倍あるデータなら、指標の選択が結論を左右します。
競合事象が少なければ差は小さくなります。目安として、競合事象の件数が関心事象より明らかに少なく、追跡も短いなら、1-KMと累積発生関数はほとんど一致します。図1で乖離が広がるのは追跡が伸びてからです。それでも、競合リスクの構造があるなら累積発生関数で報告するほうが安全でしょう。過大評価する側に外れるためです。
何を競合事象とするか
競合事象の定義は、研究の問いで決まります。同じデータでも、問いが変われば何を競合とするかが変わります。
「骨髄腫を発症するか」が関心なら、それ以外の全ての死亡が競合事象です。「骨髄腫または他の血液腫瘍を発症するか」なら、他の血液腫瘍は競合ではなく関心事象の一部になります。
迷いやすいのが、関心事象の後に起きる出来事です。進展後の死亡は競合事象ではありません。既に関心事象が起きているので、その患者は進展の観測対象から外れています。競合事象になるのは、関心事象が起きる前にそれを妨げる出来事だけです。
もうひとつ、打ち切りと競合事象の区別も要ります。転院による追跡不能は打ち切りです。その患者は理論上、進展しうる状態のまま観察が途切れただけだからです。死亡は異なります。二度と進展しません。この区別をデータ抽出の段階で明確にしておかないと、解析で直せません。
症例数への影響
競合リスクがあると、必要な症例数が増えます。関心事象が起きる前に競合事象で抜ける患者がいるためです。
mgus2では1384例のうち関心事象は115件でした。競合事象がなければ、同じ追跡期間でもっと多くの進展が観測されたはずです。設計段階でこの目減りを織り込まないと、計画したイベント数に届きません。
高齢者を対象にした研究では、この影響が大きく出ます。他死因死亡率が高いほど関心事象の観測数が減るので、若年者を対象にした先行研究のイベント発生率をそのまま使うと、症例数を過小に見積もります。対象集団の年齢構成に合わせた他死因死亡率を、生命表から取り込んで見積もることになります。
報告の仕方
事象ごとの件数を必ず書きます。関心事象が何件、競合事象が何件、打ち切りが何件。この3つがないと、読者は指標の選択が妥当か判断できません。
累積発生関数を使ったなら、Aalen-Johansen推定量であることと、競合事象として何を扱ったかを明記します。「死亡を競合リスクとした累積発生関数」と書けば伝わります。1-KMを併記する必要はありませんが、先行研究が1-KMを使っている場合は、数値が違う理由を考察で触れると読者が混乱しません。
図は、関心事象だけでなく競合事象の曲線も出すことを勧めます。図3のように並べると、群間差の機序が読者に伝わります。関心事象だけを見せると、なぜ差がついたのかが分かりません。
群間比較の検定は、原因別ハザードならログランク検定、累積発生関数ならGray検定。どちらを使ったかを書きます。両方載せるのは構いませんが、主要評価をどちらに置いたかは事前に決めておきます。
次に確かめること
共変量調整が必要なら、原因別ハザードにはCox比例ハザードモデルをそのまま使えます。競合事象を打ち切りとして扱うだけです。累積発生関数を共変量で調整したい場合は、サブ分布ハザードを回帰の枠組みに載せたFine-Grayモデルを使います。これは次の記事で扱います。
進展と死亡の両方を1つの枠組みで記述したいなら、マルチステートモデルという選択肢もあります。図1右の積み上げは、状態間の遷移として書き直せます。
打ち切りの扱いそのものは打ち切りと左切断、曲線の推定はKaplan-Meier推定量で扱いました。
予後の報告に原因別ハザードと累積発生関数のどちらを置くか、競合事象として何を定義するか。このあたりは研究の目的とコホートの年齢構成を見ないと決まりません。Dr.データサイエンスでは、こうした解析設計のご相談を承っています。
参考文献
Gray RJ. A class of K-sample tests for comparing the cumulative incidence of a competing risk. Annals of Statistics. 1988;16(3):1141-1154.
Putter H, Fiocco M, Geskus RB. Tutorial in biostatistics: competing risks and multi-state models. Statistics in Medicine. 2007;26(11):2389-2430.
Andersen PK, Geskus RB, de Witte T, Putter H. Competing risks in epidemiology: possibilities and pitfalls. International Journal of Epidemiology. 2012;41(3):861-870.
Koller MT, Raatz H, Steyerberg EW, Wolbers M. Competing risks and the clinical community: irrelevance or ignorance? Statistics in Medicine. 2012;31(11-12):1089-1097.
Kyle RA, Therneau TM, Rajkumar SV, et al. A long-term study of prognosis in monoclonal gammopathy of undetermined significance. New England Journal of Medicine. 2002;346(8):564-569.


