※ 無相関検定(直接確率による方法)

2002/09/18 Nishimura Hiromi

 多くの検定方法は母集団の分布を正規分布など特定の確率密度関数を仮定している。しかし母集団が少ない場合には特定の確率密度関数に一致するとした仮定ができない。そこで母集団に対して特定の分布を仮定せず直接に確率分布を求める方法がある。

● 2x2 二組のカテゴリ間の独立性

 2x2の度数分布から度数分布のパターンすべての確率を求め、そこから観測された度数分布パターンの発生しうる確率を推定する事ができる。 mc には2x2の度数分布の周辺度数を固定し発生しうるすべてのパターンの確率を求める fisherNonePara 関数がある(さっき見てみたらまだ関数マニュアルが無いようだ)。

 良 
 不 
新治療法
旧治療法
19

 例、ある疾患の治療で新旧の治療法があり、その治療結果が上記のようであったとしよう。この時、新旧治療法で差が見られないという仮説を立てる(検定ってわざと棄却させる仮定をたてる、この辺が面白い)。

 周辺度数を固定し得られるすべてのパターンの出現確率は下記のよう計算できる。

a = |5,3||3,19|;
e = fisherNonePara(a);
e;
0.0000 8.0000 8.0000 14.0000 0.0546
1.0000 7.0000 7.0000 15.0000 0.2331
2.0000 6.0000 6.0000 16.0000 0.3569
3.0000 5.0000 5.0000 17.0000 0.2520
4.0000 4.0000 4.0000 18.0000 0.0875
5.0000 3.0000 3.0000 19.0000 0.0147
6.0000 2.0000 2.0000 20.0000 0.0011
7.0000 1.0000 1.0000 21.0000 0.0000
8.0000 0.0000 0.0000 22.0000 0.0000
.OK.

 周辺度数を固定して得られるパターンは上記の9種類である。検算として出現確率の和は1になるはずなので計算すると次のようになる。

Σ(e[#,5]);
1.0000
.OK.

 この出現確率分布は新治療法の良の数を横軸にとると下記グラフのようになる。

parametricPlot(e[#,1],e[#,5]);

 ここで、上記仮説の「新旧治療法で差が見られない」に反する(棄却する)パターンは観測結果を含め下記4パターンである(無理やりかな?)。

e[6|9,#];
5.0000 3.0000 3.0000 19.0000 0.0147
6.0000 2.0000 2.0000 20.0000 0.0011
7.0000 1.0000 1.0000 21.0000 0.0000
8.0000 0.0000 0.0000 22.0000 0.0000
.OK.

 これらパターンが得られる確率(あるはずが無いというか、あってもらいたくない確率)はそれぞれのパターンの確率の和となる。

Σ(e[6|9,5]);
0.0159
.OK.

 以上の結果より観測された度数分布のパターンを含め仮定に反するパターンの和は 0.0159 であった。もし5%の棄却域を設けるなら観測パターンは明らかに棄却域に入り仮説「新旧治療法で差が見られない」は棄却される。よって新旧治療法の治療成績には5%の危険率で有為な差があるということになる。

 確率の 0.0159 というのはどの程度の値なのであろうか。たぶんピンとこないかもしれない。例えば6枚のコインを投げ全部が表になる確率は

1/2^6;
0.0156
.OK.

 なので先の確率 0.0159 に近い。新旧治療法の治療成績に有為な差があるという結論が間違っているのは6枚のコインを投げ全部が表になる確率程度だということになる。この方が実感がもれるのではないだろうか。

【参考文献】

芝祐順 著
社会科学・行動科学のための数学入門3「統計的方法II 推測」
新曜社 昭和51年11月5日 発行

私はこのシリーズの本で統計学を勉強した。

● 備考

 mc を使うと簡単に計算できます。でも計算結果が正しいという保証はありません。というかコンピュータが計算したのだからとそのまま信じないで下さい。ひょっとしたら計算方法自体が間違っている可能性があります。

 例えば上記例で周辺度数を固定して現れるパターンの出現確率の和を計算しています。こんな処理は普通しません。でも、もし計算が間違えていたら出現確率の和は1になりません。この確認が大事なんです!

 どんな値が得られようとも貴方が納得した値ならば正しいです。命令の通り正しい値をコンピュータが計算しても貴方がその結果に疑問を持てば、それは正しい値ではありません。

 変に思うかもしれませんね。mc はコンピュータの計算結果が正しいか否かを調べる、それに応えるため開発した言語です(ブラックボックスは責任逃れ!)。