[R-sig-ME] Plotting interactions while controlling for other predictors.

Guillaume Adeux guill@ume@imon@@2 @ending from gm@il@com
Wed Dec 12 18:19:06 CET 2018


Sorry I hadn't seen X3 was a factor.

The above example will then work how you want it to (one facet per level of
X3) highlithing the effect of X2 on Y (per level of X3) while controlling
for X1 and random effects (set to a particular level).

This will be similar (not identical considering visreg fixes random effects
at a particular level) to creating your own prediction matrix with
new.dat=expand.grid(X1=median(X1),X2=seq(min(X2),max(X2),by=1),X3=c(1:3))
and feeding it to predict.merMod while predicting at the population level
(re.form=~0).

How partial residuals can be extracted however, I am not so sure.

GA2

Le mer. 12 déc. 2018 à 18:06, Guillaume Adeux <guillaumesimon.a2 using gmail.com>
a écrit :

> Hi David,
>
> For plotting interactions between two continuous variables, maybe a gamm
> model might be more adapted?
>
> However, by defaut, in the visreg package, you can facet one of your
> continuous variables (which is subsetted relative to its distribution) and
> plot the other one accordingly.
>
> This would be coded the following way: visreg(m1, X2, by="X3")
> #overlay=TRUE to have them all combined in one plot, partial=TRUE to have
> the partial residuals (which do not include RE by default), by default X1
> will be fixed to its median
>
> This will produce a conditional plot in which all random effects (or X1 in
> this case) are fixed at a certain level (you can also fix this at a
> particular value with cond=list(X1=XXXX) ).
>
> Nevertheless, this simply calls for predict.lmer(). It is still pretty
> convenient IMHO.
>
> Hope this helps.
>
> Sincerely,
>
> GA2
>
> Le mer. 12 déc. 2018 à 17:51, David Sidhu <dsidhu using ucalgary.ca> a écrit :
>
>> I am interested in creating a plot of an interaction that accounts for
>> other variables present in a model.
>>
>> I am attaching a reproducible example of my try so far, but I don’t
>> believe this is quite getting at what I’d like.
>>
>> Essentially, I want to show the interaction between X2 and X3, while
>> controlling for X1.
>>
>> Thank you very much.
>> Dave
>>
>> set.seed(182)
>> require(data.table)
>> require(lme4)
>> require(ggplot2)
>>
>> X1 = rnorm(1000)
>> X2 = rnorm(1000)
>> X3 = sample(1:3, size = 1000, replace = TRUE)
>> X3 <- as.factor(X3)
>> DV = rnorm(1000)
>>
>> Item <- rep(1:10, times = 100)
>> Subject <- rep(1:100, each = 10)
>>
>> d <- as.data.frame(cbind(X1, X2, X3, DV, Item, Subject))
>>
>> m1 <- lmer(DV ~ X1 + X2*X3 + (1|Subject) + (1|Item), data = d)
>>
>> d$Pred <- predict(m1)
>> library(ggplot2)
>> ggplot(d, aes(x = X2, y = Pred, col = factor(X3), group = X3)) +
>> geom_jitter(alpha = .2) + geom_smooth(method = "lm")
>>
>>
>> ---
>> David M. Sidhu, MSc
>> PhD Candidate
>> Department of Psychology
>> University of Calgary
>>
>>
>>
>>
>>
>>
>> _______________________________________________
>> R-sig-mixed-models using r-project.org mailing list
>> https://stat.ethz.ch/mailman/listinfo/r-sig-mixed-models
>>
>

	[[alternative HTML version deleted]]



More information about the R-sig-mixed-models mailing list