分割表

コクランマンテルヘンツェル検定:生物統計における層別解析の基礎と実装

はじめに

製薬業界における臨床試験や薬剤疫学研究では、治療群と対照群の比較を行う際に交絡因子の影響を適切に調整することが不可欠です。特に、年齢層や施設、背景疾患などによって結果が大きく左右される場合、単純なカイ二乗検定やFisherの正確確率検定では誤った結論に至る可能性があります。
このような状況で用いられる代表的な方法がコクランマンテルヘンツェル(CMH)検定です。本検定は、複数の層(strata)に分けられた2×2分割表において、共通オッズ比が1であるかを検定する手法であり、シンプソンのパラドックスを回避するための重要な統計的枠組みを提供します。本稿ではコクランマンテルヘンツェル(CMH)検定の数理的な導出からR言語での実装などを解説していきたいと思います。
分割表については以下の記事で解説しております。

分割表の独立性の検定:製薬統計の現場での理論と実装分割表と独立性の検定について数理的な導出、Rによる実装例、製薬業界での実務的な留意点を体系的に解説します。...

シンプソンのパラドックスとは?

部分集団(層別)では一貫した傾向が見られるのに、全体をまとめると逆の結論になる現象を指します。
これは交絡因子やサンプルサイズの偏りによって生じ、直感に反するため「パラドックス」と呼ばれます。

例:新薬の有効性を男女別に評価するケース

男女別の結果

性別治療あり(成功/全体)成功率治療なし(成功/全体)成功率
男性116/18662%18657%
女性7/1644%1640%
  • 男性では「治療あり」の方が成功率が高い
  • 女性でも「治療あり」の方が成功率が高い
    ➡ 男女別に見ると「新薬は有効」と結論できそうです。

全体をまとめた結果

治療群成功 / 全体成功率
治療あり123 / 20250%
治療なし78 / 18941%

➡ ここでは「治療あり」の方がむしろ 効果が低い ように見えます。

なぜ逆転が起きるのか?

  • 男性は「治療あり」に多く割り付けられ、もともと成功率が高い集団
  • 女性は「治療なし」に多く割り付けられ、もともと成功率が低い集団
  • その結果、全体を単純に合算すると「治療あり」の方が不利に見えてしまう

つまり、性別という交絡因子が結果を歪めているのです。

製薬統計における示唆

  • 臨床試験や観察研究では、層別解析交絡因子の調整が不可欠
  • シンプソンのパラドックスを避けるために、コクランマンテルヘンツェル検定ロジスティック回帰などの方法が用いられる
  • 規制当局への申請資料でも「全体解析」と「層別解析」の両方を提示することが推奨される

数理的背景

設定

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

CMH検定の実行

#Cochran-Mantel-Haenszel test

result <- mantelhaen.test(drug_data)
print(result)

この結果から、層を調整した上で新薬群の有効性が有意に高いことが示唆されます。

実務上の留意点

オッズ比の均一性仮定: CMH検定は「全層で共通のオッズ比」という仮定に基づく。層間で交互作用が強い場合は適用不適切。

Breslow-day検定: オッズ比の均一性を検証する補助的手法として利用可能。

連続性補正: mantelhaen.test()correct=TRUE で適用可能。サンプルサイズが小さい場合に有効。

正確検定: exact=TRUE を指定することで、漸近近似に頼らない検定が可能。

まとめ

今回はコクランマンテルヘンツェル検定について解説いたしました。コクランマンテルヘンツェル検定は、交絡因子によって層別化された複数の2×2分割表において、曝露とアウトカムの関連を統合的に評価する統計手法です。各層でのオッズ比が共通であるという仮定のもと、全体としての有意性を検定します。臨床試験や薬剤疫学では、施設や年齢層などの交絡因子を調整することで、より妥当な因果推論が可能となり、シンプソンのパラドックスの回避にも有効です。Rでは mantelhaen.test() 関数により簡便に実装でき、製薬統計の現場で広く活用されています。

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