割合の差で設計するサンプルサイズ
- アウトライン
-
- 作成日: 2026/2/2
- 更新日: –
はじめに
「割合 (イベント発生率)」を主要評価項目に置く機能性表示食品のヒト試験では、2群の割合の差を検出するためのサンプルサイズ設計がよく登場します。
ここでは、過去研究で観察された2群の発生率をもとに、1:1割付の検証的なランダム化比較試験 (RCT) で必要なサンプルサイズ (症例数) を計算する例を、コラム形式でまとめます。
問題
過去の試験で、ある機能性関与成分を含む食品 (Active) とプラセボ (Placebo) を比較したところ、一定期間 (例: 12週) で「目的イベント」が発生した割合が次の通りだった。
- プラセボ群 (Placebo) のイベント発生率: 41%
- 介入群 (Active) のイベント発生率: 29%
この差 (0.12) を、1:1割付の検証的ランダム化比較試験で
- 両側有意水準 α = 0.05
- 検出力 1−β = 0.90
として検出したい。
必要な総サンプルサイズ N (2群合計) はいくらか?
- <イベント例>
-
- 便通改善が得られなかった割合
- 症状が規定以上に改善しなかった割合
- 一定基準の非達成率
など、二値化された指標を想定しています。
解答
設計値を
- \(\pi_{s} = 0.41\) (Placebo)
- \(\pi_{r} = 0.29\) (Active)
- 割付比 \(1:\phi\)で \(\phi = 1\) (1:1割付)
- 差 \(\delta_{\text{Plan}} = \pi_{s} – \pi_{r} = 0.12\)
とおく。
まず、加重平均割合は
両側α=0.05より
検出力0.90より
2群の割合差の近似式より
ここに \(\phi = 1\)を代入すると、総サンプルサイズは
したがって、必要人数は合計660人 (1群あたり330人)。
解説
4.1 そもそも「割合差」の試験設計で何を決めている?
このタイプのサンプルサイズ計算は、ざっくり言うと次の3点を固定します。
- 差 (効果) の大きさ: 今回は \(0.41 – 0.29 = 0.12\)
- 第1種の誤り (偽陽性): 両側 α = 0.05
- 第2種の誤り (偽陰性): 検出力 90% (β = 0.10)
そして「その条件で、差0.12を「統計的に見える」ようにするには何人いる?」を近似計算しています。
4.2 式の中身は「2つのばらつき」を足している
近似式の大きなカッコの中は、直感的にはこうです。
有意水準側の安全マージン
帰無仮説の近くでの判定の厳しさを反映しています。
検出力側の安全マージン
\]
この2つを足して二乗し、最後に差の二乗 (0.12²) で割るので、差が小さいほど人数は急増します。
4.3 機能性表示食品の試験に実装するときの注意点
4.3.1 イベントの定義が変わるとπも変わる
- 改善なし (非レスポンダー)
- 規定量以上の改善を達成できない (非達成)
- 症状再燃
など、二値化の閾値を変えると\(\pi_{s}、\pi_{r}\)が動きNが大きく変わります。探索試験と検証試験で定義がズレると、設計が崩れるので注意しましょう。
4.3.2 過去研究のπをそのまま信じすぎない
機能性表示食品やサプリメントなどのヒト臨床試験 (ヒト試験) は、対象集団・季節・併用習慣・測定遵守で発生率が動きがちです。
実務では・・・
- 標準: 過去値そのまま
- 保守: 差を少し縮める (例: 0.10にする等)
のように感度分析を回して、倫理・実行可能性と折り合いを付けることが望ましいです。
4.3.3 脱落を上乗せする
たとえば脱落10%見込みなら
- 目標症例数: 660人
- 脱落を考慮した症例数: \(660/(1 – 0.10) = 773.3 \approx 774\text{人}\)
4.4 Rで実装してみる
4.4.1 近似式を利用する場合
近似式を関数にして計算してみましょう。
pandis_n_2prop <- function(pi_s, pi_r, phi = 1,
alpha = 0.05, power = 0.90) {
delta <- pi_s - pi_r
pi_bar <- (pi_s + phi * pi_r) / (1 + phi)
z_alpha <- qnorm(1 - alpha/2)
z_beta <- qnorm(power)
term1 <- z_alpha * sqrt((1 + phi) * pi_bar * (1 - pi_bar))
term2 <- z_beta * sqrt(phi * pi_s * (1 - pi_s) + pi_r * (1 - pi_r))
N <- ((1 + phi) / phi) * (term1 + term2)^2 / (delta^2)
return(N) # 総サンプルサイズ
}
N <- pandis_n_2prop(pi_s = 0.41, pi_r = 0.29,
phi = 1, alpha = 0.05, power = 0.90)
N
ceiling(N)
ceiling(N/2)
結果をみると・・・
> N
[1] 659.8466
> ceiling(N)
[1] 660
> ceiling(N/2)
[1] 330
一致することが確認できました。
4.4.2 R baseの関数を利用する場合
近似式だとわかりやすいのですが、コードの行数が増えて大変ですよね。baseにはもともとpower.prop.testという関数があるので、これを利用すると簡単です。
p1 <- 0.41
p2 <- 0.29
res_base <- power.prop.test(p1 = p1, p2 = p2,
power = 0.90,
sig.level = 0.05,
alternative = "two.sided")
res_base
ceiling(res_base$n) # 1群あたり
2 * ceiling(res_base$n) # 総数
結果をみると・・・
> res_base
Two-sample comparison of proportions power calculation
n = 329.9233
p1 = 0.41
p2 = 0.29
sig.level = 0.05
power = 0.9
alternative = two.sided
NOTE: n is number in *each* group
> ceiling(res_base$n) # 1群あたり
[1] 330
> 2 * ceiling(res_base$n) # 総数
[1] 660
両者で同一の結果が得られました。
まとめ
本コラムでは、機能性表示食品のヒト試験でよく用いられる「二値アウトカム (イベント発生率)」を対象に、2群の割合差にもとづくサンプルサイズ設計の考え方を整理しました。
過去研究で観察された発生率を設計値として採用し、両側有意水準5%、検出力90%、1:1割付の条件で計算しましたが、計算は近似式をスクラッチで実装しても、Rの power.prop.test() を用いても同じ結果となり、手計算の妥当性を確認できました。
一方で、食品試験ではイベント定義 (二値化の閾値) や対象集団・季節要因・遵守状況によって発生率が変動しやすく、過去研究の値をそのまま用いると設計が過度に楽観的/悲観的になる可能性があります。
したがって、実務では差を控えめに置いた保守シナリオも含めて感度分析を行い、倫理性・実行可能性とのバランスを取りながら例数を最終決定することが重要です。さらに、脱落が見込まれる場合は、目標症例数を脱落率で割り戻して登録数を上乗せします。
以上より、割合差のサンプルサイズ計算は「差・α・検出力・割付比」という基本要素を押さえたうえで、イベント定義の一貫性、設計値の妥当性、脱落補正まで含めて設計根拠として文章化することが、検証的試験の品質と説明可能性を高める鍵となります。
参考文献
- Fleiss JL, Tytun A, Ury HK. A simple approximation for calculating sample sizes for comparing independent proportions. Biometrics. 1980 Jun;36(2):343-6. PMID: 26625475.