対応のある多群間のノンパラメトリックな比較のためのFriedmanの検定後の対比較について

Friedmanの検定後のpost hocな多重比較の結果がEZRとSPSSとjamoviで食い違うのは何故かという問い合わせメールをもらったので調べてみた。以下メールの返事を貼り付けて若干改変。

(返信第1弾)=============================

jamoviは、
https://bookdown.org/sbtseiji/jamovi_complete_guide/sec-ANOVA-friedman.html
に書かれている通り、Friedmanの後の対比較ではbonferroni補正なしのDurbin-Conover法を使っています。 

このDurbin-Conover法というのは検定の多重性の調整をしていません。内部的にはPMCMRplusというパッケージに含まれている、frdAllPairsConoverTest()という関数を使っているようで、 この関数自体にはオプションでp.adj="bon"を指定できる のですが、jamoviではそこをいじれない実装になっています。

もっとも、Bonferroniの補正という手法は、対比較で出てきたp値に比較回数を掛けるだけなので、5群間の2群ずつの総当たり比較なら10回の比較がされているので、得られたp値を10倍すれば良いわけです。

(データを使った検証部分は省略)

EZRが何故合わないかですが、EZRは対比較にWilcoxonの 符号順位検定を使っています(とメッセージにでてきます)。EZRでは正規近似でp値を出しているので、同順位の値が含まれていると、
wilcox.test.default(pairwise.response1, pairwise.response2,
alternative = "two.sided", で警告がありました:
タイがあるため、正確な p 値を計算することができません

という警告が出ます。

ここで表示されているp値は、wilcox.test(..., paired=TRUE)で得られるp値の10倍になっています。同順位があっても正確なp値が欲しい場合は、exactRankTestsパッケージのwilcox.exact()関数を使えばOKです(もちろん個々のp値は10倍する必要があります)。

(返信第2弾)============================= 

結局、タイがあるため正確なp値を計算できないための違いではなく(実際、wilcox.test()とwilcox.exact()の差はわずかなものです)、3つのソフトではFriedmanの検定は同じだけれどもペアワイズの比較(対比較)をするためのpost hoc検定の方法が違うため、違う結果になるのは当然だというのが適切だと思います。

その後の調べで、SPSSにおけるFriedmanのpost hoc検定はDunn-Bonferroni
であることがわかりました。
https://www.ibm.com/support/pages/source-post-hoc-tests-friedman-nonparametric-tests

Dunn-BonferroniはRでもできて、dunn.test()というパッケージで可能です。
https://cran.r-project.org/web/packages/dunn.test/index.html
https://cran.r-project.org/web/packages/dunn.test/dunn.test.pdf
日本語のブログで使い方を説明している記事もありました。
https://note.com/eiko_dokusho/n/naac00eaec2ba

ただ、Dunn-Bonferroniはクラスカル=ウォリス検定のpost hoc検定として
使われることも多く、対応のある検定になっているのかどうかが良くわか
りません。

jamoviが採用しているのは、Durbin-Conoverです。先のメールにも書きましたが、内部的にはPMCMRplusパッケージのfrdAllPairsConoverTest()という関数を
使っています。jamoviで出てくるp値は検定の多重性の補正がされていないので、5群間のすべての2群ずつの対比較なら10回の比較がされているので、Bonferroni補正ならp値をすべて10倍することになります。ConoverはFriedman
のpost hocでしか使われない検定なので、適用の適切性からいえば最善でしょう。

https://stats.stackexchange.com/questions/603451/post-hoc-tests-after-friedman-test

では、ウィルコクソンの符号順位検定やDunnの検定をBonferroni補正するのは
Friedmanのpost hoc検定としては適切でないのでConoverにしろ、と書かれて
います。Conoverの考え方や式は

https://real-statistics.com/anova-repeated-measures/friedman-test/friedman-test-post-hoc-analysis/

の説明がわかりやすいと思いました。難しいですが。

EZRでは、https://waidai-csc.jp/updata/2018/11/EZRNyumon.pdf
のp.39に書かれているように、2群ずつウィルコクソンの符号順位検定を実行して、Bonferroni補正の場合は得られたp値をすべて比較回数倍(5群間の場合なら10倍)していますが、この方法を使っている場合もよくあります。ウィルコクソンの符号順位検定ならば対応のある検定であることは間違いないので、その点を重視するなら、Friedmanのpost hocとしては
Dunn-Bonferroniより良いと思います。
https://www.datanovia.com/en/lessons/friedman-test-in-r/
は、この方法を説明しています。考え方としてはとてもシンプルです。

コメント

  1. この問題をシミュレーションで調べている論文 [https://www.tandfonline.com/doi/pdf/10.1080/03610918.2014.931971] が見つかった。jamoviが採用しているConoverは検討されていなかったが、EZRが使っているWilcoxonの符号順位検定について多重性の調整をする方法は、SPSSが使っているDunn-Bonferroniより検出力が低いと書かれていた

    返信削除

コメントを投稿

このブログの人気の投稿

差がゼロという帰無仮説以外の仮説の下でのp値の計算

baseグラフィクスの方が楽

統計教育サンプルデータをAIで自動生成するのは無理だった