Как изменить facet_grid и форму точечных оценок с помощью Sjplot? - PullRequest
0 голосов
/ 05 мая 2019

Мне нужно настроить график с помощью plot_model, функции для построения обобщенных линейных моделей со смешанным эффектом.У меня есть как лесной участок, показывающий коэффициенты, так и линейный график, показывающий вероятности.

На приведенном ниже лесном графике у меня есть фактор возраста с двумя уровнями (молодые люди, пожилые люди).Чего я хотел бы добиться, так это изменить формы точечной оценки для двух групп, например, показать кружок для молодых людей и ромб для пожилых людей.На рисунке ниже я хотел бы иметь другую форму для «Age: New», «Age: Lure», «Age: Old».Однако я не нахожу никаких дополнительных аргументов, которые бы позволили мне это сделать.Любая идея?

Лесной участок

enter image description here

Аналогично, на линейном графике ниже я хотел бы изменить метки facet_grid с 0и 1 - «Молодые люди» и «Пожилые люди».Это достижимо с ggplot2, но, поскольку я использовал sjplot, я хотел бы знать, есть ли способ реализовать его в том же самом виде:

Линейный график

enter image description here

Я уже построил свои модели, но я хотел бы добиться дополнительной гибкости.

Это код для лесного участка:

plot_model(model1_original_conf, type = "est", transform = NULL, terms = c("ZcConfusabilitySimWeightedSim",
                                                                           "Age1:ZcConfusabilitySimWeightedSim",
                                                                           "Conditionlure:ZcConfusabilitySimWeightedSim",
                                                                           "Conditionold:ZcConfusabilitySimWeightedSim",
                                                                           "Age1:Conditionlure:ZcConfusabilitySimWeightedSim",
                                                                           "Age1:Conditionold:ZcConfusabilitySimWeightedSim"),

           colors = c("seagreen3", "deepskyblue2", "orchid"), 
           show.values = TRUE,
           value.offset = .4,
           value.size = 6,
           dot.size = 6,
           line.size = 2.5,
           vline.color = "red",
           width = 0.5,
           axis.labels = c("Age:New", "New", "Age:Lure", "Lure", "Age:Old", "Old"),
           title = "Semantic Confusability",
           order.terms = c(4,6,3,5,1,2),
           group.terms = c(1,1,2,3,2,3))

Этокод для линейного графика:

plot_model(model1_original_conf, type = "pred",
           terms = c("ZcConfusabilitySimWeightedSim", "Condition", "Age"),
           colors = c("seagreen3", "deepskyblue2", "orchid"),
           title = "Raw probabilities",
           axis.title = c("Semantic Confusability", "p (judge item is OLD)"),
           line.size = 2.0)

Я ожидаю найти 1) различные формы для точечных оценок на лесном графике (например, круги и треугольники или ромбы) и 2) соответствующие метки для 0 и1 для линейных участков («молодые люди» и «пожилые люди»).

1 Ответ

1 голос
/ 06 мая 2019

Однако я не нахожу никаких дополнительных аргументов, позволяющих мне это сделать. Любая идея?

Вам нужно ggplot2::aes(), чтобы обновить отображение, а затем вы можете добавить scale_shape_manual() к графику, который возвращается из plot_model().

Пример:

library(sjPlot)
library(ggplot2)
m <- lm(Sepal.Length ~ Petal.Width + Petal.Length + Species, data = iris)

plot_model(m, group.terms = c(1, 1, 2, 2)) + 
  aes(shape = group) +
  scale_shape_manual(values = c(1, 4))

Создано в 2019-05-06 пакетом Представление (v0.2.1)

Я хотел бы изменить метки facet_grid с 0 и 1 на «Молодые люди» и «Пожилые люди».

Это должно работать, когда у вас есть фактор с требуемыми уровнями фактора:

library(sjPlot)
library(ggplot2)
library(sjmisc)

set.seed(123)
iris$binary <- sample(c(0, 1), nrow(iris), replace = T)
iris$Sepal.Length_d <- sjmisc::dicho(iris$Sepal.Length)
m2 <- glm(Sepal.Length_d ~ Petal.Width + Petal.Length * Species * binary, data = iris, family = binomial())
plot_model(m2, type = "pred", terms = c("Petal.Length", "Species", "binary"), ci.lvl = NA)

iris$binary <- sjmisc::rec(iris$binary, rec = "0=young adults;1=older adults", as.num = FALSE)
m3 <- glm(Sepal.Length_d ~ Petal.Width + Petal.Length * Species * binary, data = iris, family = binomial())
plot_model(m3, type = "pred", terms = c("Petal.Length", "Species", "binary"), ci.lvl = NA)

Создано в 2019-05-06 пакетом Представить (v0.2.1)

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