I would like to make an interaction plot to visually display the difference or similarity in slopes of interaction of a categorical variable (4 levels) and a standardized co
Here's an answer of sorts (by the way, you had some missing quotation marks in your data frame above, which had to be fixed manually ...)
Fit the model:
library(lme4)
fit <- glmer(resp.var ~ cont.var:cat.var + (1|rand.eff) ,
data = sample.data , poisson)
(Note that this is a slightly weird model specification -- forces all categories to have the same value at cont.var==0. Did you mean cont.var*cat.var?
library(ggplot2)
theme_update(theme_bw()) ## set white rather than gray background
Quick and dirty linear regressions:
ggplot(sample.data,aes(cont.var,resp.var,linetype=cat.var))+
geom_smooth(method="lm",se=FALSE)
Now with a Poisson GLM (but not incorporating the random effect), and showing the data points:
ggplot(sample.data,aes(cont.var,resp.var,colour=cat.var))+
stat_sum(aes(size=..n..),alpha=0.5)+
geom_smooth(method="glm",family="poisson")
The next bit requires the development (r-forge) version of lme4, which has a predict method:
Set up data frame for prediction:
predframe <- with(sample.data,
expand.grid(cat.var=levels(cat.var),
cont.var=seq(min(cont.var),
max(cont.var),length=51)))
Predict at population level (REform=NA), on the linear predictor (logit) scale (this is the only way you will get straight lines on the plot)
predframe$pred.logit <- predict(fit,newdata=predframe,REform=NA)
minmaxvals <- range(sample.data$cont.var)
ggplot(predframe,aes(cont.var,pred.logit,linetype=cat.var))+geom_line()+
geom_point(data=subset(predframe,cont.var %in% minmaxvals),
aes(shape=cat.var))
Now on the response scale:
predframe$pred <- predict(fit,newdata=predframe,REform=NA,type="response")
ggplot(predframe,aes(cont.var,pred,linetype=cat.var))+geom_line()+
geom_point(data=subset(predframe,cont.var %in% minmaxvals),
aes(shape=cat.var))
