菌叢解析結果の比較 ( 4 ) フリードマン検定

この記事ではバートレット検定でp<0.05で分散が等しくないと判定したBacteria.__Candidate_division_TM7について行います。検定はフリードマン検定で行い、friedman.test関数を使用します。データセットは以前の記事のものを使用します。

friedman.test(変数の列,要因1の列,要因2の列)で定義されます。他にも引数の書き方はいろいろあると思いますが、今回のような”縦長のデータ”のときは、この書き方が一番簡単だと思います。

[splus]
friedman.test (X[,5],X[,1],X[,2])
[/splus]

と入力すると

Friedman rank sum test

data: X[, 7], X[, 1] and X[, 2]
Friedman chi-squared = 5.7391, df = 4, p-value = 0.2195

と返って来ますので

[splus]

friedman.test (X[,7],X[,1],X[,2])$p.value
[1] 0.2194956

[/splus]

でいいと思います。friedman.test()はaov()と違い、一般的な検定の関数と同様の返し方をしてくれるので、”関数$p.value”でP値を吐き出してくれます。以前の記事でやったバートレット検定のようにスクリプトを書けば、

[splus]
FTable=NULL
for ( i in 3:ncol(X)) #.colnames():列ラベルを取り出す
{
FP=friedman.test (X[,i],X[,1],X[,2])$p.value
if(FP<0.01){
SD<-"**"
}else if(FP<0.05){
SD<-"*"
}else{
SD<-"n.s."
}
FResult=c(colnames(X)[i],FP,SD)
FTable=rbind(FTable,FResult)
}
colnames(FTable)=c("Phylum","P.value","SD")
write.csv(FTable,"FriedmanTest_Result.csv",row.names=FALSE)
[/splus]

というスクリプトを書けば、FriedmanTest_Result.csvの中に結果が吐き出されています。僕もだいぶ慣れてきました。もちろん実際にはバートレット検定の結果を踏まえて二元配置分散分析のどちらかを選択しなければなりません。

そういうわけで次回はバートレット検定の結果をもとに、二元配置分散分析を行うかフリードマン検定を行うか判定し、その結果をcsvファイルに書き出す、ということを目標にします。

Share on Facebook0Share on Google+0Share on Tumblr0Tweet about this on TwitterEmail this to someone

コメントを残す

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