This is a test version of Biostars. For the public version, visit https://www.biostars.org.
Handling paired before/after microbiome data

Hi everyone,

I am working on analyzing the microbiome of a specific human body site to compare patients before and after a clinical intervention. Because the data is collected from the exact same patients at two different time points, the samples are inherently correlated (a strictly paired/repeated-measures design).

For alpha diversity, my current plan is to evaluate normality and proceed with either a parametric approach (Paired t-test) or a non-parametric approach (Wilcoxon signed-rank test).

However, I could use some guidance on the subsequent steps of the analysis:

  1. Beta Diversity (PERMANOVA): Does anyone have advice on how to properly implement this before/after design in a PERMANOVA to evaluate shifts in beta diversity?
  2. Differential Abundance (DA) Analysis: Which differential abundance tools do you highly recommend for this type of paired design?

Any insights, R package recommendations, or links to similar analytical workflows would be greatly appreciated.

Thank you in advance!

samples paired

1 answer

For PERMANOVA the thing that matters is restricting permutations within patient, otherwise adonis2 shuffles labels across individuals and the pairing is wasted:

library(vegan)
perm <- how(nperm = 999)
setBlocks(perm) <- meta$patient
adonis2(dist ~ timepoint, data = meta, permutations = perm)

Without the blocks you're asking "do before and after differ as groups", with all the between-patient variation sitting in the residual as noise. That's a much weaker question than the one your design can actually answer. With blocks it only swaps before/after within each patient, which is the paired test.

For differential abundance I'd reach for ANCOM-BC2 first -- it takes a rand_formula so you can put (1|patient) in, and it does compositional bias correction. LinDA (in MicrobiomeStat) and MaAsLin2/3 also support random effects and are considerably faster. corncob if you'd rather have a beta-binomial. I'd skip LEfSe here, it has no way to represent the pairing at all.

DESeq2 with patient as a blocking factor works mechanically, but it handles microbiome zero-inflation and compositionality less gracefully than the purpose-built tools.

One thing your design allows that people underuse: analyse the change directly. CLR-transform, then take the per-patient after-minus-before difference per taxon and test whether that's non-zero. Handles compositionality and the pairing in one move, and the effect sizes are usually easier to explain than coefficients out of a mixed model.

Log in to answer this question.