← Studio Toriumi

Verifiable Randomisation · IBM Quantum

割り付け表を、あとから
差し替えられなくする。

臨床試験と心理実験のランダム化割り付け。 表は生成した時点で封をして、そのハッシュだけを先に公開します。 参加者ごとに1件ずつ開封し、研究終了後に全体を開示。 誰でも、事前に公開されたハッシュと突き合わせられます。無料です。

群の数と桁数を合わせます(例 2:1)

0 なら単純ランダム化。比の合計の倍数にしてください

予定より多めに用意して構いません

空欄なら層別なし。層ごとに独立した表が作られます

なぜ「封をする」必要があるのか

ランダム化そのものは難しくありません。壊れるのは、たいていその次です。

次にどの群が来るか分かる状態で参加者を組み入れると、 担当者が無意識にでも患者を選べてしまいます。 「この人は重症だから、次が対照群なら見送ろう」——これが起きた瞬間、 その研究の比較可能性は失われます。選択バイアスと呼ばれるもので、 ランダム化した意味が消えます。

だから割り付けは事前に作って隠す必要がある。これが 割り付けの隠蔽(allocation concealment)です。

ただし、隠すだけでは足りません。 隠していた側が、あとから表を作り替えられるからです。 封筒法でも中央割り付けでも、「表が途中で変わっていないこと」を 外から確かめる方法がありません。信じるしかない。

ここでやっていること

① 実機の量子ビットを種にして、割り付け表を作る ② 表は隠したまま、SHA-256 ハッシュだけを公開する ← 登録開始より前 ③ 参加者が来るたびに 1件ずつ開く。開いた時刻を記録する ④ 研究終了後、表とビットを全部開示する ⑤ 誰でも ②のハッシュ と ④の表 を突き合わせられる

②で公開してしまうので、あとから表を作り直せません。 作り直したら、④で開示した表が②のハッシュと合わなくなります。

さらに、ビットから作り直しても同じ表になることも確認しています。 つまり保存先のデータベースを直接書き換えても、そこで食い違いが出ます。

乱数について

種にしているのは IBM の量子コンピュータ実機が出した256ビットです。 量子の測定結果は、測定より前のどんな変数からも決まっていません (ベルの定理。2022年ノーベル物理学賞)。 「割り付け表を作る前には、この世の誰にも分からなかった」を言えます。

正直に書きます。実機のビットは256ビットで、 そこから先の展開は SHA-256 のカウンタモード、つまり公開された決定的計算です。 量子ではありません。種が予測不能なら、そこから先が決定的でも構わないという設計です。 そしてそのおかげで、第三者が再計算して確かめられます。

実機のビットが尽きたときは暗号乱数に落ちます。 そのときは画面と証書に「暗号乱数」と出ます。黙って差し替えることはしません。

ブロックと層別について

ブロックランダム化は、決めた数(ブロック)ごとに群の数が比のとおり揃うようにする方法です。 ブロック4で1:1なら、どの4件を取っても2件ずつになります。 途中で組み入れが止まっても群の大きさが偏らないので、臨床試験ではこちらが標準です。

ブロックサイズは論文に書きますが、実施者には伏せるのが原則です。 ブロックの大きさを知っていると、ブロックの終わりで次が予測できてしまいます (4件中3件が介入群なら、残りは対照群)。 可変ブロックを使うのが理想ですが、まずは実施者に伝えないことが先です。

層別は、性別や施設のように結果に影響しそうな要因ごとに、 独立した割り付け表を持つ方法です。ここでは層ごとに完全に別の表を作っています。

できないこと

これは医療機器でも、認証を受けたシステムでもありません。 規制のかかる治験(GCP適用)で使う場合は、施設の要件を必ず確認してください。 探索的研究、心理実験、学生実験、予備試験を想定しています。

私(運営)はデータベースを見られる立場にいます。 だから「見なくても確かめられる」形にしてあります—— 公開済みのハッシュ、開示された表、量子ビット、再計算のコード。 私を信じる必要がないように作った、というのが唯一の答えです。

盲検化(blinding)は別の話です。 この道具は割り付けを隠しますが、介入そのものを盲検化するのは研究者の仕事です。

検算のしかた

開示された表と、公開済みのハッシュだけで確かめられます。

正規化 = 層名を辞書順に並べ、"層名:0110..." を "|" でつないだ文字列 ハッシュ = SHA-256(正規化)

検算用のコードをそのまま置いてあります。 手元で走らせて、同じ値になるか試せます。

関連するもの

同じ実機のビットを使っています。 量子抽選(証書つき)、 量子乱数ビーコン(毎日きまった時刻にビットを公開)、 量子ルーレット