【統計】χ二乗検定

独立性の  \chi^{2} 検定について。

【目次】

 

 \chi^{2} 検定はカテゴリデータのクロス表(分割表、クロステーブル)で用いられる検定。

  

帰無仮説、対立仮設


要因と結果の間に関係がないか(独立であるか)を評価する。

 

計算式等


次のクロス表で考える。

■ 観測度数

  Outcome Total
(+) (-)
Factor 1 a b AB
2 c d CD
Total AC BD N


■ 期待度数

  Outcome
(+) (-)
Factor 1  \dfrac{AB\times AC}{N}  \dfrac{AB\times BD}{N}
2  \dfrac{CD\times AC}{N}  \dfrac{CD\times BD}{N}


■  \chi^{2} 統計量

\quad \chi^{2} = \Sigma _{i=1}^{r}\Sigma _{j=1}^{c}\dfrac{\left(  max \left( ❘ O_{ij} - E_{ij} ❘ - Correct,\  0 \right) \right) ^{2}}{E_{ij}}

 自由度= \left( r - 1 \right)\left( c - 1 \right)
 ※r=行数、c=列数、Correct=連続修正(有の場合 0.5、無の場合 0)

 

ノート


期待度数は、要因と結果の間に関係がない時(独立である時)に取り得る理論値。
 \chi^{2} 検定では、この期待度数と観測度数の差(理論値と実際の値のズレ)を見ており、このズレが大きいほど独立の仮定から離れていく。
(ズレが大きいほど  \chi^{2} 統計量は大きくなり、p値が小さくなる。)


簡単なデータで計算方法を確認。
今回は、喫煙有無と肺がんの関係性という良くある例で、観測度数が下表のとおりだったとする。架空データ。

■ 観測度数

  肺がん Total
(+) (-)
喫煙 28 12 40
17 25 42
Total 45 37 82

 

この期待度数を計算すると下表のとおり。

■ 期待度数

  肺がん
(+) (-)
喫煙  \dfrac{40×45}{82}≒21.951  \dfrac{40×37}{82}≒18.049
 \dfrac{42×45}{82}≒23.049  \dfrac{42×37}{82}≒18.951

 

観測度数と期待度数から  \chi^{2} 統計量を計算する。

 \chi^{2} 統計量

  肺がん
(+) (-)
喫煙  \dfrac{\left(28-21.951\right)^{2}}{21.951}≒1.667

 \dfrac{\left(12-18.049\right)^{2}}{18.049}≒2.027

 \dfrac{\left(17-23.049\right)^{2}}{23.049}≒1.587  \dfrac{\left(25-18.951\right)^{2}}{18.951}≒1.931

上の表を総和したものが  \chi^{2} 統計量(連続修正なし)。

\quad \chi^{2}=1.667+2.027+1.587+1.931≒7.212

また、連続修正ありの場合は次のとおり。

\quad \chi^{2}=1.403+1.706+1.336+1.625≒6.0689

 

今回のクロス表は2×2表のため、自由度=1 の  \chi^{2} 分布のもと、p値は次のようになります。

 p≒0.007242(連続修正なし)
 p≒0.01376 (連続修正あり)

 

Rでの実行:

> mtx1 <- matrix(c(28, 12, 17, 25), nrow=2, byrow=TRUE)
> chisq.test(mtx1, correct=F)

	Pearson's Chi-squared test

data:  mtx1
X-squared = 7.212, df = 1, p-value = 0.007242

> chisq.test(mtx1, correct=T)

	Pearson's Chi-squared test with Yates' continuity correction

data:  mtx1
X-squared = 6.0689, df = 1, p-value = 0.01376


SASでの実行:

data ads;
input FACTOR OUTCOME CNT;
datalines;
1 1 28
1 0 12
0 1 17
0 0 25
;
run;
proc freq data=ads;
  table FACTOR * OUTCOME / chisq nocol nopercent;
  weight CNT / zeros;
  output out=Outds chisq;
run;

f:id:cochineal19:20201219150829p:plain

 

プログラムコード


■ Rのコード

chisq.test(mtx1, correct=T) #--correctで連続修正

 

SASのコード

proc freq data=[InputDS];
  table Outcome * Factor / chisq nocol nopercent;
  weight Count / zeros;
  output out=[OutputDS] chisq; /*連続修正無:_PCHI_,P_PCHI, 有:_AJCHI_,P_AJCHIを取得*/
run;

 

Pythonのコード 

整備中

 

Cochran's rule


期待度数が5未満のものが全体の20%を上回る場合や全体のN数が20未満の場合、 χ^{2} 検定は近似が悪くなるため使用しない方が良いと言われる(Cochran's rule)。
この場合は、水準の併合やFisher's Exact testが推奨される。

cochineal19.hatenablog.com

 

なお、交絡因子を考慮した手法としてマンテル・ヘンツェルの検定(CMH検定)などがある。

cochineal19.hatenablog.com

 

参考


統計学基礎(出版:東京図書), 日本統計学会編

統計学(出版:東京図書), 日本統計学会編

 


サイトマップ

cochineal19.hatenablog.com

本ブログは個人メモです。 本ブログの内容によって生じた損害等の一切の責任を負いかねますのでご了承ください。