共通オッズ比の検定 (test for common odds ratio) は Mantel-Haenszel test を中心に、入門書でも結構詳細に解説してあるものが多いと思う。
Mantel-Haenszel test の原典[1]は30ページ近くあり、かなり読むのが大変。純粋に統計の論文ではなく、後ろ向き研究で当時議論されていた話題を中心にし、一部の問題を解決するために Mantel-Haenszel 推定量と Mantel-Heanszel 検定を提案するという流れ。
オッズ比均質性の検定 (test for homogeneity of odds ratios) の方は、Breslow-Day test が使われることが多いと思うが、あまり詳細な解説をしてある本を見たことがない気がします。
原典は[2]で、持っているけど読んでいないので近いうちに読もう・・・
一番ポピュラーな[3, 4]では、もはやロジスティック回帰の交互作用の検定に含める形で処理されている。
今まで読んだ本の中では[5]に解説があり、Tarone の補正[6]についても触れている。
Tarone の補正も原典を読んでいないので近いうちに・・・
[7]では、Mantel-Haenszel 推定量のもとでの条件付き期待値・分散を用いる事を明記していなかったと記憶してるので多分注意が必要です統計量の詳細が省略してあります(2009-04-13修正)。
Breslow-Day test は表に対する検定で、層の数をとして第層のオッズ比をとすると
\[
H_0:\quad \psi_1=\psi_2=\ldots=\psi_p=\hat{\psi}_{\scriptsize \mbox{MH}}
\] \[
H_1:\quad \mbox{not}\quad H_0
\] 帰無仮説は各層におけるオッズ比が共通でその値が Mantel-Haenszel 推定量に等しいこと、対立仮説は帰無仮説が成り立たないことで、分散分析と似た形になっている。
これの Exact test に対応するのが Zelen's Test である。
ただし、帰無仮説は少し違って、
\[
H_0:\quad \psi_1=\psi_2=\ldots=\psi_p=\psi
\] だったはず?
Exact test 全般に関しては、[8]にかなり一般化した形でまとまっているので、勉強するならこれをきちんとやるといいんじゃないかと思う。
オッズ比均質性の検定は、$y$ がイベント、$x$ が群変数、$z$ が層別変数としたロジスティックモデル
\[
\mathrm{logit}\psi_i=\alpha+\beta x_i+\gamma z_i+\delta x_i z_i
\] において、交互作用の効果 $\delta=0$ かどうかの検定に帰着する。
以下では説明を簡略化するため、$2\times 2\times 2$ 分割表で考える; $x, y, z$ は全て $\{0, 1\}$。
$\delta=0$ であれば、どの層でも ($z=0$ でも $z=1$ でも) オッズ比は $\exp(\beta)$ なので、各層でオッズ比が等しくなる。
$\delta\not=0$ ならば、オッズ比は $z=1$ のときは $\exp(\beta+\delta)$、$z=0$ の時は $\exp(\beta)$ になり、各層でオッズ比は等しくならない事がわかる。
SAS の freq procedure では、確か Zelen's Test ができなかったと思うが、この関係を使うと正確な条件付き分布に基づいたロジスティック回帰を用いて、Zelen's Test を行うことができる。
ちなみにこれ以外についても、あまりヘンテコなパラメータ変換を行っていない二項分布の積モデルに関しては、logistic procedure の exact statement の outdist オプションで確率を求めることができる。
/* オッズ比が等しくない */ data hor1; do i = 1 to 200; do x = 0 to 1; do z = 0 to 1; /* odds ratio */ /* x: OR = exp(1) = 2.7182 */ /* x * z: OR = exp(2) = 7.3891 */ /* logOR = exp(b), logit1 - logit0 = b */ /* 上より設定するlogitにはマイナスをつける */ logit = -(-1 * x + 1 * z + 2 * x * z); p = 1 / (1 + exp(-logit)); y = rand('Bernoulli', p); output; end; end; end; run; proc logistic data = hor1; class x z / param = ref ref = first; model y = x z x * z / clodds = both; exact x * z / estimate = both; run; proc freq data = hor1; tables z * x * y / nopercent cmh; run; /* オッズ比が等しい */ data hor2; do i = 1 to 200; do x = 0 to 1; do z = 0 to 1; logit = -(-1 * x + 1 * z); p = 1 / (1 + exp(-logit)); y = rand('Bernoulli', p); output; end; end; end; run; proc logistic data = hor2; class x z / param = ref ref = first; model y = x z x * z / clodds = both; exact x * z / estimate = both; run; proc freq data = hor2; tables z * x * y / nopercent cmh; run;
こんな条件だと Breslow-Day test の結論と Zelen's test の結論は結構一致するみたいだ、微妙な条件の時はどうなんだろう。
参考文献
[1] Mantel N, Haenszel W. Statistical aspects of the analysis of data from retrospective studies of disease. Journal of the National Cancer Institute 1959; 22: 719–748.
[2] Breslow NE, Day NE. Statistical Methods in Cancer Research, Volume I: The Analysis of Case-Control Studies. International Agency for Research on Cancer, Ryon. 1980.
[3] Agresti A. Categorical Data Analysis. 2nd ed. New York: John Wiley & Sons, Inc. 2001.
[4] Agresti A. An Introduction to Categorical Data Analysis. 2nd ed. New York: John Wiley & Sons, Inc. 2007.
[5] 柳川堯. 離散多変量データの解析. 共立出版 1986.
[6] Tarone RE. On heterogeneity tests based on efficient scores. Biometrika 1985; 72(1): 91–95.
[7] Agresti A(著), 渡邉裕之, 他(訳). カテゴリカルデータ解析入門. サイエンティスト社. 2003.
[8] Hirji KF. Exact Analysis of Discrete Data. Chapman & Hall. 2005.
補足
2007/05/03に書いたものを手直し?したものです。