Plotting the predictions of a mixed model as a line in R

三世轮回 提交于 2021-02-07 10:51:39

问题


I'm trying to plot the predictions (predict()) of my mixed model below such that I can obtain my conceptually desired plot as a line below.

I have tried to plot my model's predictions, but I don't achieve my desired plot. Is there a better way to define predict() so I can achieve my desired plot?

library(lme4)

dat3 <- read.csv('https://raw.githubusercontent.com/rnorouzian/e/master/dat3.csv')

m4 <- lmer(math~pc1+pc2+discon+(pc1+pc2+discon|id), data=dat3)

newdata <- with(dat3, expand.grid(pc1=unique(pc1), pc2=unique(pc2), discon=unique(discon)))

y <- predict(m4, newdata=newdata, re.form=NA)

plot(newdata$pc1+newdata$pc2, y)


回答1:


More sjPlot. See the parameter grid to wrap several predictors in one plot.

library(lme4)
library(sjPlot)
library(patchwork)

dat3 <- read.csv('https://raw.githubusercontent.com/rnorouzian/e/master/dat3.csv')

m4 <- lmer(math~pc1+pc2+discon+(pc1+pc2+discon|id), data=dat3) # Does not converge

m4 <- lmer(math~pc1+pc2+discon+(1|id), data=dat3) # Converges

# To remove discon
a <- plot_model(m4,type = 'pred')[[1]]
b <- plot_model(m4,type = 'pred',title = '')[[2]]

a + b 

Edit 1: I had some trouble removing the dropcon term within the sjPlot framework. I gave up and fell back on patchwork. I'm sure Daniel could knows the correct way.




回答2:


As Magnus Nordmo suggest, this is very simple with sjPlot which has some predefined functions for these types of plot.

library(lme4)

dat3 <- read.csv('https://raw.githubusercontent.com/rnorouzian/e/master/dat3.csv')

m4 <- lmer(math~pc1+pc2+discon+(pc1+pc2+discon|id), data=dat3)

plot_model(m4, type = 'pred', terms = c('pc1', 'pc2'),
           ci.lvl = 0)

which gives the following result.

This plot is designed to include different quantiles of the second term in terms over the axes of pc1 and pred. You could split up these plots and combine them using patchwork and the interval can be changed by using square brackets after the term in terms (eg pc1 [-10:1] for interval between -10 and 1).



来源:https://stackoverflow.com/questions/64978966/plotting-the-predictions-of-a-mixed-model-as-a-line-in-r

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!