Использовать переменную метку для графика предсказания emmip / ggplot? - PullRequest
0 голосов
/ 03 июля 2018

Я использую пакет emmeans и функцию emmip для построения предсказанных вероятностей от объекта clmm. Из того, что я понимаю, emmip использует ggplot под капотом. Я пытаюсь построить прогнозы по уровням пары предикторов. Это только косметическая проблема, но возможно ли как-то установить (или переопределить) имя переменной на графике на более читаемое значение метки?

Я нашел способ добавить метки переменных с помощью пакета sjlabelled, аналогично тому, что уже реализовано в базе R для добавления меток к уровням переменных:

library(sjlabelled)
dat$language_oth_home <- set_label(dat$language_oth_home, label = "Other Language at Home") 

но emmip его не распознает.

Пример графика, который я хочу попробовать и автоматизировать с правильной маркировкой:

emmip(mmod_stundvis_fin_em, st_understand_vision_dev_2 ~ visit|language_oth_home|randomization_group) +
  xlab("Visit (0 = Pre-, 1 = Post-)") +
  ylab("Probability") +
  scale_color_manual(name="Response Category",
                 labels=c("Strongly Agree", "Agree", "Disagree", "Strongly Disagree"),
                 values=c("#0371b1", "#91c6de", "#f4a682", "#c90120"))

Было бы хорошо автоматически отобразить «Группа обработки: Контроль», а не «randomization_group: Control» в том виде, в каком она сейчас стоит.

Единственные альтернативы, которые я вижу, - это вручную изменить текст в приложении для редактирования изображений пост-hoc (что потребует много времени), или изменить фактические имена переменных во фрейме данных (что тоже не идеально, так как оно сломается). много кода).

enter image description here

1 Ответ

0 голосов
/ 03 июля 2018

Один из способов сделать это - добавить вызов к facet_wrap самостоятельно с помощью пользовательского ярлыка. На данный момент звонок на facet_wrap скрыт под капотом в emmip, но вы можете добавить новый и переопределить его. Вам просто нужно убедиться, что у вас есть правильная переменная.

Вот пример, который заменяет метки фасетов по умолчанию ("side: L" и "side: R") моим собственным текстом.

#--- Three-factor example
noise.lm = lm(noise ~ size * type * side, data = auto.noise)

my_labeller <- as_labeller(function(x){
  return(paste0("Treatment group: ", x))
})

emmip(noise.lm, type ~ size | side) +
  facet_wrap(~side, labeller = my_labeller)

enter image description here

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