はじめに
製薬業界における臨床試験や安全性評価では、しばしば2×2分割表に基づく統計的検定が必要となります。例えば、治療群と対照群における有害事象の発生有無、あるいはバイオマーカーの陽性・陰性と治療効果の有無といった場面です。このとき最も基本的な手法は下記記事でも紹介いたしましたが、カイ二乗検定です。
しかし、セルの期待度数が小さい場合(特に5未満が存在する場合)には、カイ二乗近似の精度が低下します。そこで登場するのがFisherの正確検定(Fisher’s Exact Test)です。
本稿では、数理的な導出から製薬業界での利用シーン、Rでの実装例を解説いたします。
Fisherの正確検定の数理的背景
設定
以下のような\(2 \times 2\)分割表を考えます。
| 事象あり | 事象なし | 合計 | |
| 治療群 | \(n_{11} ,\pi_{11}\) | \(n_{12} ,\pi_{12}\) | \(n_{1+}\) | 
| 対照群 | \(n_{21} ,\pi_{21}\) | \(n_{22} ,\pi_{22}\) | \(n_{2+}\) | 
| 合計 | \(n_{+1}\) | \(n_{+2}\) | \(n\) | 
仮説
以下のような仮説を設定します。
- 帰無仮説 \(H_0\): 行変数と列変数は独立である。
 - 対立仮説 \(H_1\): 独立ではない(関連がある)。
 
ここで帰無仮説は分割表のオッズ比\(OR = \frac{\pi_{11}\pi_{22}}{\pi_{12}\pi_{21}}=1\)と表すこともできます。
超幾何分布による導出
帰無仮説の下では、行・列の周辺和(marginal totals)は固定されます。つまり、総数n、治療群の人数\(n_{1+}\)、事象ありの人数\(n_{+1}\)が与えられたとき、セル\(n_{11}\)の値は超幾何分布に従います。
$$
\begin{eqnarray}
P(n_{11}, n_{12}, n_{21}, n_{22} | \pi_{11}, \pi_{12}, \pi_{21}, \pi_{22}, n)\\ 
&=& \frac{n!}{n_{11}!n_{12}!n_{21}!n_{22}!} \pi_{11}^{n_{11}}\pi_{12}^{n_{12}}\pi_{21}^{n_{21}}\pi_{22}^{n_{22}}
\end{eqnarray}
$$
今、周辺度数\(n_{1+}\), \(n_{2+}\), \(n_{+1}\), \(n_{+2}\)が固定されているので、
\[n_{12} = n_{1+} – n_{11}, n_{21} = n_{+1} – n_{11}\]
\[n_{22} = n – (n_{11} +n_{12} + n_{21}) = n +n_{11} – n_{1+} – n_{+1}\]
よって、
$$
\begin{eqnarray}
P(n_{11}, n_{12}, n_{21}, n_{22} | \pi_{11}, \pi_{12}, \pi_{21}, \pi_{22}, n)
&=& \frac{n!}{n_{11}!(n_{1+} – n_{11})!(n_{+1} – n_{11})!(n +n_{11} – n_{1+} – n_{+1})!} \pi_{11}^{n_{11}}\pi_{12}^{(n_{1+} – n_{11})}\pi_{21}^{(n_{+1} – n_{11})}\pi_{22}^{(n +n_{11} – n_{1+} – n_{+1})}\\
&=& \frac{n!}{n_{11}!(n_{1+} – n_{11})!(n_{+1} – n_{11})!(n +n_{11} – n_{1+} – n_{+1})!} \frac{\pi_{11}\pi_{22}}{\pi_{12}\pi_{21}}^{n_{11}}\pi_{12}^{n_{1+}}\pi_{21}^{n_{+1}}\pi_{22}^{(n – n_{1+} – n_{+1})}\\
&=& C \times OR^{n_{11}}\pi_{12}^{n_{1+}}\pi_{21}^{n_{+1}}\pi_{22}^{(n – n_{1+} – n_{+1})}
\end{eqnarray}
$$
ここで離散型確率密度関数の場合、
\[f(x|y,z) = \frac{f(x,y,z)}{f(y,z)} = \frac{f(x,y,z)}{\sum_{x}f(x,y,z)}\]
これより、
\begin{equation}
P(n_{11}| n_{1+}, n_{+1}, \pi_{11}, \pi_{12}, \pi_{21}, \pi_{22}, n) = \frac{P(n_{11}, n_{1+}, n_{+1} | \pi_{11}, \pi_{12}, \pi_{21}, \pi_{22}, n)}{\sum_{n_{11} = a_{l}}^{a_{u}}P(n_{11}, n_{1+}, n_{+1} | \pi_{11}, \pi_{12}, \pi_{21}, \pi_{22}, n) } – (i)
\end{equation}
ここで、\(a_{l} \leq n_{11} \leq a_{u}\)であり、
\(a_u\)は\(n_{11}\)の最大値で\(min(n_{+1}, n_{1+})\)、また\(n_{12}\)の最大値で\(min(n_{+2}, n_{1+})\)
よって、
$$
\begin{eqnarray}
a_{l} &=& n_{1+} – (n_{12}\text{の最大値})\\
&=& n_{1+} – min(n_{+2}, n_{1+})\\
&=& max(0,n_{1+} – n_{+2})
\end{eqnarray}
$$
\[max(0,n_{1+} – n_{+2}) \leq n_{11} \leq min(n_{+1}, n_{1+}))\]
これより、\((i)\)は
$$
\begin{eqnarray}
(i) &=& \frac{C \times OR^{n_{11}}\pi_{12}^{n_{1+}}\pi_{21}^{n_{+1}}\pi_{22}^{(n – n_{1+} – n_{+1})}}{\sum_{i=a_{l}}^{a_{u}}C \times OR^{i}\pi_{12}^{n_{1+}}\pi_{21}^{n_{+1}}\pi_{22}^{(n – n_{1+} – n_{+1})}}\\
&=& \frac{C \times OR^{n_{11}}}{\sum_{i=a_{l}}^{a_{u}}C OR^{i}}\\
\end{eqnarray}
$$
ここで、
$$
\begin{eqnarray}
C &=& \frac{n!}{n_{11}!(n_{1+} – n_{11})!(n_{+1} – n_{11})!(n +n_{11} – n_{1+} – n_{+1})!}\\
&=& \frac{n_{1+}!}{n_{11}!(n_{1+} – n_{11})!}\times \frac{(n – n_{1+})!}{(n_{1+} – n_{11})!{(n – n_{1+}) – (n_{+1} – n_{11})}!} \times \frac{n!}{n_{1+}!(n – n_{1+})!}\\
&=& \binom{n_{1+}}{n_{11}}\binom{n-n_{1+}}{n_{1+}-n_{11}}\binom{n}{n_{1+}}
\end{eqnarray}
$$
$$
\begin{eqnarray}
(i) &=& \frac{\binom{n_{1+}}{n_{11}}\binom{n – n_{1+}}{n_{1+}-n_{11}}OR^{n_{11}}\binom{n}{n_{1+}}}{\sum_{i=a_{l}}^{a_{u}}\binom{n_{1+}}{i}\binom{n – n_{1+}}{n_{+1} -i}OR^{i}\binom{n}{n_{1+}}} –(ii)
\end{eqnarray}
$$
これは非心度ORのフィッシャー非心超幾何分布である。
帰無仮説の下では、\(H_0: OR =1\)より、
$$
\begin{eqnarray}
(ii) &=& \frac{\binom{n_{1+}}{n_{11}}\binom{n – n_{1+}}{n_{1+}-n_{11}}\binom{n}{n_{1+}}}{\sum_{i=a_{l}}^{a_{u}}\binom{n_{1+}}{i}\binom{n – n_{1+}}{n_{+1} -i}\binom{n}{n_{1+}}}
&=& \frac{\binom{n_{1+}}{n_{11}}\binom{n – n_{1+}}{n_{1+}-n_{11}}}{\binom{n}{n_{+1}}}
\end{eqnarray}\\
$$
となり、以下のような超幾何分布となる。
\[P(x|n_{1+},n_{+1},n,OR_{0})=\frac{\binom{n_{1+}}{n_{11}}\binom{n – n_{1+}}{n_{1+}-n_{11}}}{\binom{n}{n_{+1}}}\]
*\(OR_{0}\)は帰無仮説\(H_0\)の下でのオッズ比、すなわち1となる。
ここで以下のような仮説を立てた時のP値は以下のようになる。
- 帰無仮説 \(H_0 : OR= 1\)
 - 対立仮説 \(H_1 : OR > 1\)
 
\[P-value = \sum_{x=a}^{a_{u}} P(x|n_{1+},n_{+1},n ,OR_{0})\]
これより有意水準\(\alpha\)とすると、
- \(P-value \le \alpha \rightarrow H_{0}\)をreject
 - \(P-value > \alpha \rightarrow H_{0}\)をaccept
 
また、対立仮説を変えて、以下の仮説を立てた時のP値は以下のようになる。
- 帰無仮説 \(H_0 : OR= 1\)
 - 対立仮説 \(H_1 : OR < 1\)
 
\[P-value = \sum_{x=a_{l}}^{a} P(x|n_{1+},n_{+1},n ,OR_{0})\]
これより有意水準\(\alpha\)とすると、
- \(P-value \le \alpha \rightarrow H_{0}\)をreject
 - \(P-value > \alpha \rightarrow H_{0}\)をaccept
 
と検定できます。
製薬業界での利用シーン
有害事象の比較
臨床試験では、治療群と対照群での有害事象発生率を比較することが頻繁にあります。特に希少な有害事象(例:重篤な副作用)の場合、発生数が非常に小さく、カイ二乗検定では不適切です。このときFisherの正確検定が推奨されます。
サブグループ解析
バイオマーカー陽性/陰性群における治療効果の有無を比較する場合も、サンプルサイズが限られるためFisher検定が有効です。
規制当局の視点
FDAやPMDAのガイドラインでも、小規模試験や希少疾患領域ではFisherの正確検定が適切とされています。特に安全性シグナルの検出においては、誤った近似を避けるために正確検定が重視されます。
R言語による実装
有害事象の比較:仮に以下のようなデータが得られたとします。
- 治療群:有害事象あり 1例、なし 9例
 - 対照群:有害事象あり 7例、なし 3例
 
#データ作成
AE_table <- matrix(c(1, 9, 7, 3),
nrow = 2,
byrow = TRUE,
dimnames = list(
Group = c(“Treatment”, “Control”),
AE = c(“Yes”, “No”)
))
AE_table
#Fisherの正確検定
fisher.test(AE_table)
Fisher’s Exact Test for Count Data
data: AE_table
p-value = 0.04762
alternative hypothesis: true odds ratio is not equal to 1
95 percent confidence interval:
0.02482 0.98765
sample estimates:
odds ratio
0.1234567
解釈:ここでp値が0.05未満であるため、治療群と対照群で有害事象発生率に有意差があると判断されます。
Fisher検定とオッズ比
Fisherの正確検定は、単にp値を算出するだけでなく、オッズ比とその信頼区間を提供します。これは臨床試験報告において極めて重要です。
- オッズ比 = (ad) / (bc)
 - 信頼区間は正確法に基づき計算されます。
 
製薬業界では、p値とともにオッズ比・信頼区間を提示することが規制当局への提出資料でも必須です。
Fisher検定の限界と注意点
計算量の増大:サンプルサイズが大きい場合、計算が膨大になります。ただし現代の計算機ではほとんど問題になりません。
解釈の慎重さ:p値が有意でも、臨床的意義があるかどうかは別問題です。必ず効果量(オッズ比)と臨床的解釈を併せて行う必要があります。
多重検定問題:複数の有害事象を同時に検定する場合、偽陽性率が増加するため補正が必要です。
まとめ
今回はFisherの正確検定について解説していきました。Fisherの正確検定は、2×2分割表における小規模データや希少事象の解析において信頼性の高い手法であり、製薬業界では有害事象比較やサブグループ解析に頻用されます。数理的には周辺和を固定した条件下でセルの分布を超幾何分布として扱い、観測値とそれ以上に極端な表の確率を合計してp値を算出します。Rのfisher.test()関数を用いれば容易に実装でき、p値に加えてオッズ比とその信頼区間も得られるため、統計的有意性と臨床的意義を併せて評価する上で有用です。












