2017/01/17

2020/05/04

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

R言語入門

ライター:

独立性の検定を行うときに、データ数が少ないときや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%信頼区間、オッズ比、データの大きさ

の順番になります。

 

R言語について、さらに学びたい方はR言語入門をご覧ください。

(totalcount 1,866 回, dailycount 116回 , overallcount 3,469,526 回)

ライター:

R言語入門

COMMENT

コメントを残す

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




CAPTCHA


  • foo.bar   2017.1.18 9:44 AM

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

  • Take   2017.1.23 12:56 PM

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

  • IMIN   2017.1.23 9:22 PM

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

    data <- matrix(c(12,7,3,2,15,2),2,2,) #分割表形式の解析用データ fn = “result.csv” #出力ファイル名。 fisher_fun(data,fn) #関数の実行。

  • IMIN   2017.1.23 9:34 PM

    ご指摘ありがとうございます。訂正させていただきました。

  • foo.bar   2017.1.18 9:44 AM

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

  • Take   2017.1.23 12:56 PM

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

  • IMIN   2017.1.23 9:22 PM

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

    data <- matrix(c(12,7,3,2,15,2),2,2,) #分割表形式の解析用データ fn = “result.csv” #出力ファイル名。 fisher_fun(data,fn) #関数の実行。

  • IMIN   2017.1.23 9:34 PM

    ご指摘ありがとうございます。訂正させていただきました。