- 想定シナリオ
- 方法0:手入力
- 方法1:pwr.2p.test( )を使って計算する
- 方法2:TwoSampleProportion.Equality( )を使って計算する
- 方法3:power.prop.test( )を使って計算する
- おわりに
- 参考資料
自分用のリファレンスとして、サンプルサイズ計算に関する記事をシリーズで書いています。 なるべく体裁を統一するために、以下のように決めています。
- 群を示す添字について:
- c, C = 対照群
- t, T = 介入群*1
- e, E = 要因群
- 添字なし = 全体
- 使用する記号:
- p = 反応割合
- μ = 平均値
- σ = 標準偏差
- Φ = 割り付け比 Nt/Nc(デフォルトは1)
- α = αエラー(デフォルトは0.05)
- β = βエラー(デフォルトは0.2)
- z = 標準正規分布の累積分布関数
想定シナリオ
疾患Dに対する治療として、従来薬Cと新規薬Tのどちらが優れているだろうか?
ランダム化比較試験で患者を1:1に割り付けて、治療の奏功割合を比較したいと考えている。
これまでの知見から、従来薬Cにおける奏効割合は30%、新規薬Tにおける奏効割合は50%と見込まれる。
両側有意水準 5%, 検出力 80%として、必要なサンプルサイズはどれくらいだろうか?
このシナリオでサンプルサイズを計算するのに必要な条件を整理してみると、以下のようになる。
- 帰無仮説
- 対立仮説
- 有意水準:α = 0.05
- 検出力:1-β = 0.80
- 割り付け比:φ = = 1
- 従来薬Cの奏効割合(想定値): = 0.3
- 新規薬Tの奏効割合(想定値): = 0.5
方法0:手入力
上の式に、
- = 1.96
- = 0.8416
- φ = 1
- = 0.3
- = 0.5
を代入すると、N = 185.9...となるので、サンプルサイズは両群で186例(1群で93例)必要なことが分かる。
方法1:pwr.2p.test( )を使って計算する
まずはpwrパッケージの関数を使ってみる。
この関数では2つの割合ではなく、効果サイズ(h
)を指定しなくてはいけない。
効果サイズhは逆三角関数arcsinを使って、以下のように定める。
これはasin( )を使って実際に計算しなくてはいけないのが面倒。
pwr.2p.test( )の引数は他に、
sig.level
:有意水準 αpower
:検出力 1-βalternative
:対立仮説。"two.sided"(両側=デフォルト), "greater", "less"から選ぶ。
を指定する。両側検定ならh
の符号は気にしなくていい。
library(pwr) h = 2*asin(sqrt(0.5))-2*asin(sqrt(0.3)) pwr.2p.test(h = h, sig.level = 0.05, power = 0.8, alternative = "two.sided")
Difference of proportion power calculation for binomial distribution (arcsine transformation) h = 0.4115168 n = 92.69608 sig.level = 0.05 power = 0.8 alternative = two.sided NOTE: same sample sizes
1群あたり93例、両群で186例必要という結果。
方法2:TwoSampleProportion.Equality( )を使って計算する
次にTrialSizeパッケージの関数を使ってみる。
この関数では対立仮説(alternative hypothesis)は関数名に含まれているので、引数として指定する必要はない。*2
指定する引数は、以下のとおり。
alpha
:αエラーbeta
:βエラーp1
:試験群の反応割合p2
:対照群の反応割合k
:割り付け比
library(TrialSize) TwoSampleProportion.Equality(alpha = 0.05, beta = 0.2, p1 = 0.5, p2 = 0.3, k = 1)
[1] 90.26212
1群あたり91例、両群で182例必要という結果。方法1との微妙な違いは許容範囲か。
方法3:power.prop.test( )を使って計算する
このシナリオなら基本関数を使っても計算できる。
サンプルサイズ計算のときに指定する主な引数は以下のとおり。
p1
p2
sig.level
:αエラーpower
:1-βエラーalternative
:対立仮説。"one.sided"(片側)か"two.sided"(両側)を指定。
両側検定なのでp1
とp2
はどちらでもよい。
power.prop.test(p1 = 0.5, p2 = 0.3, sig.level = 0.05, power = 0.8, alternative = "two.sided")
Two-sample comparison of proportions power calculation n = 92.99884 p1 = 0.5 p2 = 0.3 sig.level = 0.05 power = 0.8 alternative = two.sided NOTE: n is number in *each* group
1群あたり93例、両群で186例必要という結果。
おわりに
- シーズン4に突入しました。シーズン4は何話続くのか私にもわかりません。
- 夏は汗をかくからという理由で、ついついウェットタイプのエサを与えてしまう甘やかせ飼い主です。
参考資料
- すごい!サンプルサイズ計算の本なのにあまり眠くならない!手計算はこの本を参考にしました。