Excel VBAで3群以上の比率の差の多重検定ができるマクロを作ってみた3
前回、3群以上の比率の差の多重検定の方法を学びましたので、今回はいよいよExcel VBAでマクロ化したいと思います。
というわけで、ソースコード
今回も縦に長くなったので、テキストファイルをドロップボックスに保存しました。
コーディング自体はたいした工夫もしていないので、解説は割愛させていただきます。
使用上の注意
- 1行目は必ずラベル行にしてください。
- 一番左の列は必ずラベル列にしてください。
- 郡内の全数(分母)を左から2番めの列に配置してください。
- 郡内の事象発生数(分子)を左から3番めの列に配置してください。
使い方
- ソースコード全行をVBEで標準モジュールにコピペししてください。
- ラベル行からデータの最終行まで、ラベル列から分子までの3列のセル範囲を選択してください。
比率は、引数にはしません(プログラムの内部で計算します。) - [開発]→[マクロ]→[Pairwise_Comparison_bw_Ratio]を選択→【実行】をクリックしてください。
実行結果
一瞬~数秒で計算結果が表示されます。
順位でデータが並べ替えられるのは仕様です。ご了承ください。
D1セルには“非”&C1の値が、E1セルにはC1の値&“率”が自動入力されますが、不自然な単語になっている場合は、適宜修正してください。
11行目には、カイ二乗検定の結果が載っています。
青木先生の説明では、
k×2 分割表の比率のχ2検定の結果,全体として差が認められる場合にのみ対比較が行われる。
とありますが(テューキーの方法も同様)、比率のカイ二乗検定というのが全くわからないので、事象が発生しなかった数(郡内の全数-郡内の事象発生数)をD列に追加して、普通のカイ二乗検定を行っています。結果は、青木先生の計算例と同じでした。
その下に、ライアン法とテューキーのWSD法による対比較の結果が載っています。
Rとかでは、「対:結果」が複数行表示されますけど、
行列のほうが断然見やすいですよね!
境界値はどうしようか迷いましたが、レイアウト上おさまりが悪いので表示するのはやめました。
行列の右上側は、検定統計量(群間の比率の差の絶対値)、左下側は、検定統計量と1パーセント点・5パーセント点それぞれの境界値を比較した結果です。
** 1パーセント有意 * 5パーセント有意 ns 非有意 を表しています。
結果を見ると、2014年6月の合格率47.9%と2017年11月の合格率41.3%の群間でのみ5%の有意差が見られたわけですが、試しに2017年11月を外して検定にかけてみたところ、
ご覧のとおり、有意差なしになりました。
どうやら、2017年11月の合格率は異例の低さだったようです。
この場合、
- 2017年11月の受験者の学力がそれ以前の受験者より低い
- 2017年11月試験の難易度がそれ以前の試験より高い
といった理由が考えられますが、一般的には前者を取ることはないと思いますので、やはり、2017年11月試験の難易度が高かったと見るべきでしょうか?