MENU

R でログランク検定に必要なサンプルサイズを計算する方法

ログランク検定のサンプルサイズ計算を R で行う方法

>>もう統計で悩むのは終わりにしませんか? 

↑期間・数量限定で無料プレゼント中!

目次

ログランク検定はどうやるか?

ログランク検定は、時間経過とともにイベントが起きていくデータの群間比較をする方法。

患者さんの死亡をイベントとしたデータ、病気が再発することをイベントとしたデータ、病気が発症することをイベントとしたデータ、などが扱える。

病気ばかりではなく、時間経過とともに起きてくる事柄なら、なんでも扱える。

サンプルサイズ計算の前に、ログランク検定はどうやるか?を見てみる。

R の survival パッケージの survdiff() を使う。

survival パッケージはインストール済みなので、library()で呼び出すだけでOK。

ovarian という卵巣がんの治療後生存時間の解析データ。

futime が生存時間、fustat が死亡発生のデータ。

rx が治療群のデータ。

library(survival)
survdiff(Surv(futime, fustat) ~ rx,data=ovarian)

結果はp=0.3で統計学的有意に異ならなかった。

> survdiff(Surv(futime, fustat) ~ rx,data=ovarian)
Call:
survdiff(formula = Surv(futime, fustat) ~ rx, data = ovarian)
N Observed Expected (O-E)^2/E (O-E)^2/V
rx=1 13        7     5.23     0.596      1.06
rx=2 13        5     6.77     0.461      1.06
Chisq= 1.1  on 1 degrees of freedom, p= 0.3

もう一つの例は、MASSパッケージの中の、gehanというデータ。

白血病の患者さんの寛解から再燃までのデータ。

timeが再燃までの時間、censが再燃したかどうか、treatが6-メルカプトプリン(6-MP)で治療したか、対照だったか。

library(MASS)
survdiff(Surv(time, cens) ~ treat, data = gehan)

結果は、統計学的有意に6-MP治療群のほうが再燃が少なかった。

> library(MASS)
> survdiff(Surv(time, cens) ~ treat, data = gehan)
Call:
survdiff(formula = Surv(time, cens) ~ treat, data = gehan)
N Observed Expected (O-E)^2/E (O-E)^2/V
treat=6-MP    21        9     19.3      5.46      16.8
treat=control 21       21     10.7      9.77      16.8
Chisq= 16.8  on 1 degrees of freedom, p= 4e-05

ログランク検定のサンプルサイズ計算はどうやるか?

ログランク検定のサンプルサイズ計算は、実はCoxの比例ハザードモデルのサンプルサイズ計算を使う。

ログランク検定もCoxも生存時間解析と言いながら、イベントが起きる順番しか使っていない。

あとはイベントが起きる比を使う。

サンプルサイズ計算はどちらにも流用できるということだ。

sample.size.cox <- function(S1,S0,alternative="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))
Za <- qnorm(sig.level/tside, lower.tail=FALSE)
Zb <- qnorm(power)
d <- ((Za+Zb)*(1+exp(beta))/(1-exp(beta)))^2
n <- d/(((1-S1)+(1-S0))/2)
NOTE <- "n is total number of subjects in *both* of groups"
METHOD <- "Sample Size Calculation of Cox Propotional Hazard Model"
structure(
list("Total number of death" = d,
"Total number of subjects" = n,
"Surv. rate of trt. arm" = S1,
"Surv. rate of ctl. arm" = S0,
"Hazard ratio" = exp(beta),
sig.level = sig.level,
power = power,
alternative = alternative,
note = NOTE,
method = METHOD),
class = "power.htest")
}

先ほどのovarianの結果をもとにサンプルサイズ計算をすると、両群合わせて151例の死亡、326例の患者さんが必要だった。

各群13例の試験では統計学的有意にならなくて当然だ。

> sample.size.cox(S1=8/13, S0=6/13)
Sample Size Calculation of Cox Propotional Hazard Model
Total number of death = 150.2536
Total number of subjects = 325.5495
Surv. rate of trt. arm = 0.6153846
Surv. rate of ctl. arm = 0.4615385
Hazard ratio = 0.6279283
sig.level = 0.05
power = 0.8
alternative = two.sided
NOTE: n is total number of subjects in *both* of groups

gehanデータは、全部で8例の再燃症例があればよく、必要なサンプルサイズは二群全体で11例と計算された。

> sample.size.cox(S1=(21-9)/21, S0=(21-21)/21)
Sample Size Calculation of Cox Propotional Hazard Model
Total number of death = 7.84888
Total number of subjects = 10.98843
Surv. rate of trt. arm = 0.5714286
Surv. rate of ctl. arm = 0
Hazard ratio = 0
sig.level = 0.05
power = 0.8
alternative = two.sided
NOTE: n is total number of subjects in *both* of groups

>>もう統計で悩むのは終わりにしませんか? 

↑1万人以上の医療従事者が購読中

ログランク検定のサンプルサイズ計算をエクセルで

Coxの比例ハザードモデル用だが、上記の通りログランク検定のサンプルサイズ計算に使える。

よければどうぞ。

コックス比例ハザードモデルのサンプルサイズ計算【エクセルでサンプルサイズ】Cox proportional hazard model sample size calculator | TKER SHOP

まとめ

R でログランク検定を行うには、survivalパッケージのsurvdiff()を使う。

そのときイベント発生を表すデータとイベント発生までの時間、群分けの変数が必要だ。

ログランク検定のサンプルサイズ計算は、Coxの比例ハザードモデルのサンプルサイズ計算と同一のスクリプトを使って行える。

計算に必要なのは両群の生存確率だ。

参考書籍

医学統計学シリーズ 3
新版 Cox比例ハザードモデル (医学統計学シリーズ 3)
医学統計学シリーズ 5
新版 無作為化比較試験 ―デザインと統計解析― (医学統計学シリーズ5)
よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

リサーチクエスチョン探し?データ分析?論文投稿?、、、で、もう悩まない!

第1章臨床研究ではなぜ統計が必要なのか?計画することの重要性
  • 推定ってどんなことをしているの?
  • 臨床研究を計画するってどういうこと?
  • どうにかして標本平均を母平均に近づけられないか?
第2章:研究目的をどれだけ明確にできるのかが重要
  • データさえあれば解析でどうにかなる、という考え方は間違い
  • 何を明らかにしたいのか? という研究目的が重要
  • 研究目的は4種類に分けられる
  • 統計専門家に相談する上でも研究目的とPICOを明確化しておく
第3章:p値で結果が左右される時代は終わりました
  • アメリカ統計協会(ASA)のp値に関する声明で指摘されていること
  • そうは言っても、本当に有意差がなくてもいいの…?
  • なぜ統計専門家はp値を重要視していないのか
  • 有意差がない時に「有意な傾向があった」といってもいい?
  • 統計を放置してしまうと非常にまずい
第4章:多くの人が統計を苦手にする理由
  • 残念ながら、セミナー受講だけで統計は使えません。
  • インプットだけで統計が使えない理由
  • どうやったら統計の判断力が鍛えられるか?
  • 統計は手段なので正解がないため、最適解を判断する力が必要
第5章:統計を使えるようになるために今日から何をすれば良いか?
  • 論文を読んで統計が使えるようになるための5ステップ
第6章:統計を学ぶために重要な環境
  • 統計の3つの力をバランスよく構築する環境

以下のボタンをクリックして、画面に出てくる指示に従って、必要事項を記入してください。

この記事を書いた人

統計 ER ブログ執筆者

元疫学研究者

統計解析が趣味

コメント

コメント一覧 (1件)

コメントする

目次