Please refer to the package's vignette on interactions:
https://cran.r-project.org/web/packages/emmeans/vignettes/interactions.html
The simple way is to use the 'interaction' argument in 'contrast()' to generate interaction contrasts. For example:
> library(emmens)
> noise.lm <- lm(noise/10 ~ size * type * side, data = auto.noise)
> EMM <- emmeans(noise.lm, ~ size*side*type)
> contrast(EMM, interaction = "pairwise")
size_pairwise side_pairwise type_pairwise estimate SE df t.ratio p.value
S - M L - R Std - Octel 0.50 0.624 24 0.802 0.4305
S - L L - R Std - Octel 2.67 0.624 24 4.276 0.0003
M - L L - R Std - Octel 2.17 0.624 24 3.474 0.0020
It is possible to do this manually by using 'contrast()' (or 'pairs()' method for pairwise comparisons) to create contrasts for one factor, calling 'contrast()' on the result to obtain contrasts of contrasts, etc. Here is the same example (with a multiplicity adjustment added) done manually:
PR1 = pairs(EMM, by = c("side", "type"), name = "size.diff")
PR2 = pairs(PR1, by = c("size.diff", "type"), name = "side.diff")
PR3 = pairs(PR2, by = c("size.diff", "side.diff"), name = "type.diff")
test(PR3, by = NULL, adjust = "sidak")
type.diff size.diff side.diff estimate SE df t.ratio p.value Std - Octel S - M L - R 0.50 0.624 24 0.802 0.8153 Std - Octel S - L L - R 2.67 0.624 24 4.276 0.0008 Std - Octel M - L L - R 2.17 0.624 24 3.474 0.0059 P value adjustment: sidak method for 3 tests Russ Lenth
Hi everyone, I recently got stuck in the post-hoc analysis for my model's interactions. Let's say the interaction in the model is A:B:C, with the three variables being all two-level factors. I want to check if the effect of A:B varies across the two levels of C (getting a t-test between C's two levels, as what we get from the pairs() function for getting the difference of marginal means/slopes in a 2-way interaction). I've tried both emmeans and emtrends functions but failed. It always ended up expanding the higher-order interaction of all the three variables into basic cell contrasts (i.e. on specific levels of A and B), but not provided the overall contrast of how the lower-order interaction (A:B) performs in general on the two different levels of C. I also tried the joint_test function, but there is only the output of coefficients but not a between-level comparison on C. I am looking for the estimations of A:B on the two levels of C, and a t-test between these two estimations at the same time. Is this possible only using the emmeans package? Can I have some hints from you guys?