diversité alpha wilcox.test
J'essaie de faire un test Wilcox pour détecter la différence significative de diversité alpha mais cela montre une erreur? physeqN2 est un objet phyloseq et Season est une colonne de métadonnées.
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'ai essayé de le faire d'une autre manière, mais ici aussi une erreur?
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
Merci beaucoup
Réponses
Je pense que c'est un bug dans les données d'entrée.
À une supposition sauvage, je pense que les données d'entrée ne sont pas considérées comme appariées, d'où l'erreur paired = paired. L'autre erreur étrange est x must be numeric. tout d'abord,
- comment notez-vous les données manquantes, ce n'est pas
-par hasard? Les données manquantes doivent être via lanansyntaxe de type. - êtes-vous sûr qu'il n'y a pas de bogues de titre? Comme un en-tête est glissé dans les données numériques?
Wilcoxan est un test T non paramétrique, donc la racine humide et la racine sèche doivent correspondre exactement au même échantillon. Il ne s'agit donc pas d'une racine humide générale par rapport à une racine sèche générique, mais humide et sèche du même spécimen. Si ce sont les données dont vous disposez, le programme ne pense pas qu'elles correspondent.
S'il est vraiment apparié, encore une fois, je pense que la source d'erreur est que vous avez une valeur manquante qui laisse les paires de longueurs inégales ou bien un bogue d'en-tête.
Si les données ne sont vraiment pas appariées, alors je regarderais le test Mann-Whitney U, ce serait plus facile dans ce scénario.
Je n'utilise pas la syntaxe R (juste les dataframes pandas), je ne peux donc pas dire si la syntaxe du premier exemple est valide, mais c'est assez clair concernant votre entrée. En Python, vous lui donniez généralement le dataframe entier et lui diriez d'aller comprendre.
La réalité est que de nombreux programmes utilisent Wilcoxan, vous n'avez pas besoin d'utiliser R si c'est un test ponctuel. Évidemment, si cela fait partie d'un pipeline (automatisation), c'est un peu différent.