diversidade alfa wilcox.test

Oct 07 2020

Estou tentando fazer o teste Wilcox para detectar a diferença significativa na diversidade alfa, mas está apresentando um erro? physeqN2 é um objeto phyloseq e Season é uma coluna de metadados.

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

Já tentei fazer de outra forma, mas aqui também obtive erro?

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

Muito Obrigado

Respostas

M__ Oct 07 2020 at 18:48

Eu acho que isso é um bug nos dados de entrada.

Em um palpite, o que eu acho que está acontecendo é que os dados de entrada não são considerados pares, daí o erro paired = paired. O outro erro estranho é x must be numeric. Primeiramente,

  • como você está marcando os dados perdidos, não é -por acaso? Os dados ausentes devem ser por meio da nansintaxe de tipo.
  • tem certeza de que não há erros de cabeçalho? Como se um cabeçalho fosse arrastado para os dados numéricos?

Wilcoxan é um teste T não paramétrico, então a raiz úmida e a raiz seca devem corresponder exatamente à mesma amostra. Portanto, não é uma raiz úmida geral versus uma raiz seca genérica, mas úmida e seca do mesmo espécime. Se esses são os dados que você tem, o programa não acha que eles são correspondentes.

Se estiver realmente emparelhado, novamente acho que a fonte do erro é que você tem algum valor ausente que está deixando os emparelhamentos de comprimentos desiguais ou então um bug de cabeçalho.

Se os dados não forem genuinamente pareados, então eu examinaria o teste U de Mann-Whitney, seria mais fácil neste cenário.

Eu não uso a sintaxe R (apenas dataframes do pandas), então não posso dizer se a sintaxe no primeiro exemplo é válida, mas é bem claro em relação à sua entrada. Em Python, você geralmente apenas forneceria o dataframe inteiro e faria com que ele funcionasse.

A realidade é que muitos programas fazem Wilcoxan, você não precisa usar R se for um teste único. Obviamente, se isso faz parte de um pipeline (automação), isso é um pouco diferente.