Note of Pediatric Surgery

腸内細菌、R、ときどき小児外科

菌叢解析結果の比較 ( 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ファイルに書き出す、ということを目標にします。