高知と農業、あと哲学とか

農業のこと, 高知のことなどなど. ゆるゆる更新する雑記ブログ

【スポンサーリンク】

R でフィッシャー正確確率検定をし、さらに多重比較を行う方法

比率の比較をするのは、カイ二乗検定が定番ですが、標本数が少ない場合は、カイ二乗検定を使えません。

そこでフィッシャー正確確率検定を行う必要があります。R には, フィッシャーの正確確率検定を実行する関数がデフォルトであります. それが

fisher.test()

です. この関数を実行する際に気を付けなければならないのは, 解析するためのデータが, マトリクス型でなければいけないことです. データフレーム型では,「fisher.test() 」を実行できません.

しかしこの関数では, 多重比較ができません. 多重比較をするためにはどうすればいいのでしょうか.結論から言うと, 「RVAideMemoire」というパッケージがありますので, これをインストールし,

fisher.multcomp(hoge, p.method="holm”)

を実行すれば多重比較の結果が表示されます. この場合, もちろん,「p.method=“holm”」の「holm」を「bonferroni」にすることもできます.

既に R に慣れ親しんでいる方であれば, ここまでの説明で充分だと思います. 以下, ここまでの説明の補足です.

以下, RStudio を使用していることを前提に話を進めていきます.

まず, マトリクス型のデータの生成について. RScript へ直接入力して, マトリクス型を作成するためには, たとえば,

hoge=matrix(c(18, 10, 9, 13, 2, 10, 11, 7), nrow=2, byrow=T)

と入力します. これによって

[,1] [,2] [,3] [,4]

[1,] 18 10 9 13

[2,] 2 10 11 7

といったマトリクスが hoge に作成されます. このマトリクスを, パッケージ「RVAideMemoire」で以ってフィッシャー正確確率検定の多重比較をするためには, 補正を holm とするのであれば,

fisher.multcomp(hoge, p.method="holm”)

と入力し, 実行します.

結果は

A:B A:C A:D B:C B:D C:D

A:B 0.06907 0.03441 0.5095 1 1 1

P value adjustment method: holm

となります. このようにして, P 値を得ることができます.

しかしこの方法では, RScript へいちいち解析したいデータの数字を入力しなければなりません. 面倒です. 既にエクセルなどで解析したいデータを入力ている場合は, csv ファイルを読み込んでフィッシャー正確確率検定の多重比較をしたいところです.

既に R についてある程度習熟されている方であれば, ここから先はすごく当然のことですので, 読まなくてかまいません. が, csv ファイルを読み込んでそのあとマトリクス型へ変換するためにはどうすればいいの!? 的な方は以下, 読み進めてください.

まず, ふつうに csv ファイルを読み込みます.

hoge_df <- read.csv(“hoge.csv", header = T)

これでは, csv ファイルがデータフレーム型として読み込まれているので, フィッシャー正確確率検定はできません.「hoge_df」をマトリクス型へ変換する必要があります. それはめちゃくちゃ簡単で, つまり,

hoge_mx <- t(hoge_df)

を実行します. これで, hoge_df が, hoge_mx として, マトリクス型へ変換されました. あとは, hoge_mx を, パッケージ「RVAideMemoire」の関数, fisher.multcomp で処理すれば, フィッシャー正確確率検定の多重比較ができます.

【スポンサーリンク】