Трехстороннее взаимодействие между непрерывными переменными и данными - PullRequest
0 голосов
/ 23 января 2020

Я хочу построить трехстороннее взаимодействие между непрерывными переменными и показать данные.

Я получаю три панели рядом и маржинальные средние для каждого группового фактора (tiv).

Теперь я хочу добавить точки данных вручную, используя geom_point и facet_grid / facet_wrap, а также другой фактор группировки. Однако, когда я делаю это, линии, изображающие маргинальные средства, теперь соединяют точки данных. Это происходит только тогда, когда я разделяю точки данных на панели ie. когда я добавляю facet_grid / facet_wrap. Однако, когда я не добавляю facet_grid, все точки данных отображаются на всех панелях.

Кто-нибудь знает, как это исправить?

Код и рисунок ниже.

library(lmertest)
library(sjPlot)
library(ggplot2)

tiv <- rnorm(100)
dbs <- rnorm(100)
cs <- rnorm(100)
dt <- rep(c(0:3), 25)
sbj <- rep(c(1:25), each=4)
tmp <- data.frame(tiv, dbs, cs, dt, sbj)

tmp$dbs_group <- cut(tmp$dbs, c(-2.5, -0.84, 0.83, 2.5), labels = c(-1.01, -0.03, 0.95)) 
tmp$tiv_group <- cut(tmp$tiv, c(-2.7, -0.74, 0.68, 2.4), labels = c(-1.11, 0.01, 1.13)) 


mmod <- lmer(cs ~ dt*tiv*dbs + (dt | sbj), data = tmp, control=lmerControl(optimizer="bobyqa")) 

p <- plot_model(mmod, type = "emm", terms = c("dt [all]", "dbs", "tiv"), 
                mdrt.values = "quart", show.legend = T, line.size = 2, show.data =F) 
p + geom_point(data = tmp, mapping = aes(x = dt, y = cs, group = dbs_group, colour = dbs_group), inherit.aes = F) + 
  scale_fill_manual(values = c("red", "blue", "black")) + scale_color_manual(values = c("red", "blue", "black"))+ facet_grid(~tiv_group)

enter image description here

Рисунок ниже создан без использования facet_grid. Все точки данных показаны на всех панелях.

enter image description here

В идеале то, что я ищу, - это решение, в котором точки данных разбиты на разные панели, а линии отображают предельные значения.

РЕДАКТИРОВАТЬ: После того, как вы поиграли с ним больше, используя ggpredict, я подумал, что проблема в двух операторах facet_ *. Только один, кажется, применяется. Есть ли способ наложения двух наборов данных, разделенных на одинаковые панели?

Вот фрагмент кода, который я пробовал с помощью ggpredict (я рисую обе точки как точки, потому что это помогает увидеть, что происходит со строками)

library(ggeffects)
pr <- ggpredict(mmod, terms = c("dt [all]", "dbs", "tiv"), type = "fe")
ggplot(pr, aes(x=x, y = predicted, colour = group)) + facet_wrap(~facet) + geom_point() + geom_point(data = tmp, mapping = aes(x = dt, y = cs, group = dbs_group, colour = dbs_group), inherit.aes = F) +  facet_wrap(~tiv_group)

Когда я запустил эту строку, все данные из "pr" нанесены на все панели. Если я удалю последний оператор facet_ *, тогда данные из «pr» будут правильно разделены на панели, но данные из «tmp» теперь отображаются на всех панелях!

Большое спасибо за любую помощь! Марина

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...