Auteur et responsable: Huang Lin: [email protected]
ANCOMBC est un package contenant une abondance différentielle (DA) et des analyses de corrélation pour les données de microbiome. Plus précisément, le package comprend une analyse des compositions de microbiomes avec correction du biais 2 (ANCOM-BC2), une analyse des compositions de microbiomes avec correction du biais (ANCOM-BC) et une analyse de la composition des microbiomes (ANCOM) pour l'analyse DA et une estimation claire des corrélations entre les microbiomes (SECOM) pour l'analyse de corrélation. Les données de microbiome sont généralement soumises à deux sources de biais: les fractions d'échantillonnage inégales (biais spécifiques aux échantillons) et les efficacités de séquençage différentiel (biais spécifiques au taxon). Les méthodologies incluses dans le package ANCOMBC sont conçues pour corriger ces biais et construire des estimateurs statistiquement cohérents.
if ( ! requireNamespace( " BiocManager " , quietly = TRUE ))
install.packages( " BiocManager " )
BiocManager :: install( " ANCOMBC " )
library( ANCOMBC )
? ancombc2
? ancombc
? ancom
? secom_linear
? secom_dist
1. Nous soutenons le test des interactions maintenant!
Les nouvelles versions d' ancom
, ancombc
et ancombc2
soutiennent l'inclusion des termes d'interaction dans l'analyse. Consultez les dernières vignettes pour des conseils détaillés.
2. L'analyse de sensibilité est essentielle!
Pour les utilisateurs: à moins que l'objectif principal de votre étude ne soit le pouvoir, nous vous recommandons fortement de garder l'analyse de sensibilité allumée (paramètre par défaut), car il réduit considérablement les faux positifs.
Pour les chercheurs: Nous avons noté quelques articles récents critiquant ANCOM-BC2 pour ne pas contrôler adéquatement les faux positifs. Cependant, ces critiques n'ont pas tenu compte de notre fonctionnalité d'analyse de sensibilité. Comparer ANCOM-BC2 sans utiliser ses caractéristiques intégrées, telles que l'analyse de sensibilité, n'est pas une évaluation équitable. Nous soulignons ce point dans notre dernière mise à jour.
1. Q: Quelles sont les différences entre la formula
et les arguments group
dans ancombc
et ancombc2
?
R: La formula
et les arguments group
servent des objectifs différents dans les fonctions ancombc
et ancombc2
. Voici une ventilation de leurs différences:
formula
: Cet argument est utilisé pour spécifier les variables de votre expérience qui peuvent potentiellement influencer les abondances microbiennes. Il est essentiel d'inclure toutes les variables pertinentes dans la formula
pour assurer un ajustement approprié et des résultats précis. Par exemple, si vous avez une variable continue comme age
comme principale variable d'intérêt, et que vous avez des variables catégorielles supplémentaires qui nécessitent un ajustement mais ne sont pas directement liées à votre question de recherche, vous pouvez les inclure dans la formula
tout en laissant group
comme nul.
group
: L'argument group
est facultatif et ne doit être spécifié que si vous souhaitez détecter les zéros structurels (test de présence / absence) ou effectuer des comparaisons multi-groupes, telles que le test global, le test directionnel par paire, le type de test de Dunnett ou le test de tendance . Si votre variable d'intérêt est une variable catégorique avec plus de trois niveaux et que vous souhaitez effectuer des comparaisons multi-groupes, vous devez inclure l'argument group
. Il est important de noter que group
n'est pas le même que main_var
dans ancom
. Dans ancombc
et ancombc2
, group
est utilisé pour les comparaisons multi-groupes et la correction des valeurs de p pour des comparaisons multiples.
N'oubliez pas de ne pas inclure le main_var
dans le adj_formula
dans ancom
, mais incluez toujours group
dans la formula
ou fix_formula
(dans ancombc
et ancombc2
, respectivement) si group
n'est pas nul. Cela garantit que les ajustements et comparaisons appropriés sont effectués dans l'analyse.
2. Q: Pourquoi certains taxons sont-ils absents des résultats principaux?
R: Il y a quelques raisons pour lesquelles certains taxons peuvent être absents des résultats principaux de ancombc
ou ancombc2
. Voici une explication:
Exclusion de prévalence: les taxons avec des prévalences inférieurs au seuil spécifié ( prv_cut
) seront exclus de l'analyse. La valeur prv_cut
détermine la prévalence minimale requise pour qu'un taxon soit pris en compte dans l'analyse. Si la prévalence d'un taxon tombe en dessous de ce seuil, elle ne sera pas incluse dans les principaux résultats.
Zéros structurels: les taxons qui présentent des zéros structurels, ce qui signifie qu'ils n'ont constamment aucun nombre de comptes dans tous les échantillons, ne seront considérés comme significatifs que par le test de présence / absence. Les méthodologies ANCOM-BC et ANCOM-BC2 ne sont pas conçues pour détecter des différences significatives dans les taxons avec des zéros structurels. En conséquence, ces taxons sont résumés séparément et ne sont pas inclus dans les résultats principaux d' ancombc
ou ancombc2
.
Pour accéder aux résultats du test de présence / absence, vous pouvez vous référer à la sortie zero_ind
. Cela fournira des informations sur les taxons qui présentent des zéros structurels.
3. Q: Dans les résultats principaux, que représentent lfc_(Intercept)
, lfc_groupB
et lfc_groupC
si j'ai une variable group
avec les catégories A
, B
et C
?
R: Dans les résultats principaux, les termes lfc_groupB
et lfc_groupC
représentent les modifications de pliage de log (logfc) par rapport au groupe de référence, qui est le groupe A
par défaut. Ces valeurs logfc indiquent la différence d'abondance entre le groupe B
et le groupe A
, et entre le groupe C
et le groupe A
, respectivement.
D'un autre côté, lfc_(Intercept)
fait référence au changement de pliage de log de la grande moyenne, qui peut ne pas être un paramètre d'intérêt particulier dans ce contexte.
Il convient de mentionner que si vous souhaitez modifier le groupe de référence, vous pouvez utiliser la fonction factor
en R pour réorganiser les niveaux de la variable group
en conséquence.
4. Q: J'ai rencontré un message d'erreur indiquant que «le rang» doit être une valeur de «taxonomyranks ()». Qu'est-ce que cela signifie et comment puis-je le résoudre?
R: Le message d'erreur «« Rank »doit être une valeur de« taxonomyranks () »« se produit généralement lorsque les noms de rang de votre tax_table
ne sont pas correctement étiquetés. Afin de résoudre ce problème, il est recommandé d'utiliser la fonction taxonomyRanks(se)
, où se
est votre objet tse
.
Premièrement, assurez-vous que les noms de rang de votre tax_table
sont correctement nommés comme l'un des rangs taxonomiques standard, tels que "Kingdom", "Phylum", "Class", "Order", "Family", "Genus" ou "Espèce ". Si les noms de classement sont actuellement étiquetés comme autre chose, tels que "TA1", "TA2", "TA3", etc., vous devrez les mettre à jour en conséquence.
Ce problème se produit couramment lorsqu'un tax_table
est formé à partir d'un data.frame
au lieu d'une matrix
. Par conséquent, il est important de s'assurer que les noms de rang sont correctement attribués avant de procéder à l'analyse.
Une fois que vous avez mis à jour les noms de classement dans votre tax_table
, vous pouvez utiliser la fonction ancombc2
, en spécifiant le niveau taxonomique souhaité à l'aide de l'argument tax_level
(par exemple, "genre"). Cela vous permettra d'effectuer des analyses statistiques sur vos données de microbiome au niveau taxonomique spécifié.
5. Q: J'ai rencontré un problème lors de l'utilisation rand_formula
dans ancombc2
. Quelle est la syntaxe correcte pour spécifier des effets aléatoires?
R: Lorsque vous spécifiez des effets aléatoires à l'aide rand_formula
dans ancombc2
, il est important de suivre les conventions de syntaxe utilisées dans le package lmerTest
. Faites une attention particulière au placement des parenthèses et des barres verticales .
Pour spécifier correctement un effet de sujet aléatoire, la syntaxe doit être sous la forme de "(1|subjid)"
, où subjid
représente le nom de variable pour l'identifiant de sujet. Cette syntaxe garantit que l'effet de sujet aléatoire est correctement pris en compte dans l'analyse.
D'un autre côté, il est incorrect d'utiliser rand_formula
comme "1|subjid"
ou "(subjid)"
pour spécifier des effets aléatoires. La syntaxe correcte doit toujours inclure des parenthèses autour de l'effet aléatoire et une barre verticale pour la séparer des effets fixes.
En utilisant la syntaxe correcte pour spécifier des effets aléatoires, vous pourrez incorporer avec précision ces effets dans votre analyse ancombc2
.
6. Q: Quelles sont les différences entre les résultats principaux et les résultats du type de test de Dunnett dans ANCOM-BC2?
R: Les résultats principaux et les résultats du type de test de Dunnett dans ANCOM-BC2 fournissent des informations sur des taxons différentiellement abondants, mais il existe des différences dans la correction des valeurs de p.
Dans les résultats principaux, les valeurs p sont corrigées entre les taxons, ce qui signifie qu'ils expliquent des comparaisons multiples entre les différents taxons. Cette correction aide à contrôler le taux de faux positifs lors de la détermination de l'importance des taxons individuels.
D'un autre côté, le type de test de Dunnett corrige non seulement les valeurs p entre les taxons, mais corrige également les comparaisons multiples entre les groupes. Plus précisément, il compare l'abondance de chaque taxon dans les groupes B
et C
avec le groupe de référence A
. La correction des comparaisons multiples dans le type de test de Dunnett résulte un résultat plus conservateur, ce qui réduit la probabilité de faux résultats positifs.
Par conséquent, bien que les résultats principaux et le type de test de Dunnett fournissent des informations sur des taxons différentiellement abondants, les résultats du type de test de Dunnett offrent un contrôle supplémentaire pour les comparaisons multiples, ce qui les rend plus conservateurs et fiables.
7. Q: La fonction ancombc
ou ancombc2
peut-elle gérer les termes d'interaction dans l'analyse?
R: Oui, les nouvelles versions d' ancom
, ancombc
et ancombc2
soutiennent l'inclusion des termes d'interaction dans l'analyse.
8. Q: La méthodologie ANCOM-BC peut-elle être appliquée à d'autres types de données tels que les abondances fonctionnelles, l'ARN-seq ou les données d'ARN unique?
R: La méthodologie ANCOM-BC peut être appliquée à d'autres types de données tant qu'elles sont considérées comme une composition. Cependant, il est essentiel de savoir que la méthodologie a été principalement comparée et validée à l'aide de données de microbiome. Pour plus de discussions, vous pouvez vous référer à ce post.
9. Q: Que signifie "pas une matrice définie positive" pour ajuster le modèle à effets mixtes ancombc2
? Comment puis-je déboguer ce problème?
R: Le message d'erreur "pas une matrice définie positive" indique que la matrice de corrélation utilisée dans le modèle à effets mixtes n'est pas définie positive. Une matrice définie positive est une matrice carrée où toutes les valeurs propres sont positives. Cette erreur se produit généralement lorsqu'il existe un problème avec les données ou la spécification du modèle.
Pour déboguer ce problème, je vous recommande d'ajuster un modèle à effets mixtes à vos données brutes en utilisant le package lmerTest
dans R. Utilisez les mêmes effets fixes et les spécifications d'effets aléatoires que vous avez utilisées dans la fonction ancombc2
. En ajustant directement le modèle, vous pouvez recevoir des messages d'erreur plus informatifs qui peuvent aider à diagnostiquer le problème.
Voici les étapes que vous pouvez suivre pour déboguer la question:
lmerTest
dans R: install.packages("lmerTest")
et library(lmerTest)
.ancombc2
.lmer()
à partir du package lmerTest
.En suivant ces étapes, vous pouvez mieux comprendre le problème à l'origine de l'erreur "pas une matrice définie positive" et prendre les mesures appropriées pour y remédier.
Si vous continuez à rencontrer des difficultés ou à avoir besoin d'aide, il peut être utile de demander conseil à des statisticiens ou à des experts dans votre domaine de recherche spécifique.
10. Q: Si une valeur LFC plus élevée correspond à une abondance plus grande, pourquoi certains de mes comptes OTU / ASV ont-ils montré des directions opposées?
R: Il est important de noter que les valeurs de changement de pliage (LFC) dans le contexte d'ANCOM-BC ou d'ANCOM-BC2 ne reflètent pas directement les abondances relatives (telles que les proportions) ou les abondances observées (telles que les comptes OTU ou ASV)) . Les valeurs LFC représentent la différence d'abondance corrigée par le biais entre les groupes.
Dans ANCOM-BC ou ANCOM-BC2, une valeur LFC plus élevée indique une plus grande différence d'abondances corrigées de biais entre les groupes. Cependant, cela ne signifie pas nécessairement que le groupe avec une LFC plus élevée a une abondance relative plus élevée ou un nombre observé plus grand pour un OTU ou un ASV spécifique.
11. Q: Pouvez-vous me donner un exemple plus compliqué de l'exécution du test de tendance ANCOM-BC2?
R: Par exemple, lors de l'utilisation du test de tendance avec une variable group
de 5 catégories ordonnées ( A, B, C, D, E
) dans R, nous estimons en fait 4 contrastes, qui sont ( BA, CA, DA, EA
) . Le test de la tendance de A < B < C < D < E
équivaut à tester 0 < B - A < C - A < D - A < E - A
. Par conséquent, nous pouvons spécifier la matrice de contraste comme suit:
# B-A C-A D-A E-A
1 0 0 0
- 1 1 0 0
0 - 1 1 0
0 0 - 1 1
En r, ça devrait être
matrix (c( 1 , 0 , 0 , 0 ,
- 1 , 1 , 0 , 0 ,
0 , - 1 , 1 , 0 ,
0 , 0 , - 1 , 1 ),
nrow = 4 ,
byrow = TRUE )
Pour des discussions plus approfondies, vous pouvez vous référer à ce post.
12. Q: OMG, je suis toujours très confus aux zéros structurels. Quels sont-ils? Que font les arguments struc_zero
et neg_lb
?
R: Un taxon est considéré comme ayant des zéros structurels dans certains groupes (> = 1) s'il est complètement ou presque absent dans ces groupes. Par exemple, s'il y a trois groupes, G1, G2 et G3, et que les dénombrements de taxon A sont 0 en G1 mais non nuls dans G2 et G3, le taxon A sera considéré comme contenant des zéros structurels dans G1. Dans ce scénario, le taxon A est déclaré différentiellement abondant entre G1 et G2, G1 et G3, et est par conséquent abondant à l'échelle mondiale par rapport à la variable de groupe. Ces taxons ne sont pas analysés plus en détail à l'aide d'ANCOM-BC ou ANCOM-BC2, mais les résultats sont résumés dans le zero_ind
. Vous pouvez traiter la détection de zéros structurels comme effectuant un test de présence / absence.
La détection de zéros structurels est basée sur un article séparé, ANCOM-II. Plus précisément, le réglage neg_lb = TRUE
indique que les deux critères indiqués dans la section 3.2 d'ANCOM-II sont utilisés pour détecter les zéros structurels. Alternativement, la définition de neg_lb = FALSE
n'utilisera que l'équation 1 dans la section 3.2 d'Ancom-II pour déclarer les zéros structurels, ce qui en fait une approche plus conservatrice. Comme la table OTU / ASV est généralement très clairsemée, il est recommandé de choisir neg_lb = FALSE
pour empêcher les fausses découvertes. Cependant, si vous avez un tableau plus dense comme un tableau de niveau familial avec une taille d'échantillon suffisamment grande, l'utilisation de neg_lb = TRUE
peut être une meilleure idée. Il est important de noter que neg_lb
n'a pas de fonction si struc_zero
est défini sur FALSE
. Par conséquent, il y a trois combinaisons possibles: struc_zero = FALSE
(indépendamment de neg_lb
), struc_zero = TRUE, neg_lb = FALSE
ou struc_zero = TRUE, neg_lb = TRUE
.