2011年9月5日月曜日

ノンパラメトリック検定で多重比較したいとき

先日は台風が凄くて,大学の野外実習が中止になってしまいました.
残念そうな学生も多かったのですが,ずっと地味な宿舎に泊まってネットもできずの生活から解放された私は嬉しい部分もあったりで.


さて,前回からの続きです.
現在の(私が確認しうる限りの)SPSSでは3群以上のノンパラメトリック検定を行なった後に多重比較検定を行なう手順がありません.
SPSSはとても普及している統計ソフトですので,このソフトが持つ機能が統計処理の基準だと思われている節があります.
てっきりノンパラメトリック検定は3群以上での多重比較ができない,3群以上の比較は分散分析をしないといけない,と考えている学生や院生が多いようです.

今回はSPSSとExcelの両方を合わせて使って,ノンパラメトリック検定での多重比較をやってみます.


ノンパラメトリック検定(nonparametric test)というのは,t検定や分散分析といったパラメトリック検定(parametric test)とは違い 「母集団の正規性や等分散性を仮定しない検定」 のことです.

実験ではN数(対象数)が5とか,多くても20なんていうことがしばしばあります.
でも,こんな少数では母集団の正規性が認められることは少なく,最近では統計処理手法としてノンパラメトリック検定を薦める記述を目にすることが多いですね.

「母集団の正規性,等分散性」 なんていう意味不明なことは後で勉強しとくから,とりあえずノンパラメトリック検定での多重比較を教えてほしい,という人を対象にして以下に説明します.


例として取り扱うのは以下のデータです.
SPSS for Windows ver11.0を使用しています.

※後日,エクセルでもこの作業ができるよう,
クラスカル・ウォリスの検定をエクセルでやる
フリードマンの検定をエクセルでなんとかする
を取り上げましたので,ご参照ください.

クリックしたら画像が元の大きさで見れます.

これをノンパラメトリック検定の中にある「K個の独立したサンプルの検定」を選択すると,

以下のような画面がでるので,Kruskal-Wallisを選択して検定します.

すると,以下のような検定結果が出て,有意であることが認められました.
ここまでだと,3群以上のノンパラメトリック検定の一つであるKruscal-Wallisの検定により,有意差が認められるデータであることがわかっただけで,具体的にどことどこの群間に有意差があるかを検定したことにはなりません.
なので,多重比較を行なうことになります.

以前の記事ではt検定を用いた多重比較を紹介しました.
参考記事◆対応のあるt検定と多重比較

それと基本的には変わりません.
ノンパラメトリック検定であっても,2群比較を行ない,ボンフェローニ(Bonferroni)の方法でP値を修正をすればOKです.

SPSSにおけるノンパラメトリック検定での2群間の比較は以下のようにします.

※後日,エクセルでノンパラメトリック検定をする方法を記事にしました.
マン・ホイットニーのU検定(エクセルでp値を出す)
ウィルコクソンの符号付順位和検定(エクセルでp値を出す)
ご参照ください.
ここではMann-WhitneyのU検定を選択しました.そしてOKを押します.

それで検定結果はこんなふうに出ます.正確有意確率というところを見るんだそうです.0.690となっていますね.有意ではありません.

SPSSの 「2個の独立サンプルの検定」 はグループ化変数をひとつずつ変えてやっていかなければなりません.
4群なので,全部で6通りの組み合わせです.
それを全部やって,結果をExcelに貼り付けるんですが.
そのExcelに貼り付ける方法はというと,まずは以下のように 「検定統計量」 のところをクリックして四角い枠をつけた状態にします.
そしてコピー,
それをExcelの適当なところに貼り付けますと,以下のようにデータがExcelで扱えるようになります.
例では,縦方向に組み合わせ毎のP値をコピーしています.
ここでは最後の3*4の組み合わせをコピーし,あとの部分は邪魔なので消しました.
では,さっそくこれらのP値を多重比較のP値に修正しましょう.
まずは有名なボンフェローニの方法です.
D列2行目に以下のような式を放り込みます.

=B2*6

めちゃくちゃ簡単ですが,これがボンフェローニの検定です.多重比較する組み合わせの数をP値に乗じるだけです.
今回は4群なので6を乗じていますが,3群であれば3を,5群であれば10を乗じます.

これをオートフィルしてしまうのもいいのですが,今回はボンフェローニの検定以外にも,Excelで簡単にできるP値の多重比較補正を紹介します.

次はSidakの検定です.サイダックと読むんでしょうか.
数式は以下のとおりです.E列2行目に入れました.

=1-(1-B2)^(6/1)

ボンフェローニの検定の改良版ということだそうですが.
たしかにボンフェローニの検定よりはP値を甘く出してくるようです.
今回は4群なので,べき乗する値を「6/1」にしていますが,3群であれば「3/1」に,5群であれば「10/1」にします.

これをオートフィルします.


次はライアン(Ryan)の方法を紹介します.
ライアンの方法のメリットは,ボンフェローニやサイダックといった修正方法よりも群数が多くても有意になりやすことです.
オートフィルで一気に,とはいけませんが,比較的簡単に計算できるので便利です.

この方法は平均値の大きさで多重比較する順番を決め,その順番ごとに計算する際の数値を少しずつ変える,というもの.
まず,以下をご覧ください.
各グループの平均値を出しました.
グループ1,2,3,4の順で大きくなっています.

ライアンの方法では,平均値が最大・最小の群から多重比較を始めます.
「1*4」がそれに該当しますので,そのP値を修正する計算式を以下に示します.

=B4*6

次は最大・第2最小,最小と第2最大を比較します.
例では「2*4」,「1*3」に該当します.

「2*4」は,
=B6*4


「1*3」は,
=B3*4

最後に,残りの組み合わせを以下のように計算します.
画像は省略します.

「1*2」は,
=B2*2

「2*3」は,
=B5*2

「3*4」は,
=B7*2

ライアンの方法を使う上で重要なのは,P値に乗ずる数値です.
それは,以下のようにして決めてください.

=(群数×((群数-それまでの検定回数)-1)÷2

(群数-それまでの検定回数) という数学や統計学が強い人からするとクールではない表現をしていますが,ここが肝です.
1回目の検定であれば0ということで計算してください.

具体例がないとイメージしにくいでしょう.
例えば4群であれば,1回目の検定は,

=(4×(4-1)÷2
であり,P値に6をかけます.

2回目の検定では,

=(4×(3-1)÷2
で,P値に4をかけます.以下,3回目は・・・,と続きます.



これが3群の検定であれば,1回目の検定では

=(3×(3-1)÷2
でP値に3をかけ,2回目の検定では,

=(3×(2-1)÷2
なので1.5をかける,ということです.

どうしてそんな計算式なのか?というのは,ライアンの方法を紹介した書籍やサイトをみてください.
ここではあくまで,目の前にあるデータを処理したい人用のサイトですので,統計学としての解説はすっ飛ばします.


全部を計算して,ボンフェローニとサイダック,そしてライアンを比べてみました.


ボンフェローニよりもサイダックのほうがやや甘め.
ライアンはさらに甘めです.
「2*3」のグループの組み合わせでは,ボンフェローニとサイダックでは有意差なしと判断されていますが,ライアンでは有意差ありということになっています.

一気にバーっと計算しちゃいたいならボンフェローニとサイダック.
一個ずつでも,有意差を出していきたいならライアン,ということになるでしょうか.


もちろん,今回紹介したP値の修正方法はノンパラメトリック検定にしか適用できないわけではありません.
t検定による多重比較にも適用できます.
対応のある/なしも関係ありません.
Excelだけで多重比較したい場合はこれらを利用するとよいでしょう.

Excelで多重比較まとめ
に文字通りまとめましたので,こちらもご参照ください.

統計的有意にこだわらないのであれば,
効果量(SE:effect size)をエクセルで算出する

次回は,Excelで膨大な量のデータを計算する上でのヒントを紹介します.


※後日,こんな怪しいブログよりも信頼性が高いものに触れてもらうよう,
独学で統計処理作業をスキルアップさせるための本
という記事を書きました.参照してください.


エクセルや手計算で多重比較をしたい方は,以下の2冊がオススメです.