非劣性試験のサンプルサイズ計算
生存時間データの場合
非劣性試験のサンプルサイズ計算 生存時間データの場合 例 1
各記号の意味は以下のとおり。
- t:観察期間。
- S1とS0:それぞれ治療群とコントロール群の生存率。
- dF:Freedmanの方法による各群必要な死亡症例数。
- dS:Schoenfeldの方法による各群必要な死亡症例数。
- Delta.S0:非劣性マージン。
R スクリプトは以下のようになる。
sample.size.cox.noninf <- function(t,S1,S0,Delta.S0,
alternative=c("one.sided","two.sided"),power=.8,
sig.level=.05){
alternative <- match.arg(alternative)
tside <- switch(alternative, one.sided=1, two.sided=2)
beta <- log(log(S1)/log(S0))
H1 <- -1*log(S1)/t
H0 <- -1*log(S0)/t
HR <- H1/H0
H0.prime <- -1*log(S0-Delta.S0)/t
HR.prime <- H1/H0.prime
Za <- qnorm(sig.level/tside, lower.tail=FALSE)
Zb <- qnorm(power)
dF <- (Za+Zb)^2*(HR.prime+1)^2/(2*(HR.prime-1)^2)
nF <- dF/(((1-S1)+(1-S0))/2)
dS <- 2*(Za+Zb)^2/((log(HR.prime))^2)
nS <- dS/(((1-S1)+(1-S0))/2)
NOTE <- "n is number in *each* group"
METHOD <- "Sample Size of Cox Model (noninferiority)"
structure(
list(
"Death (Freedman)" = dF,
"Number (Freedman)" = nF,
"Death (Schoenfeld)" = dS,
"Number(Schoenfeld)" = nS,
"Survival trt(S1)" = S1,
"Survival ctl(S0)" = S0,
"Noninf. margin"= Delta.S0,
"Hazard trt(H1)" = H1,
"Hazard ctl(H0)" = H0,
"H0 w/ margin" = H0.prime,
"Hazard ratio(HR)" = HR,
"HR w/ margin" = HR.prime,
"Follow up(y)" = t,
sig.level = sig.level,
power = power,
alternative = alternative,
note = NOTE,
method = METHOD),
class = "power.htest")
}
非劣性マージンの考え方はこちらを参照。
観察期間5年、治療群の生存率が80%、コントロール群の生存率が65%、非劣性マージンは相対10%で、0.065=6.5%として、両側検定とすると、
- Freedmanの方法では、一群84例必要、
- Schoenfeldの方法では、一群75例必要
と計算される。
> sample.size.cox.noninf(t=5, S1=0.8, S0=0.65, Delta.S0=0.065, alternative="two.sided")
Sample Size of Cox Model (noninferiority)
Death (Freedman) = 23.09411
Number (Freedman) = 83.97858
Death (Schoenfeld) = 20.42905
Number(Schoenfeld) = 74.28746
Survival trt(S1) = 0.8
Survival ctl(S0) = 0.65
Noninf. margin = 0.065
Hazard trt(H1) = 0.04462871
Hazard ctl(H0) = 0.08615658
H0 w/ margin = 0.1072287
Hazard ratio(HR) = 0.5179954
HR w/ margin = 0.4162012
Follow up(y) = 5
sig.level = 0.05
power = 0.8
alternative = two.sided
NOTE: n is number in *each* group
Freedmanの方法はSchoenfeldの方法よりいつも大きめのサンプルサイズになる。
Schoenfeld式の結果は、サンプルサイズを過小評価しているという指摘がある。
安全確実に見積もるならFreedmanの方法、症例があまり集まりそうでない場合はSchoenfeldの方法という判断基準でよいと思う。
非劣性試験のサンプルサイズ計算 生存時間データの場合 例 2
試験デザインは試験薬と対照薬の2投与群の無作為比較試験。
追跡期間5年で、主要評価項目はOverall survival。
試験薬のOverall survivalの非劣性を証明するための必要サンプルサイズを算出したい。
想定される5年生存率は両群とも95%で、非劣性マージンは5%に設定、片側α=0.05、検出率=0.8を考えている。
実際に計算してみると、Freedman式では、520例必要と計算された。
Schoenfeld式では、478例必要と計算された。
> sample.size.cox.noninf(t=5, S1=0.95, S0=0.95, Delta.S0=0.05, alternative="one.sided")
Sample Size of Cox Model (noninferiority)
Death (Freedman) = 25.95087
Number (Freedman) = 519.0175
Death (Schoenfeld) = 23.86386
Number(Schoenfeld) = 477.2773
Survival trt(S1) = 0.95
Survival ctl(S0) = 0.95
Noninf. margin = 0.05
Hazard trt(H1) = 0.01025866
Hazard ctl(H0) = 0.01025866
H0 w/ margin = 0.0210721
Hazard ratio(HR) = 1
HR w/ margin = 0.486836
Follow up(y) = 5
sig.level = 0.05
power = 0.8
alternative = one.sided
NOTE: n is number in *each* group
かなり膨大な症例数である。
こういう場合は、想定に無理があると考えたほうが良い。
非劣性試験のサンプルサイズ計算 生存時間データの場合 例 3 追跡期間を延長する
追跡期間を10年にするとどうなるか?
その他の条件は同じで、想定される5年生存率は両群とも95%で、非劣性マージンは5%に設定、片側α=0.05、検出率=0.8とする。
わかっている生存率が5年生存率なので、10年まで観察した時の生存率を指数関数を使って予測する。
## 5年生存率をRとする
R <- 0.95
## 1年死亡率を計算
(r <- 1-R^(1/5))
## 10年生存率を計算
(1-r)^10
結果、10年生存率は0.9025(90.25%)と計算された。
> ## 5年生存率をRとする
> R <- 0.95
> ## 1年死亡率を計算
> (r <- 1-R^(1/5))
[1] 0.01020622
> ## 10年生存率を計算
> (1-r)^10
[1] 0.9025
それでは、10年生存率 0.9025 を使って、サンプルサイズを計算してみる。
結果は、Freedman式で671例、Schoenfeld式で650例と計算された。
5年観察のときよりも、たくさんの人数が必要になった。
> sample.size.cox.noninf(t=10, S1=0.9025, S0=0.9025, Delta.S0=0.05, alternative="one.sided")
Sample Size of Cox Model (noninferiority)
Death (Freedman) = 65.40619
Number (Freedman) = 670.8327
Death (Schoenfeld) = 63.33536
Number(Schoenfeld) = 649.5934
Survival trt(S1) = 0.9025
Survival ctl(S0) = 0.9025
Noninf. margin = 0.05
Hazard trt(H1) = 0.01025866
Hazard ctl(H0) = 0.01025866
H0 w/ margin = 0.01595821
Hazard ratio(HR) = 1
HR w/ margin = 0.6428453
Follow up(y) = 10
sig.level = 0.05
power = 0.8
alternative = one.sided
NOTE: n is number in *each* group
試験群と対照群の生存率に差がない場合、劣らないことを示すのは簡単だろうと思うかもしれないが、統計学的に非劣性を証明するにはかなり大変で、巨大な試験になる。
非劣性試験のサンプルサイズ計算 生存時間データの場合 エクセルで
エクセルで計算できるようにした。
よければ下記からどうぞ。
https://happyhappygk.base.ec/items/26107247
エクセルファイルの使い方解説動画。
よかったらこちらもどうぞ。
まとめ
非劣性試験のサンプルサイズ計算を生存時間データの場合を解説した。
参考になれば。
参考文献
浜田&藤井 生存時間解析における症例数設計
第22回 日本SASユーザー会総会および研究発表会 論文集
2003年7月31日~8月1日 東京
非劣性試験のサンプルサイズ計算 生存時間データの場合 EZRで【動画】
EZRでの計算の仕方解説動画。
よければどうぞ。
おすすめ書籍
EZR公式マニュアル
コメント