혼합 모델의 예측을 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 사이의 간격).pc1
pred
patchwork
terms
pc1 [-10:1]