本記事にはプロモーション(広告・アフィリエイトリンク)が含まれます。

この記事でわかること

💡 ポイント

  • RCT(ランダム化比較試験)とは何をする研究なのか、対照群がなぜ必要なのかがわかります
  • ランダム化がバイアス(偏り)を消せる理由を、Rのシミュレーションの実測値で確かめられます
  • 盲検化・対照群・割付の隠蔽が、それぞれどの偏りを防いでいるのかを区別できるようになります
  • ITT や主要評価項目など、RCTの結果を読むときに押さえるべき注意点がわかります
  • RCTでも分からないこと(限界)と、その代わりに使われる考え方があることを知ることができます

はじめに

新しい薬が世に出るまでには、必ずどこかの段階でRCT(ランダム化比較試験)が行われます。開発の各段階でどんな試験が行われるかは臨床試験のフェーズ(第I相〜第IV相)とはで整理していますが、そのなかでも「この薬は効く」と正式に主張するための土台になるのがRCTです。

「飲んだら治った」「効いた気がする」と、「効いたと言える」の間には、実はとても大きな距離があります。その距離を埋めるために人類が見つけた道具が、くじ引き(ランダム化)でした。なぜくじ引きなどという頼りなさそうな方法が、これほど強い結論を支えられるのでしょうか。

この記事は、統計を学び始めた大学生・社会人、製薬業界に入ったばかりの新人、医療職や臨床開発の非統計職の方に向けて、その仕組みを一つずつほどいていきます。理屈だけでは腑に落ちにくいところは、Rで小さなシミュレーションを回して数字で見える化しながら進みます。Rを触ったことがない方はR入門を横に置いておくと読みやすくなりますが、コードを飛ばして出力と解説だけ追っても本筋はつかめる構成にしています。

RCT(ランダム化比較試験)とは ― なぜ「くじ引き」で決めるのか

RCT(Randomized Controlled Trial、ランダム化比較試験)とは、参加者を偶然の仕組み(くじ引き)で2つ以上の群に割り付け、治療を比べる研究のことです。「誰にどちらの治療を行うか」を、医師の判断でも患者の希望でもなく、人の意思が入り込まない仕組みで決める。ここがすべての出発点です。

対照群がないと、実は何も言えません。 「薬を飲んだら治った」という事実だけでは、放っておいても治ったのかどうかを区別できないからです。比べる相手がいないと、次の3つと薬の効果が混ざったままになります。

  • 自然経過:多くの病気や症状は、何もしなくても時間とともに軽くなります
  • プラセボ効果:治療を受けたという安心感そのものが、症状の感じ方を良くします
  • 平均への回帰:たまたま調子が悪いときに受診した人は、次に測ると平均に近づいて見えます(詳しくは平均への回帰とはをご覧ください)

同じ時期・同じ集団から作った対照群を置いて初めて、これらを差し引いた「薬そのものの効果」に手が届きます。

観察研究と何が違うのかを整理しておきましょう。

観点観察研究(診療記録などを後から集める)RCT
治療を決める人医師と患者(病状や希望を見て決める)くじ引き(人の判断が入らない)
測っていない要因の偏り残る。測っていない以上、解析では調整できない確率的に揃う。測っていない要因まで平均的に揃うことが期待できる
因果関係の主張しやすさ難しい。強い仮定と入念な調整が要るしやすい。設計そのものが根拠になる
費用と期間既存データを使えば比較的小さく済む大きい。計画・実施・追跡に時間と費用がかかる
倫理的にできない場面害が疑われる要因でも観察はできる害が予想されるものをくじ引きで割り付けることはできない

RCTの流れは、おおむね次の順で進みます。

1. 適格性の確認:あらかじめ決めた組入れ基準・除外基準に合う人かどうかを確かめます
2. 同意取得:目的・方法・リスクを説明し、本人の自由な意思で参加の同意をいただきます
3. ベースライン測定:割り付ける前に、年齢・重症度など出発点の状態を記録します
4. ランダム化:ここで初めて、くじ引きによってどちらの群に入るかが決まります
5. 治療:可能なかぎり、誰がどちらの群かを伏せた状態(盲検下)で治療を行います
6. 追跡:あらかじめ決めた時点で、あらかじめ決めた項目を測ります
7. 解析:これもあらかじめ決めておいた方法で、群間を比べます

「あらかじめ決めておく」という言葉が何度も出てくることに気づかれたでしょうか。結果を見てから決めごとを変えられる余地を潰していくのが、RCTという設計の本質です。

⚠️ 注意
「ランダム化」と「無作為抽出(ランダムサンプリング)」は、名前が似ていますがまったく別のものです。

  • ランダム化割り付けの話。集まった参加者を、どちらの群に入れるかを偶然で決めることです。群と群を比べられる状態を作るための仕組みで、内的妥当性(この試験の中での結論の正しさ)を支えます
  • 無作為抽出誰を集めるかの話。母集団から偏りなく対象者を選ぶことで、外的妥当性(結果をどこまで一般化できるか)に関わります

実際のRCTは、参加してくださる方の中から適格な人を組み入れるので、無作為抽出にはなっていないのが普通です。ランダム化されている=結果を世の中の全員に当てはめてよい、ということにはなりません。

ランダム化がバイアスを消す仕組みをRで確かめる

「くじ引きで決めると公平になる」と言われても、なんとなく納得できるだけで、腹落ちはしないものです。そこで、同じ「真の効果」から2種類のデータを作って比べるというシミュレーションをしてみましょう。答えを先に知っている神様の視点でデータを作れるのが、シミュレーションのいちばんの利点です。

設定はこうです。参加者は400人。アウトカム(結果の指標)は「改善スコア(点)」で、新薬の真の効果は +3.00 点、つまり新薬を飲めば必ずスコアが3点良くなる世界を作ります。ただし、スコアに影響する要因が2つあります。ひとつはカルテに記録される重症度、もうひとつは体力や生活環境のような、誰も測っていない要因です。どちらも高いほどスコアは下がります。

このうえで、2つの世界を並べます。ひとつは観察研究の世界で、医師が重症度と患者さんの様子(=カルテに残らない情報)を見ながら、新薬を出すかどうかを決めます。もうひとつはRCTの世界で、患者さんの情報を一切見ずに、1/2の確率のくじ引きだけで割り付けます。データの作り方も解析(2群の平均の差)もまったく同じで、違うのは「誰が治療を決めたか」だけです。

set.seed(20260903)
n <- 400

# 真の姿:新薬の効果は +3 点。重症度と「測っていない要因」が予後を悪くする
sim_outcome <- function(trt, severity, u) {
  10 + 3 * trt - 4 * severity - 2 * u + rnorm(length(trt), 0, 3)
}

severity <- rnorm(n)   # カルテに記録される重症度
u        <- rnorm(n)   # 体力・生活環境など、誰も測っていない要因

# 観察研究:医師が重症度と患者の様子を見て新薬を出すかどうかを決めた場合
trt_obs <- rbinom(n, 1, plogis(1.2 * severity + 1.0 * u))
y_obs   <- sim_outcome(trt_obs, severity, u)

# RCT:くじ引き(1/2の確率)で割り付けた場合
trt_rct <- rbinom(n, 1, 0.5)
y_rct   <- sim_outcome(trt_rct, severity, u)

show_result <- function(label, y, trt) {
  tt <- t.test(y[trt == 1], y[trt == 0])
  cat(label, "\n")
  cat("  推定された効果:", round(mean(y[trt==1]) - mean(y[trt==0]), 2),
      " 95%信頼区間: [", round(tt$conf.int[1], 2), ",", round(tt$conf.int[2], 2), "]\n")
  cat("  重症度の平均      新薬群:", round(mean(severity[trt==1]), 2),
      " 対照群:", round(mean(severity[trt==0]), 2), "\n")
  cat("  測っていない要因  新薬群:", round(mean(u[trt==1]), 2),
      " 対照群:", round(mean(u[trt==0]), 2), "\n\n")
}

cat("真の治療効果: +3.00\n\n")
show_result("【観察研究】医師が選んで投与した場合", y_obs, trt_obs)
show_result("【RCT】くじ引きで割り付けた場合",     y_rct, trt_rct)
真の治療効果: +3.00

【観察研究】医師が選んで投与した場合 
  推定された効果: -1.38  95%信頼区間: [ -2.33 , -0.43 ]
  重症度の平均      新薬群: 0.39  対照群: -0.45 
  測っていない要因  新薬群: 0.39  対照群: -0.3 

【RCT】くじ引きで割り付けた場合 
  推定された効果: 2.42  95%信頼区間: [ 1.36 , 3.48 ]
  重症度の平均      新薬群: 0.01  対照群: -0.09 
  測っていない要因  新薬群: 0.04  対照群: 0.02 
📝 解釈・補足
真の効果は +3.00、つまり新薬はスコアを3点良くする薬です。ところが観察研究の結果は -1.38、95%信頼区間は [-2.33, -0.43] でした。区間が0をまたいでいないので、統計的には「新薬のほうが有意に悪い」という結論になってしまいます。データの取り方にも計算にも間違いはなく、それでも結論だけが正反対になる。これがバイアス(偏り)の怖さです。

原因は割付の偏りにあります。観察研究では重症度の平均が新薬群 0.39 に対して対照群 -0.45、測っていない要因も新薬群 0.39 に対して対照群 -0.30 でした。医師が「重い人ほど新薬を試したい」と考えた結果、新薬群にもともと予後の悪い人が集まっているのです。薬の効果と患者背景の差が混ざり合い、後者が前者を打ち消してしまいました。

一方RCTでは、重症度が 0.01 対 -0.09、測っていない要因が 0.04 対 0.02 とほぼ揃いました。推定値は 2.42、95%信頼区間 [1.36, 3.48] で、真の値 3.00 をきちんと含んでいます。

ここがいちばんのポイントです。統計的な調整(重症度で補正するなど)で消せるのは、あくまで測った要因だけです。カルテに残っていない要因は、どんなに高度な手法を使っても補正のしようがありません。くじ引きは患者さんの情報を何も見ないからこそ、測っていない要因まで確率的に揃えてくれます。これは他のどんな解析手法にも真似できない、ランダム化だけが持つ強みです。

なお、RCTの推定値 2.42 も真値 3.00 ちょうどではありません。これは偏りではなく偶然のばらつきです。1回の試験で得られる値は必ずぶれるので、点推定値だけでなく信頼区間で幅を示す必要があります。

いま見た「新薬群に予後の悪い人が集まっていた」状態が、まさに交絡と呼ばれるものです。交絡の考え方そのものは【やさしく解説】交絡(交絡因子)とはで丁寧に整理しています。また、観察研究しかできない場面で測った要因の偏りをできるだけ揃える手法として傾向スコア分析(Propensity Score Analysis)とはがありますが、これも測った要因しか扱えないという限界は変わりません。

ランダム化しても偏りはゼロにならない ― 症例数と層別化

ここまで読むと「ランダム化すれば両群は同じになる」と思いたくなりますが、それは言いすぎです。くじ引きは平均的に公平なだけで、1回1回のくじが揃うことまでは保証してくれません。

どのくらいずれるのかを見てみましょう。1つの試験につきランダム化を1回行い、それを2,000回繰り返して、あるベースライン特性(年齢や重症度をイメージしてください)の群間差の絶対値がどれくらいになるかを、症例数 n=20 / 100 / 1000 で比べます。特性は平均0・標準偏差1に標準化された値としているので、「1」が出たら標準偏差1つ分ずれた、という読み方になります。

set.seed(777)
imbalance <- function(n, nsim = 2000) {
  d <- replicate(nsim, {
    x   <- rnorm(n)                 # 年齢や重症度などのベースライン特性
    trt <- rbinom(n, 1, 0.5)
    if (sum(trt) == 0 || sum(trt) == n) return(NA)
    abs(mean(x[trt == 1]) - mean(x[trt == 0]))
  })
  c(median(d, na.rm = TRUE), quantile(d, 0.95, na.rm = TRUE))
}
for (n in c(20, 100, 1000)) {
  r <- imbalance(n)
  cat("n =", formatC(n, width = 4), " 群間差の中央値:", round(r[1], 3),
      "  95パーセンタイル:", round(r[2], 3), "\n")
}
n =   20  群間差の中央値: 0.312   95パーセンタイル: 0.926 
n =  100  群間差の中央値: 0.13   95パーセンタイル: 0.398 
n = 1000  群間差の中央値: 0.042   95パーセンタイル: 0.127 
症例数群間差の中央値95パーセンタイル
n = 200.3120.926
n = 1000.130.398
n = 10000.0420.127
📝 解釈・補足
n=20 の試験では、群間差の中央値が 0.312、そして20回に1回は 0.926、つまり標準偏差のほぼ1つ分もずれます。「ランダム化したのだから両群は同じはず」という感覚は、小さな試験では成り立たないのです。

症例数が増えると様子は変わります。中央値は 0.312 → 0.130 → 0.042 と一貫して縮み、n=1000 では95パーセンタイルでも 0.127 にとどまります。症例数が増えるほど偏りは小さくなるという関係が、はっきり見て取れます。

つまりランダム化が保証しているのは「平均的に偏らない」こと、言い換えれば偏りの向きが体系的に決まらないことであって、「1回の試験で必ず揃う」ことではありません。だからこそ実務では、重要な予後因子ごとにくじ箱を分けておく層別ランダム化や、次の1人を割り付けるたびに群間のバランスを計算し、偏りが小さくなる側へ入りやすくする最小化法といった工夫が使われます。

群間差が症例数とともに縮んでいくのは、平均のばらつきが症例数とともに小さくなるためです。この「平均のぶれ幅」の話は【やさしく解説】標準偏差(SD)と標準誤差(SE)の違いで図解しています。層別ランダム化や最小化法の具体的な手順とRでの実装はランダム化割付の方法とR実装にまとめました。そして「では何人集めればよいのか」を決める作業が症例数設計で、こちらは検出力分析(Power Analysis)入門が入口になります。

もうひとつ、初心者がやりがちな誤りに触れておきます。論文の冒頭にあるベースライン表(Table 1)に検定のp値を付けて、「有意差がないから両群は同等です」と述べるのは誤りです。ランダム化された試験では、群間に差があったとしてもそれが偶然によるものだと設計上あらかじめ分かっています。分かっていることをわざわざ検定しても新しい情報は得られませんし、p値が大きいことは「偏りがない」ことの証明にもなりません。見るべきなのは有意かどうかではなく、差の大きさが結果の解釈に影響しうるかです。影響しそうな因子があるなら、事前に決めておいた解析計画に沿って共変量調整を行います。

🔑 まとめ・実務ポイント

  • ランダム化が保証するのは平均的な公平さであって、目の前の1回の試験の公平さではありません
  • だからこそ、十分な症例数を確保する症例数設計と、重要な予後因子を揃える層別化が必要になります
  • 小規模試験の結果を読むときは、ベースラインの偏りが残っている可能性を前提に見ましょう
  • ベースライン表のp値は同等性の根拠になりません。差の大きさと、それが結果に与える影響を見ます

ランダム化だけでは足りない ― 盲検化・対照群・割付の隠蔽

ここまでで、ランダム化は「割り付ける瞬間」の偏りを消してくれることを見てきました。ところが試験は割り付けて終わりではありません。そのあとに治療が行われ、症状が測られ、データが集められます。割り付けたあとに入り込む偏りは、ランダム化では防げません。そこで登場するのが割付の隠蔽と盲検化です。

割付の隠蔽と盲検化は、名前は似ていますが役割がまったく違います

  • 割付の隠蔽(allocation concealment):次に登録される患者さんがどちらの群に入るかを、登録に関わる人に事前に知られないようにする仕組みです。中央登録センターやWebの割付システムを使い、患者さんを登録した瞬間にはじめて割付結果が返ってくるようにします。これはランダム化そのものを守るための仕組みです。
  • 盲検化(blinding):割り付けられたあとに、誰がどちらの群かを患者さん・担当医師・評価者に伏せることです。これは評価や測定の偏りを防ぐための仕組みです。

隠蔽が破られると何が起きるでしょうか。たとえば「次の枠は新薬らしい。この重症の人は新薬に入れたくないから、登録を来週にずらそう」という判断が一度でも入れば、くじ引きの公平さは形だけのものになります。誰がどの順番でどう割り付けるか、その手順を文書化して守ることは臨床試験の基本ルールに含まれており、詳しくはICH E6(GCP)とは?で解説しています。

盲検化の水準は、誰にまで伏せるかで呼び名が変わります。

水準誰に伏せるか防げるバイアス主な使いどころ
オープンラベル(非盲検)誰にも伏せないほぼ防げない手術・生活指導など盲検が物理的に難しい場面
単盲検患者さんにだけ伏せる患者さんの期待による自己報告の偏り医師側の盲検が難しいが患者側は保てる場合
二重盲検患者さんと担当医師の双方に伏せる期待による偏りに加え、診療・併用薬・脱落の扱いの偏りプラセボや同じ見た目の対照薬を用意できる薬剤の試験
評価者盲検アウトカムを判定する人に伏せるスコア付け・画像判定など評価の偏り治療自体は隠せないが判定だけ独立させられる場面

では、盲検にしないと結果はどれくらい歪むのでしょうか。真の治療効果が 0(新薬と対照でまったく差がない) という状況を n=200 の試験で 2,000 回繰り返し、評価者が「この人は新薬群だ」と知っているせいで新薬群のスコアだけ +1.5点 甘く付けてしまう状況を再現してみます。スコアの標準偏差は8ですから、1.5点は「ほんの少し甘い」程度の下駄です。

set.seed(1234)
nsim <- 2000
n    <- 200
bias <- 1.5   # 評価者が「新薬群だ」と知っていると付けてしまう下駄(点)

p_blind <- numeric(nsim); p_open <- numeric(nsim)
for (i in 1:nsim) {
  trt <- rep(0:1, each = n/2)
  y   <- rnorm(n, mean = 50, sd = 8)                   # 真の治療効果は 0(差がない)
  p_blind[i] <- t.test(y ~ trt)$p.value                # 盲検下の評価
  p_open[i]  <- t.test(y + bias * trt ~ trt)$p.value   # 非盲検(下駄あり)
}
cat("真の治療効果: 0(差はない)\n")
cat("盲検あり  有意(p<0.05)となった割合:", mean(p_blind < 0.05), "\n")
cat("盲検なし  有意(p<0.05)となった割合:", mean(p_open  < 0.05), "\n")
真の治療効果: 0(差はない)
盲検あり  有意(p<0.05)となった割合: 0.051 
盲検なし  有意(p<0.05)となった割合: 0.271 
📝 解釈・補足
盲検下では、有意(p<0.05)になった割合が 0.051。設定した有意水準 0.05 とほぼ一致しています。つまり「本当は差がないのに差があると言ってしまう確率」が、想定どおり5%に抑えられている状態です。

ところが盲検を外すと 0.271本当は差がないのに、5回に1回以上「効いた」と結論してしまいます。しかも下駄はわずか1.5点で、スコアの標準偏差8に比べればごく小さな甘さにすぎません。評価者のちょっとした思い込みだけで、偽陽性の確率が5%から27%へ跳ね上がるのです。

ここが大事なところです。ランダム化が防いでくれるのは割り付けの偏りであって、割り付けたあとに入り込む測定・評価の偏りは防げません。だから盲検化という別の仕組みが必要になります。なお p 値そのものの意味についてはp値とは何か?もあわせてご覧ください。

⚠️ 注意
現実には盲検にできない試験があります。手術、リハビリテーション、運動や食事の生活指導などは、受けている本人にも担当者にも隠しようがありません。この場合は次のような工夫で偏りを減らします。

  • 治療は見えても、アウトカムを判定する人だけは盲検にする(評価者盲検)
  • 主観の入りにくい客観的なエンドポイント(検査値、画像の中央判定など)を主要評価項目に選ぶ
  • 判定基準を事前に文書化し、判定者を治療チームから独立させる

「盲検にできないから仕方ない」で終わらせず、どこまで盲検にできたかを論文で確認する習慣を持ちましょう。

対照群の置き方も結論を左右します。プラセボと比べるのか、すでにある標準治療と比べるのかで問える問いが変わりますし、有効な標準治療があってプラセボ対照が倫理的に難しい場面では、実薬を対照にして「大きく劣らないこと」を示す設計が使われます。この考え方は非劣性試験(Non-inferiority Trial)設計と解析で詳しく扱っています。

RCTの結果を正しく読む ― ITT・主要評価項目・そして限界

設計がどれだけ立派でも、解析と読み方を誤ればランダム化の恩恵は失われます。読むときの勘所を押さえておきましょう。

ITT(intention-to-treat)― 割り付けられたとおりに解析する

途中で服薬をやめた人、実際には飲まなかった人を解析から除きたくなりますが、これをやるとランダム化が壊れます。「やめた」という事実そのものが、体調の悪さや副作用と結びついているからです。除外した瞬間、両群に残るのは「うまくいった人だけ」になり、パートBで見た観察研究と同じ落とし穴に戻ってしまいます。だからこそ、割り付けられた群のまま解析するITTが原則です。解析対象集団の定義はITT・FAS・PP・mITT の違いを完全整理に、中止や治療変更といった出来事をどう扱うかを設計段階で決めておく枠組みはICH E9(R1) Estimandフレームワーク徹底解説にまとめています。

主要評価項目は事前に1つ決めておく

10個の項目を測って、いちばん良かった1つだけを報告すれば、差がなくても「効いた」結果はいくらでも作れます。だから主要評価項目・解析方法・症例数は、データを見る前に計画書へ書いておきます。同じ理由で、サブグループでの「この年齢層では効いた」に飛びつかないことも大切です。部分集団に切るほど人数は減り、偶然の差は出やすくなります。読み方はサブグループ解析と交互作用検定を正しく行うを参考にしてください。結果は p 値の有無だけでなく、効果の大きさと信頼区間の幅をセットで見る癖をつけると誤読が減ります(信頼区間とp値の関係を図解で理解する)。

RCTでも分からないこと

  • 外的妥当性:試験に参加できるのは適格基準を満たした人だけです。高齢の方や合併症の多い方が除かれていれば、その結果が目の前の患者さんにそのまま当てはまるとは限りません。
  • 稀な有害事象:観察期間が数か月から数年で、症例数も限られるため、頻度の低い副作用や長期の影響はRCTだけでは拾いきれません。
  • そもそもできない場面:害が予想される曝露をくじ引きで割り付けることは倫理的にできませんし、費用や期間の面で現実的でないこともあります。

こうした場面を補うのが、日常診療で蓄積されたデータを使うアプローチです(リアルワールドエビデンス(RWE)入門)。なかでも「もしRCTをやるならどう設計したか」を先に書き出し、それを実データ上で模倣するTarget Trial Emulation(TTE)とはという考え方は、RCTの発想を観察データに持ち込む試みとして注目されています。

🔑 まとめ・実務ポイント
論文やニュースでRCTの結果を見かけたら、次の5つを確認してみてください。

  • 対照群は何か ― プラセボか、標準治療か、無治療か
  • ランダム化と割付の隠蔽はされたか ― 割付方法と、次の割付が事前に見えない仕組みの記載があるか
  • 盲検はどこまでか ― 患者・医師・評価者のうち誰に伏せられていたか
  • 主要評価項目は事前に決まっていたか ― 項目が1つに絞られ、計画書どおり報告されているか
  • ITTで解析されているか ― 中止・脱落した人がどう扱われたか

この5つに答えられる報告なら、示された数値をひとまず信頼して読み進められます。

📚 この記事をより深く理解するための参考書籍

「なぜ比べ方を工夫しないといけないのか」を、数式に頼らず腹落ちさせてくれる3冊を紹介します。

「原因と結果」の経済学 ― データから真実を見抜く思考法』中室牧子・津川友介(ダイヤモンド社、2017年)
数式をいっさい使わずに「比べたつもりで比べられていない」状態を説明した入門書です。健康診断や学歴といった身近な題材ばかりなので、本記事の「対照群がないと何も言えない」という話が具体例つきで腹に落ちます。統計をこれから学ぶ方、非統計職の同僚にRCTの意義を説明したい方の最初の1冊としておすすめできます。
『医学的研究のデザイン ― 推論の質を高める系統的アプローチ』木原雅子・木原正博 訳(メディカル・サイエンス・インターナショナル)
臨床研究のデザインを、研究の問いの立て方から割付・盲検化・脱落への対処まで順を追って解説した定番書です。本記事で扱った割付の隠蔽、盲検化の水準、ITTといった項目が、それぞれ独立した章として詳しく展開されます。RCTを「読む側」から「組み立てる側」に回りたくなったときの次の1冊です。
『臨床試験の事典』丹後俊郎・松井茂之 編(朝倉書店)
臨床試験のデザインと統計手法のキーワードを、1項目あたり2〜4ページ単位で引ける事典です。ランダム化・盲検化・解析対象集団といった本記事の用語はもちろん、実務で急に出てくる用語も同じ密度で調べられます。通読する本ではなく、机の横に置いて必要なときに開く一冊として長く使えます。

関連記事・次のステップ

臨床試験の全体像から押さえたい方は、臨床試験のフェーズ(第I相〜第IV相)とはで開発の流れをつかんでから、臨床試験でよく使われる試験デザイン完全ガイドクロスオーバー試験の理論と実務非劣性試験(Non-inferiority Trial)設計と解析へ進むと、RCTの型がひととおり見渡せます。試験を進めながら途中で結果を覗く仕組みは中間解析入門で扱っています。

ランダム化そのものを深掘りしたい方には、ランダム化割付の方法とR実装が本記事の直接の続きになります。なぜ偏りが生まれるのかという根っこは【やさしく解説】交絡(交絡因子)とは、症例数をどう決めるかは検出力分析(Power Analysis)入門をご覧ください。

結果の読み方を固めたい方は、ITT・FAS・PP・mITTの違いを完全整理ICH E9(R1) Estimandフレームワーク徹底解説が要になります。数値の読み方はp値とは何か?信頼区間とp値の関係を図解で理解するオッズ比・相対リスク・ハザード比の違いで補強できます。

RCTができない場面に関心がある方は、リアルワールドエビデンス(RWE)入門傾向スコア分析(Propensity Score Analysis)とはTarget Trial Emulation(TTE)とは外部対照群(External Control Arm)とはへ。Rの操作そのものが不安な方はR入門から始められます。臨床試験を仕事にすることに興味が出てきた方は生物統計家の就職先はどこ?生物統計家を目指すための勉強法もあわせてどうぞ。

まとめ

本記事では、RCT(ランダム化比較試験)とは何か、そしてなぜくじ引きで治療を決めると「効いた」と言えるのかを、Rのシミュレーションで確かめながら整理しました。

もっとも大事だったのは、同じ真の効果から作ったデータでも、割り付け方ひとつで結論が正反対になるという事実です。新薬の真の効果が +3.00 点であるにもかかわらず、医師が患者を見て投薬を決めた観察研究では推定値が -1.38、95%信頼区間 [-2.33, -0.43] となり、「有意に悪い」という結論が出てしまいました。新薬群に重症度の高い人(0.39 対 -0.45)と、誰も測っていない要因の悪い人(0.39 対 -0.30)が集まっていたからです。同じ設定でくじ引きにすると両方が揃い、推定値は 2.42、95%信頼区間 [1.36, 3.48] と真値 3.00 を含みました。統計的な調整で消せるのは測った要因だけであるのに対し、ランダム化は測っていない要因まで確率的に揃えてくれる。これがRCTだけが持つ強みです。

同時に、ランダム化は万能ではないことも見てきました。症例数が小さいとベースラインの偏りは残り、n=20 では20回に1回は群間差が 0.926 に達します。n=1000 まで増やすと中央値 0.042、95パーセンタイルでも 0.127 まで縮みました。ランダム化が保証するのは「平均的に偏らない」ことであって、目の前の1回の試験で必ず揃うことではありません。だからこそ症例数設計と層別化が必要になります。さらに、割り付けたあとに入り込む偏りはランダム化では防げません。真の効果がゼロでも、評価者が群を知っているだけで有意になる割合は 5.1% から 27.1% へと跳ね上がりました。ランダム化・割付の隠蔽・盲検化は、それぞれ別の穴をふさぐ道具として3つとも必要なのです。

これからRCTの結果に触れるときは、対照群は何か、ランダム化と隠蔽はされているか、盲検はどこまでか、主要評価項目は事前に決まっていたか、ITTで解析されているか、という5つを順に確認してみてください。この5つを見るだけで、記事の見出しやプレスリリースの印象に流されずに結果を読めるようになります。次の一歩として、実際の割付をどう組むかを知りたい方はランダム化割付の方法とR実装を、解析対象集団の考え方を固めたい方はITT・FAS・PP・mITTの違いを完全整理をご覧いただければと思います。ランダム化は、統計の難しい技術というより「自分の判断が入り込む余地を、あらかじめ手放しておく」という設計思想そのものです。

ABOUT ME
tomokichi
外資系製薬会社で生物統計家として働ている1児のパパ。生物統計家とは何か、どのようなスキルが必要か、何を行っているのかを共有していきたいと思っております!生物統計に関する最新情報を皆様にお届けすべく、日々奮闘中です。趣味は筋トレ、温泉巡り、家族と散歩。