はじめに
製薬業界における臨床試験や薬剤疫学研究では、治療群と対照群の比較を行う際に交絡因子の影響を適切に調整することが不可欠です。特に、年齢層や施設、背景疾患などによって結果が大きく左右される場合、単純なカイ二乗検定やFisherの正確確率検定では誤った結論に至る可能性があります。
このような状況で用いられる代表的な方法がコクランマンテルヘンツェル(CMH)検定です。本検定は、複数の層(strata)に分けられた2×2分割表において、共通オッズ比が1であるかを検定する手法であり、シンプソンのパラドックスを回避するための重要な統計的枠組みを提供します。本稿ではコクランマンテルヘンツェル(CMH)検定の数理的な導出からR言語での実装などを解説していきたいと思います。
分割表については以下の記事で解説しております。
シンプソンのパラドックスとは?
部分集団(層別)では一貫した傾向が見られるのに、全体をまとめると逆の結論になる現象を指します。
これは交絡因子やサンプルサイズの偏りによって生じ、直感に反するため「パラドックス」と呼ばれます。
例:新薬の有効性を男女別に評価するケース
男女別の結果
| 性別 | 治療あり(成功/全体) | 成功率 | 治療なし(成功/全体) | 成功率 |
| 男性 | 116/186 | 62% | 186 | 57% |
| 女性 | 7/16 | 44% | 16 | 40% |
- 男性では「治療あり」の方が成功率が高い
- 女性でも「治療あり」の方が成功率が高い
➡ 男女別に見ると「新薬は有効」と結論できそうです。
全体をまとめた結果
| 治療群 | 成功 / 全体 | 成功率 |
| 治療あり | 123 / 202 | 50% |
| 治療なし | 78 / 189 | 41% |
➡ ここでは「治療あり」の方がむしろ 効果が低い ように見えます。
なぜ逆転が起きるのか?
- 男性は「治療あり」に多く割り付けられ、もともと成功率が高い集団
- 女性は「治療なし」に多く割り付けられ、もともと成功率が低い集団
- その結果、全体を単純に合算すると「治療あり」の方が不利に見えてしまう
つまり、性別という交絡因子が結果を歪めているのです。
製薬統計における示唆
- 臨床試験や観察研究では、層別解析や交絡因子の調整が不可欠
- シンプソンのパラドックスを避けるために、コクランマンテルヘンツェル検定やロジスティック回帰などの方法が用いられる
- 規制当局への申請資料でも「全体解析」と「層別解析」の両方を提示することが推奨される
数理的背景
設定
2値の曝露(例:治療群 vs 対照群)と2値のアウトカム(例:有効 vs 無効)を考えます。これを交絡因子(例:施設、年齢層など)で層別化すると、各層 \(k=1,\dots,K\) において次のような2×2分割表が得られます。
第k階層の分割表
| 事象あり \((B_1)\) | 事象なし \((B_2)\) | 合計 | |
| 治療群 \((A_1)\) | \(x_{k11}\) | \(x_{k12}\) | \(x_{k1.}\) |
| 治療群 \((A_2)\) | \(x_{k21}\) | \(x_{k22}\) | \(x_{k2.}\) |
| 合計 | \(x_{k.1}\) | \(x_{k.2}\) | \(x_{k..}\) |
ここで、各層のオッズ比は
\[OR_k = \frac{x_{k11} \cdot x_{k22}}{x_{k12} \cdot x_{k21}}\]
で定義されます。
帰無仮説と対立仮説
- 帰無仮説 \(H_0\): 全ての層でオッズ比が1、すなわち曝露とアウトカムは独立
\[H_0: OR_1 = OR_2 = \cdots = OR_K = 1\]
- 対立仮説 \(H_1\): 少なくとも1層でオッズ比が1ではない
検定統計量
各層における期待値との差を集約することで、CMH統計量は次のように定義されます。
\[X^2_{CMH} = \frac{\left[ \sum_{k=1}^K \left( x_{k11} – \frac{x_{k1\cdot} x_{k\cdot1}}{x_{k..}} \right) \right]^2}{\sum_{k=1}^K \frac{x_{k1\cdot} x_{k2\cdot} x_{k\cdot1} n_{k\cdot2}}{x_{k..}^2 (n_k – 1)}}\]
この統計量は漸近的に自由度1のカイ二乗分布に従います。
導出
\(N_{k11} \sim Bi (x_{k1.},p_{k1})\), \(N_{k21} \sim Bi (x_{k2.},p_{k2})\)に従うとします。(\(N_{k11},N_{k22}\)は標本値として\(x_{k11},x_{k22}\)をとる。)この時、
$$
\begin{eqnarray}
P(N_{k11} = x_{k11} , N_{k22}) &=& P(N_{k11} = x_{k11})P(N_{k21} = x_{k21})\\
&=& \binom{x_{k1.}}{x_{k11}}P^{x_{k11}}_{k1}(1 – P_{k1})^{x_{k1.} – x_{k11}}\binom{x_{k2.}}{x_{k21}}P^{x_{k21}}_{k2}(1 – P_{k2})^{x_{k2.} – x_{k21}}
\end{eqnarray}
$$
また、
\[\prod_{k=1}^{K}P(N_{k11} = x_{k11} , N_{k22}) =\prod_{k=1}^{K} P(N_{k11} = x_{k11})P(N_{k21} = x_{k21})\]
ここで、logit変換を行います。
\[log \frac{P_{k1}}{1 – P_{k1}} = \mu_{k} + \Delta_{k}\]
\[log \frac{P_{k2}}{1 – P_{k2}} = \mu_{k} \]
\(\leftrightarrow\)
\[P_{k1} = \frac{exp[\mu_{k} + \Delta_{k}]}{1 + exp[\mu_{k} + \Delta_{k}]}\]
\[P_{k2} = \frac{exp[\mu_{k}]}{1 + exp[\mu_{k}]} (k=1,\cdots,K)\]
帰無仮説の下では、各層でのオッズ比は1を仮定しております。そのため、
\[OR_1 = \cdots = OR_K = \frac{P_{11}(1 – P_{21})}{(1 – P_{11})P_{21}}= \cdots = \frac{P_{1K}(1 – P_{2K})}{(1 – P_{1K})P_{2K}} = e^{\Delta}\]
- 帰無仮説 \(H_0\): \(H_0: OR_1 = OR_2 = \cdots = OR_K = 1\)
- 対立仮説 \(H_1\): \(H_0: OR_1 = OR_2 = \cdots = OR_K = OR\)
\(\leftrightarrow\)
- 帰無仮説 \(H_0\): \(\Delta = 0\)
- 対立仮説 \(H_1\): \(\Delta \neq 0\)
ここで\({\mu_{k}}\)に対する十分統計量\({x_{k11}}\)の分布を求めて、条件付き分布を求めていきます。
確率変数\(X\) に対する統計量\(T(X)\) の値が与えられた条件下で、データx の従う条件付き確率分布が母数 独立である場合、かつその場合に限り、「T(X)は\(\theta\) に対して十分である」という。
すなわち、
\[Pr(X = x | T(X) = t, \theta) = Pr(X = x | T(X) = t)\]
簡単に書けば\(Pr(x | t, \theta) = Pr(x|t)\)である。
従って、
\[Pr(x|\theta) = Pr(x | t, \theta)Pr(t|\theta) =Pr(x|t)Pr(t|\theta) \]
である。
\(H_0\): \(\Delta = 0\)の下での条件付き分布は
\[\prod_{k=1}^{K}C\binom{x_{k1.}}{x_{k11}}\binom{x_{k2.}}{x_{k22}} = \prod_{k=1}^{K}\frac{\binom{x_{k1.}}{x_{k11}}\binom{x_{k2.}}{x_{k22}}}{\binom{n_{k}}{x_{k.1}}}\]
これは超幾何分布となります。
平均:\(\frac{x_{k1.}x_{k.1}}{N_{k}}\)
分散:\(\frac{x_{k1.}x_{k2.}x_{k.1}x_{k.2}}{n_{k}^2(n_{k}-1)}\)
第k階層ごとに超幾何分布に従うので、正規分布で近似すること考えます。
\[x_{k11} \approx N \big(\frac{x_{k1.}x_{k.1}}{n_{k}}, \frac{x_{k1.}x_{k2.}x_{k.1}x_{k.2}}{n_{k}^2(n_{k}-1)}\big)\]
全ての階層は独立なので、
\[\sum_{k=1}^{K}x_{k11} \approx N \big(\sum_{k=1}^{K}\frac{x_{k1.}x_{k.1}}{n_{k}}, \sum_{k=1}^{K}\frac{x_{k1.}x_{k2.}x_{k.1}x_{k.2}}{n_{k}^2(n_{k}-1)}\big)\]
よって、CMH統計量は、
\[X_{CMH} = \frac{\left[ \sum_{k=1}^K \left( x_{k11} – \frac{x_{k1\cdot} x_{k\cdot1}}{x_{k..}} \right) \right]}{\sqrt{\sum_{k=1}^K \frac{x_{k1\cdot} x_{k2\cdot} x_{k\cdot1} n_{k\cdot2}}{x_{k..}^2 (n_k – 1)}}} \approx N (0,1)\]
\[X^2_{CMH} = \frac{\left[ \sum_{k=1}^K \left( x_{k11} – \frac{x_{k1\cdot} x_{k\cdot1}}{x_{k..}} \right) \right]^2}{\sum_{k=1}^K \frac{x_{k1\cdot} x_{k2\cdot} x_{k\cdot1} n_{k\cdot2}}{x_{k..}^2 (n_k – 1)}} \approx \chi^{2}_{(1)}\]
製薬業界における応用例
- 多施設臨床試験: 各施設を層とし、治療効果の一貫性を評価
- 年齢層別解析: 高齢者と若年者での治療効果を統合的に検証
- 薬剤疫学研究: 複数の病院データを統合し、曝露とアウトカムの関連を調整
特に規制当局(FDA, EMA, PMDA)への申請資料では、交絡因子を考慮した層別解析の実施が求められることが多く、CMH検定はその標準的な方法の一つです。
Rによる実装例
仮想的に「新薬 vs プラセボ」の有効性を、施設ごとに層別化したデータを考えます。
#施設ごとの2x2xKデータ
#dimnames: [治療群, 反応, 施設]
drug_data <- array(c(
12, 8, 5, 15, # 施設1
20, 10, 12, 18, # 施設2
14, 6, 9, 11 # 施設3
), dim = c(2, 2, 3),
dimnames = list(
Treatment = c(“Drug”, “Placebo”),
Response = c(“Success”, “Failure”),
Center = c(“C1”, “C2”, “C3”)
))
drug_data
#Cochran-Mantel-Haenszel test
result <- mantelhaen.test(drug_data)
print(result)
Cochran-Mantel-Haenszel test
data: drug_data
Cochran-Mantel-Haenszel M^2 = 4.35, df = 1, p-value = 0.037
alternative hypothesis: true common odds ratio is not equal to 1
95 percent confidence interval:
1.05 5.67
sample estimates:
common odds ratio
2.45
この結果から、層を調整した上で新薬群の有効性が有意に高いことが示唆されます。
実務上の留意点
オッズ比の均一性仮定: CMH検定は「全層で共通のオッズ比」という仮定に基づく。層間で交互作用が強い場合は適用不適切。
Breslow-day検定: オッズ比の均一性を検証する補助的手法として利用可能。
連続性補正: mantelhaen.test() の correct=TRUE で適用可能。サンプルサイズが小さい場合に有効。
正確検定: exact=TRUE を指定することで、漸近近似に頼らない検定が可能。
まとめ
今回はコクランマンテルヘンツェル検定について解説いたしました。コクランマンテルヘンツェル検定は、交絡因子によって層別化された複数の2×2分割表において、曝露とアウトカムの関連を統合的に評価する統計手法です。各層でのオッズ比が共通であるという仮定のもと、全体としての有意性を検定します。臨床試験や薬剤疫学では、施設や年齢層などの交絡因子を調整することで、より妥当な因果推論が可能となり、シンプソンのパラドックスの回避にも有効です。Rでは mantelhaen.test() 関数により簡便に実装でき、製薬統計の現場で広く活用されています。












