[R-sig-eco] 2-way adonis (PERMANOVA) incl interaction - how to test for main effects?

Gian Maria Niccolò Benucci gi@n@benucci @ending from gm@il@com
Thu Nov 1 19:10:09 CET 2018


Thank you very much Steve,

I really appreciate you answer. I do not want to drop the main effects out
form the model, I was just trying to understand how adonis works. I was
more confused on how to use the adonis function correctly rather than on
the theory that is behind it. I have an almost "fully crossed" design (that
was the plan, the fact is that I have to remove 2 samples because of the
poor sequencing results) with two factors "Growhouse" and "Stage" in this
case. I am of course interested in the effect of the main factors, but I
also wanted to see if there was a significant interaction and if my
developmental stage (i.e. mature or young) was influenced by where my
organism where growing (i.e. growhouse 1 or 2).

Iif I do as you said, Type I SS for ~ A + B + A*B depends on order so... it
is sequential SS(A) SS(B|A) SS(A*B|A B)

The interaction is not significant, so maybe worth in this case perform a
Type II test directly?

> adonis(t(otu_fungi_out) ~ Stage + Growhouse + Stage : Growhouse,
data=metadata_fungi_out, permutations=9999)

Call:
adonis(formula = t(otu_fungi_out) ~ Stage + Growhouse +
Stage:Growhouse,      data = metadata_fungi_out, permutations = 9999)

Permutation: free
Number of permutations: 9999

Terms added sequentially (first to last)

                Df SumsOfSqs MeanSqs F.Model      R2 Pr(>F)
Stage            1    0.4877 0.48769  2.7060 0.10408 0.0238 *
Growhouse        1    0.3765 0.37647  2.0889 0.08034 0.0561 .
Stage:Growhouse  1    0.2171 0.21708  1.2045 0.04633 0.2376
Residuals       20    3.6045 0.18023         0.76925
Total           23    4.6857                 1.00000
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

> adonis(t(otu_fungi_out) ~ Growhouse + Stage + Stage : Growhouse,
data=metadata_fungi_out, permutations=9999)

Call:
adonis(formula = t(otu_fungi_out) ~ Growhouse + Stage +
Stage:Growhouse,      data = metadata_fungi_out, permutations = 9999)

Permutation: free
Number of permutations: 9999

Terms added sequentially (first to last)

                Df SumsOfSqs MeanSqs F.Model      R2 Pr(>F)
Growhouse        1    0.3765 0.37647  2.0889 0.08034 0.0563 .
Stage            1    0.4877 0.48769  2.7060 0.10408 0.0271 *
Growhouse:Stage  1    0.2171 0.21708  1.2045 0.04633 0.2364
Residuals       20    3.6045 0.18023         0.76925
Total           23    4.6857                 1.00000
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Thank you,

Gian




On Thu, 1 Nov 2018 at 11:06, Steve Brewer <jbrewer using olemiss.edu> wrote:

> Gian,
>
> I am bit confused by what your concern is. First, if the imbalance is not
> that severe, the approach you take to analyzing a two-way permanova (type
> I, type II, type III ss) is not going to matter that much. Indeed, if the
> design were balanced, they would give you identical results. Second,
> regardless of the lack of balance, for the models y ~ A + B + A:B  and y ~
> B + A + A:B, the test for the interaction will be the same. So, I don’t
> understand why you would want to drop the main effects from the model,
> effectively combining them with interaction. That doesn’t make any sense to
> me. The problem is with the tests of the main effects.
>
> My advice is to run both models (i.e., A first, then B first) using type I
> ss. As mentioned, both models will give you the same interaction result. If
> the interaction is all that you’re interested in, problem solved. Interpret
> only the interaction and and ignore the main effects. If the interaction is
> not significant and low, then interpret only the main effects, focusing
> only on the second main effect in each of the differently-ordered models
> (which are equivalent to Type II ss tests). And these results will tell you
> pretty the same thing as type III tests if there is little or no
> interaction. I would not worry about trying to estimate the main effects
> while controlling for the interaction (Ellen’s question), which cannot be
> done using type I or type II SS in 2-way permanova using adonis. But why
> would you want to? The lack of a balanced design results in the main
> effects and the interaction not being independent of one another.  Forcing
> that independence by using type III ss can only work by essentially
> "throwing away" some of the information associated with the main effects,
> possibly resulting in an overly conservative test. The lower the
> interaction, however, the less is thrown away and the less it matters.
>
>
> Steve
>
>
>
>
> Stephen Brewer
> jbrewer using olemiss.edu
> Professor
> Department of Biology
> PO Box 1848
>  University of Mississippi
> University, Mississippi 38677-1848
>  Brewer web page - https://jstephenbrewer.wordpress.com
> FAX - 662-915-5144 Phone - 662-202-5877
>
>
>
>
>
> On Oct 31, 2018, at 5:45 PM, Gian Maria Niccolò Benucci <
> gian.benucci using gmail.com> wrote:
>
> Thank you Jari,
>
> So to test if there are significant interaction I should use
> Stage:Growhouse
> i.e. A:B. This will test the interaction and main effects that are marginal
> and so removed. How matters then if I include by="margin" or not? The R2
> are the same (please see below) but the p-value changes. I assume the
> second way is most correct, is it?
>
> *> adonis2(t(otu_fungi_out) ~ Stage : Growhouse, data=metadata_fungi_out,
> permutations=9999)*
> Permutation test for adonis under reduced model
> Terms added sequentially (first to last)
> Permutation: free
> Number of permutations: 9999
>
> adonis2(formula = t(otu_fungi_out) ~ Stage:Growhouse, data =
> metadata_fungi_out, permutations = 9999)
>                Df SumOfSqs      R2      F Pr(>F)
> Stage:Growhouse  3   1.0812 0.23075 1.9998 0.0211 *
> Residual        20   3.6045 0.76925
> Total           23   4.6857 1.00000
> ---
> Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
>
>
> *> adonis2(t(otu_fungi_out) ~ Stage : Growhouse, data=metadata_fungi_out,
> by = "margin", permutations=9999)*
> Permutation test for adonis under reduced model
> Marginal effects of terms
> Permutation: free
> Number of permutations: 9999
>
> adonis2(formula = t(otu_fungi_out) ~ Stage:Growhouse, data =
> metadata_fungi_out, permutations = 9999, by = "margin")
>                Df SumOfSqs      R2      F Pr(>F)
> Stage:Growhouse  3   1.0812 0.23075 1.9998  0.006 **
> Residual        20   3.6045 0.76925
> Total           23   4.6857 1.00000
> ---
> Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
>
>
> Cheers,
>
> Gian
>
> On Tue, 30 Oct 2018 at 05:47, Jari Oksanen <jari.oksanen using oulu.fi> wrote:
>
> Hello Gian,
>
> These formulae expand into different models. Compare
>
> model.matrix(~ Stage:Growhouse, data=metadata_fungi_out)
> model.matrix(~ Stage*Growhouse, data=metadata_fungi_out)
>
> The first model (Stage:Growhouse) will also contain (implicitly) main
> effects and all these terms are marginal and can be removed, whereas the
> latter Stage*Growhouse expands to explicit main effects and interaction
> effects, and only the interaction effects are marginal and can be removed.
> This is also reflected in the degrees of freedom in your anova table: In
> the first case Stage:Growhouse has 3 df, and in the latter only 1 df (and
> the main effects ignored had 2 df).
>
> Ciao, Giari
>
> On 29 Oct 2018, at 19:11, Gian Maria Niccolò Benucci <
>
> gian.benucci using gmail.com> wrote:
>
>
> Hello Jari,
>
> It is a little bit confusing. If A*B unfolds in A+B+A:B then A:B is the
> real interaction component.
> So, which if the code below will test the variance for the interaction
> alone?
>
> adonis2(t(otu_fungi_out) ~ *Stage : Growhouse*, data=metadata_fungi_out,
>
> by = "margin", permutations=9999)
> Permutation test for adonis under reduced model
> Marginal effects of terms
> Permutation: free
> Number of permutations: 9999
>
> adonis2(formula = t(otu_fungi_out) ~ Stage:Growhouse, data =
> metadata_fungi_out, permutations = 9999, by = "margin")
>               Df SumOfSqs      R2      F Pr(>F)
> Stage:Growhouse  3   1.0812 0.23075 1.9998  1e-04 ***
> Residual        20   3.6045 0.76925
> Total           23   4.6857 1.00000
> ---
> Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
>
>
> adonis2(t(otu_fungi_out) ~ *Stage * Growhouse*, data=metadata_fungi_out,
>
> by = "margin", permutations=9999)
> Permutation test for adonis under reduced model
> Marginal effects of terms
> Permutation: free
> Number of permutations: 9999
>
> adonis2(formula = t(otu_fungi_out) ~ Stage * Growhouse, data =
> metadata_fungi_out, permutations = 9999, by = "margin")
>               Df SumOfSqs      R2      F Pr(>F)
> Stage:Growhouse  1   0.2171 0.04633 1.2045 0.2443
> Residual        20   3.6045 0.76925
> Total           23   4.6857 1.00000
>
>
>
> The results is clearly very different. Also, in a normal adonis call I
> didn't have any significance for the interaction that I have instead if I
> use A:B. So ~ A*B will not test for interactions at all?
>
> *adonis*(t(otu_fungi_out) ~ Stage * Growhouse, data=metadata_fungi_out,
>
> permutations=9999)
> Call:
> adonis(formula = t(otu_fungi_out) ~ Stage * Growhouse, data =
> metadata_fungi_out,      permutations = 9999)
>
> Permutation: free
> Number of permutations: 9999
>
> Terms added sequentially (first to last)
>
>               Df SumsOfSqs MeanSqs F.Model      R2 Pr(>F)
> Stage            1    0.4877 0.48769  2.7060 0.10408 0.0247 *
> Growhouse        1    0.3765 0.37647  2.0889 0.08034 0.0542 .
> Stage:Growhouse  1    0.2171 0.21708  1.2045 0.04633 0.2507
> Residuals       20    3.6045 0.18023         0.76925
> Total           23    4.6857                 1.00000
> ---
> Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
>
>
>
> Thank you!
>
> Gian
>
>
>
>
>
> On Tue, 16 Oct 2018 at 08:54, Jari Oksanen <jari.oksanen using oulu.fi> wrote:
>
>
>
> On 16/10/18 11:23, Torsten Hauffe wrote:
>
> "adonis2(speciesdataset~A*B, by="margin") but then only the effect of
>
> the
>
> interaction is tested."
>
> This is not entirely correct.
> adonis2(speciesdataset~A:B, by="margin") would test the interaction
>
> alone.
>
> ~A*B unfolds to ~A+B+A:B
>
>
> Well, it was correct: the only **marginal** effect in ~A+B+A:B is A:B (A
> and B are not marginal), and by = "margin" will only analyse marginal
> effects.
>
> Cheers, Jari Oksanen
>
>
> On Tue, 16 Oct 2018 at 11:51, Ellen Pape <ellen.pape using gmail.com> wrote:
>
> Hi all,
>
> I don't know whether this is the correct mailing group to address this
> question:
>
> I would like to perform a 2-way permanova analysis in R (using adonis
>
> in
>
> vegan). By default you are performing sequential tests (by="terms"),
>
> so
>
> when you have 2 or more factors, the order of these factors matter.
> However, since I wanted to circumvent this, I chose for the option
> by="margin" (adonis2(speciesdataset~A*B, by="margin")) but then only
>
> the
>
> effect of the interaction is tested. On the "help page" of anova. cca
>
> it
>
> says: "if you select by="margin" -> the current function only
>
> evaluates
>
> marginal terms. It will, for instance, ignore main effects that are
> included in interaction terms."
>
>
> My question now is: can I somehow get the main effects tested anyhow,
>
> when
>
> the interaction term is not significant?
>
> Thanks,
> Ellen
>
>        [[alternative HTML version deleted]]
>
> _______________________________________________
> R-sig-ecology mailing list
> R-sig-ecology using r-project.org
> https://stat.ethz.ch/mailman/listinfo/r-sig-ecology
>
>
>     [[alternative HTML version deleted]]
>
> _______________________________________________
> R-sig-ecology mailing list
> R-sig-ecology using r-project.org
> https://stat.ethz.ch/mailman/listinfo/r-sig-ecology
>
> _______________________________________________
> R-sig-ecology mailing list
> R-sig-ecology using r-project.org
> https://stat.ethz.ch/mailman/listinfo/r-sig-ecology
>
>
>      [[alternative HTML version deleted]]
>
> _______________________________________________
> R-sig-ecology mailing list
> R-sig-ecology using r-project.org
> https://stat.ethz.ch/mailman/listinfo/r-sig-ecology
>
>
>
>
>
>
>
> *----- Do not print this email unless you really need to. Save paper and
> protect the environment! -----*
>
> [[alternative HTML version deleted]]
>
> _______________________________________________
> R-sig-ecology mailing list
> R-sig-ecology using r-project.org
> https://stat.ethz.ch/mailman/listinfo/r-sig-ecology
>
>
>

	[[alternative HTML version deleted]]



More information about the R-sig-ecology mailing list