Обновление цветов plot_model, когда у меня только одна строка? - PullRequest
2 голосов
/ 26 мая 2019

Я хочу изменить цвет графика, выводимого plot_model.У меня нет проблем с этим, когда я создаю несколько строк, включая несколько переменных в термины = c (..., ...), но я не могу получить цвет, отличный от черного, когда я делаю следующий код:

df_test <- data.frame('subj' = c('Joe', 'Joe', 'Moe', 'Moe'), 'A' = c(1, 0, 1, 0), 'B' = c(3, 2, 1, 4))

m = glmer(A ~ B + (B | subj), data=df_test, family='binomial')

print(plot_model(m, type='pred', colors = 'blue'))

Вывод: https://imgur.com/a/pApsmH4

Что мне здесь не хватает?

Спасибо за помощь

Ответы [ 2 ]

0 голосов
/ 29 мая 2019

Вы можете использовать пакет ggeffects , который внутренне используется sjPlot при создании графиков маргинальных эффектов. Это немного облегчает получение данных и затем использование ggplot:

library(lme4)
#> Loading required package: Matrix
library(ggeffects)
library(ggplot2)
#> Registered S3 methods overwritten by 'ggplot2':
#>   method         from 
#>   [.quosures     rlang
#>   c.quosures     rlang
#>   print.quosures rlang

df_test <- data.frame('subj' = c('Joe', 'Joe', 'Moe', 'Moe'), 'A' = c(1, 0, 1, 0), 'B' = c(3, 2, 1, 4))
m<- glmer(A ~ B + (B | subj), data=df_test, family='binomial')
#> boundary (singular) fit: see ?isSingular

ggpredict(m, "B") %>%
  ggplot(aes(x, predicted)) +
  geom_ribbon(aes(ymin = conf.low, ymax = conf.high), alpha = .2) +
  geom_line(colour = "blue")

Создано в 2019-05-29 пакетом представ. (v0.3.0)

Существует несколько примеров построения участков вручную, например, здесь или здесь .

0 голосов
/ 26 мая 2019

Чтобы выполнить это действие, я изменил структуру для data.frame и использовал ggplot2.

library(lme4)
library(ggplot2)
library(scales)
library(sjPlot)
df_test <- data.frame('subj' = c('Joe', 'Joe', 'Moe', 'Moe'), 'A' = c(1, 0, 1, 0), 'B' = c(3, 2, 1, 4))

m <- lme4::glmer(A ~ B + (B | subj), data=df_test, family='binomial')

p <- sjPlot::plot_model(m, type='pred', colors = 'blue')

df <- as.data.frame(p$B$data)
df
ggplot2::ggplot(df, aes(x = x)) +
  geom_ribbon(aes(ymin = conf.low, ymax = conf.high), fill = "grey70") +
  geom_line(aes(y = predicted), col = "blue") +
  scale_y_continuous(labels = scales::percent,
                     limits = c(0, 1))

enter image description here

ggplot2::ggplot(df, aes(x = x)) +
  geom_ribbon(aes(ymin = conf.low, ymax = conf.high), 
              fill = "deepskyblue", alpha = 0.25) +
  geom_line(aes(y = predicted), col = "darkred") +
  scale_y_continuous(labels = scales::percent,
                     limits = c(0, 1))

enter image description here

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