アルファダイバーシティwilcox.test

Oct 07 2020

アルファダイバーシティの有意差を検出するためにWilcoxテストを実行しようとしていますが、エラーが表示されていますか?physeqN2はphyloseqオブジェクトであり、Seasonはメタデータ列です。

results = estimate_richness(physeqN2, measures = 'Chao1')

d = sample_data(physeqN2)

# calculate Wilcox Test
Wet.root = results[d[,'Season'] == 'Wet',]
Dry.root = results[d[,'Season'] == 'Dry',]
pmv <-pairwise.wilcox.test(Wet.root, Dry.root)

capture.output(pmv, file = "chao1.16s.wet_vs_Dry.root.txt")

Error;
Error in wilcox.test.default(xi, xj, paired = paired, ...) :
  'x' must be numeric
Calls: pairwise.wilcox.test ... compare.levels -> wilcox.test -> wilcox.test.def                                                                                        ault
Execution halted

私は別の方法でそれをやろうとしましたが、ここでもエラーが発生しますか?

alpha.diversity <- estimate_richness(physeqN2, measures=c("Chao1"))


## Wilcox on observed richness
data <- cbind(sample_data(physeqN2), alpha.diversity)
pmv <-pairwise.wilcox.test(Chao1 ~ Season, data)

capture.output(pmv, file = "chao1.16s.wet_vs_Dry.root.txt")

Error:

Error in if (length(ans) == 0L || as.character(ans[[1L]])[1L] == "~") { :
  missing value where TRUE/FALSE needed
Calls: pairwise.wilcox.test ... sapply -> lapply -> FUN -> compare.levels -> [ -> [.formula
Execution halted

どうもありがとう

回答

M__ Oct 07 2020 at 18:48

これは入力データのバグだと思います。

大まかに推測すると、入力データはペアになっているとは見なされないため、エラーが発生しますpaired = paired。他の奇妙なエラーはx must be numericです。まず、

  • 欠測データをどのようにスコアリングしています-か?欠測データはnan型構文によるものでなければなりません。
  • 見出しのバグはありませんか?ヘッダーが数値データにドラッグされているように?

WilcoxanはノンパラメトリックT検定であるため、湿った根と乾いた根は完全に同じサンプルと一致する必要があります。したがって、それは一般的なウェットルート対一般的なドライルートではなく、同じ標本からのウェットとドライです。これがあなたが持っているデータである場合、プログラムはそれが一致しているとは思わない。

本当にペアになっている場合も、エラーの原因は、ペアリングの長さが等しくないか、ヘッダーのバグが残っている値が欠落していることだと思います。

データが本当にペアになっていない場合は、マンホイットニーのU検定を調べます。このシナリオの方が簡単です。

私はR構文(パンダデータフレームのみ)を使用していないため、最初の例の構文が有効かどうかはわかりませんが、入力に関してはかなり明確です。Pythonでは、通常、データフレーム全体を指定して、図を実行するように指示します。

現実には、多くのプログラムがWilcoxanを実行します。1回限りのテストの場合、Rを使用する必要はありません。明らかに、これがパイプライン(自動化)の一部である場合は少し異なります。