Rでフィッシャーの正確確率検定 そのまま使える自作関数例

[公開日]2017/01/17[更新日]2017/01/23 [カテゴリー]R言語入門 Written by  IMIN

独立性の検定を行うときに、データ数が少ないときや0になるセルがあるときは、カイ二乗検定のカイ二乗分布への近似が不正確になる場合があります。そういうときに使うのが、フィッシャーの正確確率検定です。Rでのカイ二乗検定はこちら→Rで独立性のカイ二乗検定 そのまま使える自作関数

今回は、R言語でフィッシャーの正確確率検定を行なって、その結果をcsvファイルに出力する自作関数を作りましたので、お役立ていただければと思います。

プログラム

fisher_fun <- function(data,filename)
{
ans <- fisher.test(data)
p_value <- ans[1]
odds_low <- ans$conf.int[1]
odds_high <- ans$conf.int[2]
oddsrate <- ans[3]
N <- data[1]+data[2]+data[3]+data[4]
result = cbind(data,p_value,odds_low,odds_high,oddsratio,N)
result[2:nrow(result),c(3:7)]=""
write.table(matrix(c("",colnames(result)),nrow=1),filename,append=T,quote=F,sep=",",row.names=F,col.names=F)
write.table(result,filename,append=T,quote=F,sep=",",row.names=T,col.names=F)
write.table("",filename,append=T,quote=F,sep=",",row.names=F,col.names=F)
}

fisher_fun(データ,出力ファイル名)

として使うようにしてください。データは、分割表の形にして入れるようにしてください。

出力結果は、

元データ、p値、オッズ値の95%信頼区間、オッズ比、データの大きさ

の順番になります。

  • スポンサーリンク

  • 4 件のコメント

    • foo.bar より:

      細かいことですが,odds rate ではなく odds ratio です

    • Take より:

      いつも研究で使用させていただいています。
      ひとつ質問なんですがfisher_funに入れる型はどのような形にすればよろしいでしょうか。

      • IMIN より:

        いつもありがとうございます。
        引数には解析用データを分割表の形にして、入れるようにしてください。以下に使用例を示します。

        data < - matrix(c(12,7,3,2,15,2),2,2,) #分割表形式の解析用データ

        fn = “result.csv” #出力ファイル名。
        fisher_fun(data,fn) #関数の実行。

    コメントを残す

    メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

    CAPTCHA