혼합 모델의 예측을 R에서 선으로 플로팅

Nov 24 2020

나는 predict()개념적으로 원하는 플롯을 아래 선으로 얻을 수 있도록 혼합 모델 의 예측 ( )을 아래 에 플롯하려고 합니다.

모델의 예측을 플로팅하려고했지만 원하는 플롯을 얻지 못했습니다. predict()원하는 플롯을 얻을 수 있도록 정의하는 더 좋은 방법이 있습니까?

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)

답변

2 MagnusNordmo Nov 24 2020 at 20:21

sjPlot. grid하나의 그림에 여러 예측 변수 를 래핑 하려면 모수 를 참조하십시오 .

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 

편집 1 : 프레임 워크 dropcon내에서 용어를 제거하는 데 문제가있었습니다 sjPlot. 나는 포기하고 다시 넘어졌다 patchwork. Daniel이 올바른 방법을 알 수있을 것입니다.

Oliver Nov 24 2020 at 20:14

Magnus Nordmo가 제안한 것처럼 이것은 sjPlot이러한 유형의 플롯에 대해 미리 정의 된 일부 기능 이있는 매우 간단 합니다.

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)

다음 결과를 제공합니다.

이 플롯은 및 terms의 축에 대해 두 번째 항의 다른 분위수를 포함하도록 설계되었습니다 . 이러한 플롯을 분할하고 다음을 사용하여 결합 할 수 있으며, 항 다음에 대괄호를 사용하여 간격을 변경할 수 있습니다 (예 : -10과 1 사이의 간격).pc1predpatchworktermspc1 [-10:1]