シンプソンのパラドックス

Last-modified: 2008-04-21 (月) 21:58:43

シンプソンのパラドックス(Simpson's Paradox)とは,
テスト群(Test)と比較対照群(Cntl)を用意し,Testでの反応率の効果(Cntlに比べてTestの反応率が高いかどうか)を見ようとした場合などにおいて,
層別に分けた場合は,どの層においても効果ありとなるのに,全体でみると無効化だったり,逆効果だったりと矛盾する結果になる現象をいう.


(例)
Segment	Treat	N	Resp	RR
A	Test	100	40	0.4	+
	Cntl	900	270	0.3

B	Test	900	180	0.2	+
	Cntl	100	10	0.1

A+B	Test	1000	220	0.22	-
	Cntl	1000	280	0.28

これは,SegmentA,Bの層によって,TestとCntlの件数比率が歪んでおり,それにより合算した結果が
本来の傾向を反映できなくなっているためである.

このような場合は,層別の分割表の結果を統合的に評価するマンテルヘンツェルのχ2乗検定を行うことができる

サンプルプログラム

******************************************************************************
Simpson.sas
2008.4.17 翔
******************************************************************************;

/*
シンプソンのパラドックスのおこりそうな層別分割表では,
マンテルヘンツェルのX2を使うとよい
*/

options nocenter;


data simpson;
input segment $ test $  n r;
freq=n-r;resp=0;output;
freq=r;resp=1;output;
cards;
A 1Test 100	40
A 2Cntl 900	270
B 1Test 900	180
B 2Cntl 100	10
;
run;

/*
シンプソンのパラドックスのデータでは,層別(A,Bセグメント別)の傾向と
合計の傾向が矛盾する
AもBもTestのほうが,反応率がいいのに,合算するとTestのほうが悪くなる.
*/

proc freq;
  tables segment*test*resp/chisq nopercent nocol;
  tables test*resp/chisq  nopercent nocol;
  weight freq;
run;
/*
SAS システム                                                                                          2008年04月17日 木曜日 午後09時56分06秒  22

FREQ プロシジャ

表 1 : test * resp
層別変数 : segment=A

test           resp

度数          |
行のパーセント|       0|       1|   合計
--------------+--------+--------+
1Test         |     60 |     40 |    100
              |  60.00 |  40.00 |
--------------+--------+--------+
2Cntl         |    630 |    270 |    900
              |  70.00 |  30.00 |
--------------+--------+--------+
合計               690      310     1000


表 1 : test * resp の統計量
 層別変数 : segment=A

統計量                         自由度          値      p 値
-----------------------------------------------------------
カイ 2 乗値                         1      4.2076    0.0402
尤度比カイ 2 乗値                   1      4.0433    0.0443
連続性補正カイ 2 乗値               1      3.7531    0.0527
Mantel-Haenszel のカイ 2 乗値       1      4.2034    0.0403
ファイ係数                                -0.0649
一致係数                                   0.0647
Cramer の V 統計量                        -0.0649


表 2 : test * resp
層別変数 : segment=B

test           resp

度数          |
行のパーセント|       0|       1|   合計
--------------+--------+--------+
1Test         |    720 |    180 |    900
              |  80.00 |  20.00 |
--------------+--------+--------+
2Cntl         |     90 |     10 |    100
              |  90.00 |  10.00 |
--------------+--------+--------+
合計               810      190     1000


FREQ プロシジャ

表 2 : test * resp の統計量
 層別変数 : segment=B

統計量                         自由度          値      p 値
-----------------------------------------------------------
カイ 2 乗値                         1      5.8480    0.0156
尤度比カイ 2 乗値                   1      6.7050    0.0096
連続性補正カイ 2 乗値               1      5.2162    0.0224
Mantel-Haenszel のカイ 2 乗値       1      5.8421    0.0156
ファイ係数                                -0.0765
一致係数                                   0.0762
Cramer の V 統計量                        -0.0765


表 : test * resp

test           resp

度数          |
行のパーセント|       0|       1|   合計
--------------+--------+--------+
1Test         |    780 |    220 |   1000
              |  78.00 |  22.00 |
--------------+--------+--------+
2Cntl         |    720 |    280 |   1000
              |  72.00 |  28.00 |
--------------+--------+--------+
合計              1500      500     2000


test * resp の統計量

統計量                         自由度          値      p 値
-----------------------------------------------------------
カイ 2 乗値                         1      9.6000    0.0019
尤度比カイ 2 乗値                   1      9.6180    0.0019
連続性補正カイ 2 乗値               1      9.2827    0.0023
Mantel-Haenszel のカイ 2 乗値       1      9.5952    0.0020
ファイ係数                                 0.0693
一致係数                                   0.0691
Cramer の V 統計量                         0.0693

*/

/*マンテルヘンツェル*/
proc freq;
  tables segment*test*resp/cmh nopercent nocol;
  weight freq;
run;

/*
(略)


FREQ プロシジャ

test * resp の要約統計量
 層別変数 : segment

    Cochran-Mantel-Haenszel 統計量( テーブルスコアに基づく )

統計量    対立仮説                  自由度          値      p 値
----------------------------------------------------------------
  1       相関統計量                     1      9.7781    0.0018
  2       ANOVA 統計量                   1      9.7781    0.0018
  3       一般関連統計量                 1      9.7781    0.0018


                       相対リスクの推定値 ( 行 1 / 行 2 )

研究の種類                調整方法                   値        95% 信頼区間
--------------------------------------------------------------------------------
ケースコントロール研究    Mantel-Haenszel        0.5652       0.3962      0.8064
  ( オッズ比 )            ロジット               0.5788       0.4041      0.8289

コーホート研究            Mantel-Haenszel        0.8750       0.8054      0.9506
  ( 列 1 のリスク )       ロジット               0.8836       0.8265      0.9447

コーホート研究            Mantel-Haenszel        1.5000       1.1647      1.9319
  ( 列 2 のリスク )       ロジット               1.4210       1.1193      1.8040


 オッズ比等質性に対する
    Breslow-Day 検定
------------------------
カイ 2 乗値       0.8448
自由度                 1
Pr > ChiSq        0.3580


標本サイズの合計 = 2000
*/

相対リスクの推定値の読み方

相対リスク?とは,発生確率の比のことで,( 行 1 / 行 2 )と書かれているように,Test(行1のこと)とCntl(行2のこと)のそれぞれの発生確率の比をさす.すなわちコントロール群(Cntl)に対して,テスト群(Test)が何倍発生率が高いのかの推定値が出力されている.

推定値として,大きく3種類(オッズ比,列1のリスク,列2のリスク)があり,さらにそれぞれ2種類の調整方法(Mantel-Haenszel方式,ロジット方式),計6種類の推定値とその95%信頼区間が示される.

この例の場合,「列2÷(列1+列2)」が着目している発生確率となるので,コホート研究?(列2のリスク)が,相対リスクの推定値である.この場合,Mantel-Haenszel方式の調整による推定値によれば,コントロール群(Cntl)に対して,テスト群(Test)が1.5倍発生率が高く,その95%信頼区間は,1.16~1.93である.

もし,列1のほうの発生確率に対する相対リスク(列1の事象の発生確率の倍率)を知りたいなら,コホート研究?(列1のリスク)をみればよい.この場合,0.87倍(MH方式)である.

また,ケースコントロール研究?のように,列1と列2のデータが,母集団から異なるサンプリング比率で抽出されている場合,列1(もしくは列2)事象の発生確率は,「列1(もしくは列2)÷(列1+列2)」として求められない.それでも,着目している事象の発生確率が十分小さいレアイベント?であるなら,相対リスクの近似値として,オッズ比?を計算することができる.
この場合,オッズ比は,列1の事象の相対リスクの近似値として{行1の(列1/列2)}/行2の(列1/列2)}として求められる.なお,オッズ比の場合,逆数をとれば,列2の事象の相対リスクが得られる.(そのためかどうかわからないが,出力されていない.)