【統計】Fisher's exact test

Fisher's exact testについて。

【目次】

 

Fisher's Exact testは  χ^{2} 検定と同じく、カテゴリーデータの独立性を評価する手法。

cochineal19.hatenablog.com

 

帰無仮説、対立仮設


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

計算式等


次のクロス表で考える。

■ 観測度数

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

\quad p_{i}=\dfrac{AB!×CD!×AC!×BD!}{N!×a!×b!×c!×d!}

\quad p=\sum p_{i}\quad\verb| ( if | p_{i} \leqq \verb|Cut off )|

 

計算例


 \chi^{2} 検定では、 \chi^{2} 統計量(期待度数と観測度数のズレ)を算出し、 \chi^{2} 分布を使って p値を導出する。一方、Fisher's exact test は、統計量を算出して確率分布に近似するのではなく、直接 p値を求める方法。そのため直接確率検定とも呼ばれる。

簡単なデータを用いて計算方法を確認。
 \chi^{2} 検定の記事で使った次のクロス表を用いる。

■ 観測度数

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

 

先ず、この観測度数が起きる確率を求める。
当該確率は、次のステップでカットオフ値として用いる。

\quad \verb|Cut off|=\dfrac{ 40!×42!×45!×37! }{ 82!×28!×12!×17!×25! }≒0.00493


次に、周辺度数(AB、CD、AC、BD)を固定した場合に観測度数が取り得る全パターンを列挙し、生起確率を求める。
今回は次のパターンが列挙される。このうち、(  p_{i} \leqq \verb|Cut off| ) が "Y" になっている部分(背景ピンク色の行)が、カットオフ値以下の確率(観測パターンとそれより珍しいパターン)。 

 

最後に、カットオフ値以下の確率を総和することでp値を導出する。

\quad p=\sum p_{i}≒0.008564 

なお、上表の黄色セルが上下にあるとおり本計算は両側検定。

 

Rでの実行:

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

	Fisher's Exact Test for Count Data

data:  mtx1
p-value = 0.008564
alternative hypothesis: true odds ratio is not equal to 1
95 percent confidence interval:
 1.256537 9.512684
sample estimates:
odds ratio 
  3.377065  


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 exact nocol nopercent;
  weight CNT / zeros;
  output out=Outds chisq exact;
run;

 f:id:cochineal19:20201219150829p:plain

 

プログラムコード


■ Rのコード

fisher.test(mtx1)

 

SASのコード

proc freq data=[InputDS];
  table Factor * Outcome / fisher nocol nopercent;
  weight Count / zeros;
  exact fisher;   /* 2*2以上の表に検定を要求できる */
output out=[OutputDS] fisher; /* XP2_FISHを取得。*/ run;

 

Pythonのコード

整備中

 

参考


https://mathworld.wolfram.com/FishersExactTest.html

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

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

 


サイトマップ

cochineal19.hatenablog.com

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