ANCOM: 'low W taxa identified as significant' issue's workaround, ANCOM2 code/instructions

Hi folks,
Some users (including myself) have noticed that in some cases ANCOM behaves oddly in that it identifies very low/0 W valued taxa as differentially abundant. See here and here for example of this behavior.
In contacting one of the developer’s of ANCOM regarding this issue ,Dr. Peddada had the following explanation/recommendation.

A potential reason for the problem is that the earlier code was trying to empirically derive the threshold for significance. When W takes on small values across almost all samplestaxa, the threshold calculation does not work well. For this reason, we have modified the threshold calculation by providing fixed thresholds (.6, .7, .8). We typically recommend .7 (all our simulations are based on .7). The user can see how different the results between .6, .7, .8 (which are printed side by side). Higher the threshold the more conservative ANCOM would become and lower the threshold the more aggressive ANCOM would become. Unless your data are very peculiar, the results would be different but not dramatically different.

Of course, the above update refers to ANCOM2 which is currently available as an R code
only and does not reflect the current q2-ancom plugin. Though, I am told an updated q2 adaptation is in the works, so stay tuned for that.
In the meantime, please be wiry that in these situations with very low/zero W values the taxa are actually not significant.
ANCOM2 can also handle covariates and longitudinal data which are extremely useful. The most updated code and manual are attached here (110.1 KB).


Hi Mehrbod,

Thank you for the useful information. Can you explain more about the fixed thresholds? To my understanding the threshold is to avoid the taxa that are with low W value but considered significantly different in abundance between groups. But how is the threshold calculated? Thank you!


Hi @Yuhong,
That’s a great question. I actually don’t really know the answer to that and wouldn’t dare to speculate as to not spread false information. Your best bet is to ask one of the authors on the paper directly (they are not on Qiime2 forum as far as I am aware). Or maybe someone closer to the project can comment here.
Sorry couldn’t be more help!

Hi @Mehrbod_Estaki,

Thank you for the reply. No worries, I just picked out the code to calculate the threshold in the R script. I will give a try to see if I can figure it out :thinking:


1 Like

Good idea @Yuhong. Would love for you to update us if you do figure it out, would be good knowing the answer to that.

Sure @Mehrbod_Estaki. Try my best :slightly_smiling_face: