Note of Pediatric Surgery

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

菌叢解析結果の比較 ( 7 ) BH法をRで行う

FDR制御のBH法をRで実際に行っていきます。Benjamini and Hochberg(1995)が提唱した方法で、下記の図が非常にわかりやすかったです。露崎先生のスライドから引用させいただきました。

簡単に説明すると、各群の間でphylum毎に菌叢変動認められるか検定し、得られたp値を降順に並べて順位をつけます。q値を新しく p値 / 順位 で定義し、それが閾値 ( ここでも0.05 ) を下回ったphylumに変動があった、と判定します。

実際のRでの処理はこちらの記事が大変参考になりました。データセットは今までのものとは別で、下記のものを使っていきます。これも実際のデータではないので少しおかしくなるかもしれませんが、取り敢えずやってみましょう。

Phylum P.value SD Bacteria.__Actinobacteria 0.0579011 n.s. Bacteria.__Bacteroidetes 0.87078706 n.s. Bacteria.__Firmicutes 0.834489131 n.s. Bacteria.__Fusobacteria 0.952517134 n.s. Bacteria.__Proteobacteria 0.972443449 n.s. Bacteria.__Verrucomicrobia 0.965365985 n.s. Bacteria.__Candidate_division_SR1 0.397885733 n.s. Bacteria.__Candidate_division_TM7 0.838581294 n.s. Bacteria.__Cyanobacteria 0.215105694 n.s. Bacteria.__Deferribacteres 0.397885733 n.s. Bacteria.__Spirochaetes 0.01700424 * Bacteria.__Tenericutes 0.546668892 n.s. Unassigned.Other 0.397885733 n.s.

補正前のデータからすると、有意差があるのはBacteria.__Spirochaetesだけのようです。これがBH法で補正をかけるとどうなるのでしょうか?FDR制御の流れは下記のようになります。( http://stat.biopapyrus.net/multivariate-test/fdr-controlling-bh.html から引用 )

Rではなんとも有難いことにp.adjust関数で簡単にできるようです。

[splus]

.Excelで表をコピーしXにデータフレームとして代入

X=data.frame(read.delim(pipe("pbpaste")))

.p.aujust関数のBH法でq-valueを計算し、q.valueに代入する

q.value <- p.adjust(X[,2],method="BH")

.P値の表に結合する

PQTable <- cbind(X,q.value)

.csvファイルに書き出す

write.csv(PQTable,"PQTable.csv",row.names=FALSE) [/splus]

とすると、もともとのデータにq-valueが追加されているのがわかります。

"Phylum","P.value","SD","q.value" "Bacteria.__Actinobacteria",0.0579011,"n.s.",0.37635715 "Bacteria.__Bacteroidetes",0.87078706,"n.s.",0.972443449 "Bacteria.__Firmicutes",0.834489131,"n.s.",0.972443449 "Bacteria.__Fusobacteria",0.952517134,"n.s.",0.972443449 "Bacteria.__Proteobacteria",0.972443449,"n.s.",0.972443449 "Bacteria.__Verrucomicrobia",0.965365985,"n.s.",0.972443449 "Bacteria.__Candidate_division_SR1",0.397885733,"n.s.",0.862085754833333 "Bacteria.__Candidate_division_TM7",0.838581294,"n.s.",0.972443449 "Bacteria.__Cyanobacteria",0.215105694,"n.s.",0.862085754833333 "Bacteria.__Deferribacteres",0.397885733,"n.s.",0.862085754833333 "Bacteria.__Spirochaetes",0.01700424,"*",0.22105512 "Bacteria.__Tenericutes",0.546668892,"n.s.",0.972443449 "Unassigned.Other",0.397885733,"n.s.",0.862085754833333

この結果から、BH法での制御前は有意差があったBacteria.__Spirochaetesも有意差がなくなっており、群間で細菌叢は有意に変化していないということになります。つまり糞便からDNAを抽出する方法をいろいろと試しましたが、どれも有意差を与えるような大きな影響はないということで良さそうです。