臨床研究において「ある薬剤の副作用が発生するまでの時間(Time to event)」を評価する際、避けて通れないのが競合リスク(Competing Risks)の問題である。副作用が出る前に、別の副作用で治療が中止されたり、他病死したりするケースがこれに該当する。
これらは単なる「打ち切り」ではなく、関心のあるイベントの発生を阻害する要因として、設計段階から正しく評価する必要がある。本記事では、R言語を用いて競合リスクを考慮したサンプルサイズを算出する方法を解説する。
競合リスク分析とは何か
通常の生存時間分析(Kaplan-Meier法など)では、観察期間中にイベントが起きなかった症例をすべて一律に「打ち切り」として扱う。しかし、「イベントA(副作用A)が起こると、イベントB(他の理由による中止)は決して起こらない」という状況では、イベントBはイベントAの発生機会を奪う「競合」関係にある。
これらを無視して計算すると、副作用の発生リスクを実際よりも高く見積もってしまう(過大評価)危険がある。競合リスク分析は、こうした複雑な生存環境を正しく評価するための手法である。
なぜサンプルサイズ計算が重要か
研究終了後に「有意差が出なかった」という結果に直面した際、それが「本当に差がない」のか、単に「症例数が足りなかった(検出力不足)」のかを区別することは極めて困難である。
特に競合リスクが存在する場合、「競合イベントによって、本来観察したかったイベントの発生が阻害される」ため、通常の分析よりも多くの症例数が必要になる。事後的な考察で「症例数不足だった」と弁明する事態を避けるためにも、事前の精緻な設計が不可欠である。
Rによる実践例:gsDesign パッケージの活用
臨床試験の設計において標準的な gsDesign パッケージを用い、競合リスクを「脱落(Dropout)ハザード」として組み込む手法を紹介する。
シミュレーションの設定
- 関心イベント: 副作用A(対照群の月間ハザード 0.05 = 1年で約45%発生)
- ハザード比: 0.7(新薬による30%のリスク低減を期待)
- 競合リスク: 他の副作用や患者都合による中止(月間ハザード 0.01 = 年間約11%発生)
- 検定条件: 両側検定(有意水準 5%)、検出力 80%
Rスクリプト
if(!require ("gsDesign")) install.packages("gsDesign")
library(gsDesign)
# 1. パラメータの設定
lambda_C <- 0.05 # 対照群の副作用A発生ハザード
hr <- 0.7 # 期待するハザード比
eta_comp <- 0.01 # 競合リスク(脱落ハザードとして設定)
Ts <- 24 # 全試験期間(24ヶ月)
Tr <- 12 # 登録期間(12ヶ月)
# 2. サンプルサイズ計算
res <- nSurv(
lambdaC = lambda_C,
hr = hr,
eta = eta_comp,
T = Ts,
minfup = Ts - Tr,
alpha = 0.05, # 両側 5%
beta = 0.2, # 検出力 80%
sided = 2 # 両側検定を指定
)
print(res)
結果の解釈
計算を実行すると、以下のような出力が得られる。注目すべきは以下の3点である。
> print(res)
Fixed design, two-arm trial with time-to-event
outcome (Lachin and Foulkes, 1986).
Solving for: Accrual rate
Hazard ratio H1/H0=0.7/1
Study duration: T=24
Accrual duration: 12
Min. end-of-study follow-up: minfup=12
Expected events (total, H1): 246.5321
Expected sample size (total): 507.4021
Accrual rates:
Stratum 1
0-12 42.2835
Control event rates (H1):
Stratum 1
0-Inf 0.05
Censoring rates:
Stratum 1
0-Inf 0.01
Power: 100*(1-beta)=80%
Type I error (1-sided): 100*alpha=5%
Equal randomization: ratio=1
>
- Expected events (total, H1): 247件 統計的な有意差を証明するために必要な「副作用A」の発生数である。試験全体でこの件数が発生するまで追跡を行う必要がある。
- Expected sample size (total): 508名 競合リスクを考慮した結果、最終的に登録すべき総症例数は508名(各群254名)となった。
- Accrual rates: 42.28 12ヶ月の登録期間で目標数に達するためには、月間約42名のペースで症例を組み入れる必要があることを示している。
サンプルサイズ設計時の注意点
競合リスク(eta)の感度分析
もし対象患者が高齢である、あるいは併用薬が多いなどの理由で「他の理由による中止(eta)」が想定より高くなる(例:月 2%)場合、必要なサンプルサイズ n はさらに増加する。現場の実情に合わせた慎重な見積もりが求められる。
ハザード率の変換
累積発生率(%)からハザード率(lambda)を求める際は、以下の式で近似できる。
$$\lambda = -\frac{\ln(1 – \text{発生率})}{T}$$
例えば、「1年(12ヶ月)で20%発生する」と予想する場合、$\lambda = -\ln(1 – 0.2) / 12 \approx 0.0186$ となる。
まとめ
競合リスクは、臨床現場における「治療中止」や「他病死」という避けて通れない現実を統計モデルに反映させたものである。gsDesign を活用することで、これらのリスクを織り込んだ「負けない研究設計」が可能となる。
根拠に基づいた症例数を確保することは、研究の科学的妥当性と倫理性を担保するための第一歩である。
おすすめ書籍
誰も教えてくれなかった 医療統計の使い分け〜迷いやすい解析手法の選び方が,Rで実感しながらわかる!




コメント