alfa diversità wilcox.test

Oct 07 2020

Sto provando a fare il test Wilcox per rilevare la differenza significativa nella diversità alfa ma mostra un errore? physeqN2 è un oggetto phyloseq e Season è una colonna di metadati.

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

Ho provato a farlo in un altro modo ma anche qui ottenendo errore?

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

Grazie molto

Risposte

M__ Oct 07 2020 at 18:48

Penso che questo sia un bug nei dati di input.

Ciò che penso stia succedendo è che i dati di input non sono considerati accoppiati, da qui l'errore paired = paired. L'altro strano errore è x must be numeric. In primo luogo,

  • come stai valutando i dati mancanti, non è -per caso? I dati mancanti devono essere tramite la nansintassi del tipo.
  • sei sicuro che non ci siano bug di intestazione? Come se un'intestazione venga trascinata nei dati numerici?

Wilcoxan è un test T non parametrico, quindi la radice umida e la radice secca devono corrispondere esattamente allo stesso campione. Quindi non è una radice umida generale rispetto a una radice secca generica, ma umida e secca dallo stesso esemplare. Se questi sono i dati che hai, il programma non pensa che corrisponda.

Se è veramente accoppiato, ancora una volta penso che la fonte dell'errore sia che hai qualche valore mancante che lascia gli accoppiamenti di lunghezze disuguali oppure un bug di intestazione.

Se i dati non sono realmente accoppiati, allora guarderei il test U di Mann-Whitney, sarebbe più facile in questo scenario.

Non uso la sintassi R (solo i dataframe dei panda), quindi non posso dire se la sintassi nel primo esempio è valida, ma è abbastanza chiaro per quanto riguarda il tuo input. In Python generalmente gli dai l'intero dataframe e gli dici di andare a capire.

La realtà è che un sacco di programmi eseguono Wilcoxan, non è necessario utilizzare R se è un test una tantum. Ovviamente se questo fa parte di una pipeline (automazione) è un po 'diverso.