diversidade alfa wilcox.test
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
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 danansintaxe 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.