4

私はバクテリアのパイロシーケンシング データを扱っており、R を使用して統計分析を行っています。21 のサンプルと 7 つの異なる処理があります。データを R phyloseq にロードして、以下を取得しました。

> psR
phyloseq-class experiment-level object
otu_table()   OTU Table:         [ 7498 taxa and 21 samples ]
sample_data() Sample Data:       [ 21 samples by 8 sample variables ]
tax_table()   Taxonomy Table:    [ 7498 taxa by 6 taxonomic ranks ]
phy_tree()    Phylogenetic Tree: [ 7498 tips and 7497 internal nodes ]

トリートメント間に統計的に有意な差があることがわかったので (アドニス関数を使用)、どの OTU が異なるトリートメントで異なる量を持っているかを知りたいと思いました。これを行うために、関数 dunn.test (Kruskal-Wallis テストが組み込まれています) を使用し、最初に OTU テーブルの行と列を交換してテストを適用しました。

swap_otu_table <- t(otu_table(psR))
treatment <- c('A', 'A', 'A', 'B', 'B', 'B', 'C', 'C', 'C', 'D', 'D', 'D', 'E', 'E', 'E', 'F', 'F', 'F', 'G', 'G', 'G')
swap_otu_tableDF <- as.data.frame(swap_otu_table)
ncol(swap_otu_tableDF)
[1] 7498
lapply(swap_otu_tableDF[1:7498], function(x) kruskal.test(x ~ treatment,   data=swap_otu_tableDF))

この再帰関数の出力は、特にすべての 7498 OTU の場合、非常に読みにくいものです。

Kruskal-Wallis + Dunn のテストを再帰的に適用して、テーブルを出力として、できれば有意性の順に、OTU コードだけでなく tax_table(psR) に含まれる分類学的識別とともに適用する方法はありますか?

どうもありがとうございました!

リディア

4

2 に答える 2

4

これは本当に古いですが、私はこの答えを探していて、後で他の誰かがこれに出くわした場合に備えて投稿すると考えました.

dunn.test には、出力をリストとして表示する組み込みオプションがあります。それを data.frame に変換して列で並べ替えることができるので、必要なのはこれだけです。

これを行うためのサンプルコードを次に示します。

table = dunn.test(X, g, list=TRUE)
table = cbind.data.frame(table$comparisons,table$Z,table$P.adjusted)
table[order(table$`table$P.adjusted`),]
于 2016-12-01T14:27:12.917 に答える
0

dunn.testパッケージを参照してください。Kruskal-Wallis 検定に続く Dunn の検定の表形式の出力には、2 つの異なるオプションがあります。1.3.0 の時点で、パッケージには多重比較をリストとして出力するオプションも含まれています。

于 2015-09-24T18:06:39.787 に答える