Trazar las predicciones de un modelo mixto como una línea en R
Estoy tratando de trazar las predicciones ( predict()) de mi modelo mixto a continuación de modo que pueda obtener mi trama conceptualmente deseada como una línea a continuación.
He intentado trazar las predicciones de mi modelo, pero no logro la trama deseada. ¿Existe una mejor manera de definir predict()para poder lograr la trama deseada?
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)
Respuestas
Más sjPlot. Consulte el parámetro gridpara envolver varios predictores en un gráfico.
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
Edición 1: tuve algunos problemas para eliminar el dropcontérmino dentro del sjPlotmarco. Me di por vencido y volví a caer patchwork. Estoy seguro de que Daniel podría conocer el camino correcto.
Como sugiere Magnus Nordmo, esto es muy simple con el sjPlotque tiene algunas funciones predefinidas para este tipo de tramas.
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)
que da el siguiente resultado.
Esta gráfica está diseñada para incluir diferentes cuantiles del segundo término en termslos ejes de pc1y pred. Puede dividir estos gráficos y combinarlos usando patchworky el intervalo se puede cambiar usando corchetes después del término en terms(por ejemplo, pc1 [-10:1]para el intervalo entre -10 y 1).