統計ER

統計ソフトRの使い方を中心に、統計解析方法の解説をするブログ。ありそうでなかなか見つからないサンプルサイズ計算などニッチな方法について紹介しています。

ダネット検定のサンプルサイズ計算はどうやる?

Toukei Consul Banner

KH Coder Consul Banner

ダネット Dunnett 検定のサンプルサイズ計算はどうやるか?

コントロール群、統制群、非処理群などと呼ばれる比較対照グループと、複数用量の治療群、処理群を比較するダネット検定のサンプルサイズ計算。

統計ソフトRでやってみた。

ダネット検定サンプルサイズ計算スクリプトの前提

Liu W. 1997の論文を参照した。

論文のTableの一部をtextデータにして使用している。

dat.tab <- read.table("table-for-dunnett-test-sample-size.txt")

table-for-dunnett-test-sample-size.txtは下記からよければどうぞ。

ダネット検定サンプルサイズ計算用数値表 | HHA SHOP

ダウンロードしたのちWorking directory(Windowsであればドキュメントフォルダ)に保存して、上記スクリプトを実行する。

また、エクセルファイルでダネット検定のサンプルサイズ計算ができるようにした。数値表込み。よかったらどうぞ。

ダネット検定 サンプルサイズ計算【エクセルでサンプルサイズ】 | HHA SHOP

エクセルファイルの使い方を解説した動画。こちらもよければどうぞ。(2021年2月7日追記)

youtu.be

ダネット検定のサンプルサイズ計算スクリプト

ダネット検定のサンプルサイズ計算スクリプトは以下の通り。

のっけから申し訳ないが、このスクリプトには制限がある。

  • 有意水準が10%、5%、1%の三種類しか選べない。
  • 検出力が75%、80%、85%、90%、95%の五種類しか選べない。
  • 治療群は2から最大10までしか選べない。
sample.size.dunnett <-
function(
nu=40,sig.level=c(.1,.05,.01),power=c(.75,.80,.85,.90,.95),
treat=c(2:10),Delta,sd=1
)
{
dat.tab.abs <- subset(dat.tab, alpha==sig.level & Power==power & k==treat)
n <- (dat.tab.abs$sqrt.n.delta/Delta*sd)^2
n0 <- sqrt(treat)*n

NOTE <- "n is each number in *treatment* groups"
METHOD <- "Sample size determination for Dunnett test"
structure(
list("n0 (control)" = n0, "n (treatment)" = n,
"Treatment groups" = treat,
"Diff. to be rejected" = Delta,
SD = sd,
sig.level = sig.level,
power = power, alternative = "two.sided", note = NOTE,
method = METHOD),
class = "power.htest")
}

ダネット検定のサンプルサイズ計算の例

大きな差を検出する条件だと...

有意水準5%、検出力80%、治療群が三群、標準偏差SD=1に対して、差Delta=0.9を棄却するためのサンプルサイズ計算をすると、対照が53例、治療群は各群31例必要と計算される。

標準偏差SD=1に対して、差Deltaをどう考えるかは、下記を参照。

toukeier.hatenablog.com

> sample.size.dunnett(sig.level=.05,power=.8,treat=3,Delta=0.9)

     Sample size determination for Dunnett test 

        n0 (control) = 52.7338
       n (treatment) = 30.44587
    Treatment groups = 3
Diff. to be rejected = 0.9
                  SD = 1
           sig.level = 0.05
               power = 0.8
         alternative = two.sided

NOTE: n is each number in *treatment* groups

Effect sizeが半分くらいになると...

棄却すべき差が約半分の0.5になると、必要なサンプルサイズは増加して、対照群が171例、治療群は各群99例必要になる。

> sample.size.dunnett(sig.level=.05,power=.8,treat=3,Delta=0.5)

     Sample size determination for Dunnett test 

        n0 (control) = 170.8575
       n (treatment) = 98.64462
    Treatment groups = 3
Diff. to be rejected = 0.5
                  SD = 1
           sig.level = 0.05
               power = 0.8
         alternative = two.sided

NOTE: n is each number in *treatment* groups

Effect sizeが相対的に大きいと...

動物実験などピュアな実験系であると、ばらつきが小さく、相対的に効果量(Effect size)が大きくなる。そんな場合はどうか。

棄却すべき差が標準偏差SD=1に対して、Delta=2だった場合、必要となるサンプルサイズは、対照群が11例、治療群は各群7例となる。

実際の実験室での状況ではこのくらいではないだろうか?

> sample.size.dunnett(sig.level=.05,power=.8,treat=3,Delta=2)

     Sample size determination for Dunnett test 

        n0 (control) = 10.67859
       n (treatment) = 6.165289
    Treatment groups = 3
Diff. to be rejected = 2
                  SD = 1
           sig.level = 0.05
               power = 0.8
         alternative = two.sided

NOTE: n is each number in *treatment* groups

治療群の数が減ると...

標準化された差が2のままで、治療群が二群のデザインになると、必要となるサンプルサイズはさらに小さくなり、対照群が8例、治療群が各群6例で済むようになる。

> sample.size.dunnett(sig.level=.05,power=.8,treat=2,Delta=2)

     Sample size determination for Dunnett test 

        n0 (control) = 7.836604
       n (treatment) = 5.541316
    Treatment groups = 2
Diff. to be rejected = 2
                  SD = 1
           sig.level = 0.05
               power = 0.8
         alternative = two.sided

NOTE: n is each number in *treatment* groups

エクセルでサンプルサイズ計算(2020年4月13日追記)

エクセルファイルでダネット検定のサンプルサイズ計算ができるようにした。数値表込み。よかったらどうぞ。

ダネット検定 サンプルサイズ計算【エクセルでサンプルサイズ】 | HHA SHOP

エクセルファイルの使い方を解説した動画。こちらもよければどうぞ。(2021年2月7日追記)

youtu.be

統計ソフトRのパッケージで計算するには?

DunnettTestsパッケージのnvDT()関数で計算可能だ。

ただしこの関数は上記と違って片側検定なので承知おきを。

一度だけインストール。

install.packages("DunnettTests")

呼び出してから利用する。

library(DunnettTests)
  • ratioは、治療群とコントロール群の比。
  • powerは検出力。
  • rは少なくともいくつの群間で有意になってほしいか。
  • kは治療群の数。
  • muは治療群の平均値。
  • mu0はコントロール群の平均値。
  • contrastはmeansにすると平均値の比較。propsとすると割合の比較。
  • sigma標準偏差。propsのときは指定しない。
  • distはt分布(tdist)か標準正規分布(zdist)か指定。nが小さいと予想される場合はtdistがよい。
  • testcallはStep-up(SU)とStep-down(SD)が指定できる。 Step-upはHochbergの方法、Step-downはHolmの方法と思えばいい。

Hochbergの方法、Holmの方法は下記を参照。

toukeier.hatenablog.com

大きな差を検出する条件再計算

Effect sizeが0.9と、大きな差の場合は、上記の方法では、両側検定でコントロール群が53例、治療群が各群31例必要と計算された。

こちらの nvDT() による片側検定のためのサンプルサイズ計算では、コントロール群が32例、治療群は各18例と計算された。

> nvDT(ratio=1/sqrt(3), power=0.8, r=3, k=3, mu=0.9, mu0=0, contrast="means", sigma=1, dist="zdist", testcall="SU")
$`least sample size required in each treatment groups`
[1] 18

$`least sample size required in the control group`
[1] 32

Effect sizeが約半分のとき再計算

Effect sizeが約半分の0.5の時は、先ほどはコントロール群が171例、治療群は各群99例必要と計算された。

こちらの場合は、コントロール群が101例、治療群は各58例必要と計算された。

> nvDT(ratio=1/sqrt(3), power=0.8, r=3, k=3, mu=0.5, mu0=0, contrast="means", sigma=1, dist="zdist", testcall="SU")
$`least sample size required in each treatment groups`
[1] 58

$`least sample size required in the control group`
[1] 101

Effect sizeが相対的に大きいとき再計算

Effect sizeが相対的に大きく、2であった場合、コントロール群が11例、治療群は各7例必要であったところが、nvDT()の方法であると、コントロール群が7例、治療群は各4例必要と計算された。

> nvDT(ratio=1/sqrt(3), power=0.8, r=3, k=3, mu=2, mu0=0, contrast="means", sigma=1, dist="zdist", testcall="SU")
$`least sample size required in each treatment groups`
[1] 4

$`least sample size required in the control group`
[1] 7

治療群が減ったとき再計算

治療群が三群から二群に減ると、必要数も減る。

上記の方法では、コントロール群が8例、治療群が各6例必要であった。

こちらの方法では、コントロール群が6例、治療群は各4例必要と計算された。

> nvDT(ratio=1/sqrt(2), power=0.8, r=2, k=2, mu=2, mu0=0, contrast="means", sigma=1, dist="zdist", testcall="SU")
$`least sample size required in each treatment groups`
[1] 4

$`least sample size required in the control group`
[1] 6

まとめ

ダネット検定を行う試験デザインのサンプルサイズ計算スクリプトを示した。

Liu W 1997論文に掲載されている表の一部を使っているので、
すべての条件を網羅しておらず限界がある。

その点を承知で眺めていただきたい。

DunnettTestsパッケージのnvDT()関数も利用できる。

ただし、片側検定なのでその点注意。

参考文献

Liu W. On sample size determination of Dunnett's procedure for comparing several treatments with a control.

永田 靖
ダネットの方法におけるサンプルサイズの決め方について
医薬安全性研究会 会報
2005;50(May):51-59.

Package 'DunnettTests'

A Step-Up Multiple Test Procedure