Настройка порядка фасетов и меток легенды при использовании функции plot_model в sjplot

Я успешно использовал plot_model функцию sjplot для построения модели полиномиальной логистической регрессии. Регрессия содержит результат (запрашиваемая информация, с 3 уровнями) и 2 непрерывных предиктора (DSA, ASA). Я также изменил значения ASA в plot_model, чтобы отобразить результаты прогнозируемого эффекта на основе среднего значения ASA и SD:

plot1 <- plot_model(multinomialmodel , type = "pred", terms = c("DSA", "ASA[meansd]")

введите описание изображения здесь

У меня два вопроса по настройке:

1) Порядок фасетов: порядок фасетов основан на алфавитном порядке уровней результатов по умолчанию («Развернуть», затем «Первое изображение», затем «Несколько изображений»). Есть ли способ отрегулировать это? Я пробовал прибегать к уровням с помощью factor() (например, здесь с ggplot2) перед запуском и построением модели, но это не привело к каким-либо изменениям в результирующем порядке фасетов. Может быть, вместо этого что-то через ggplot2, как показано в первом решении, здесь?

2) Ярлыки легенды: легенда в настоящее время помечает построенные линии значениями -1 SD, среднего и +1 SD для ASA; есть ли способ настроить эти метки, чтобы вместо необработанных значений просто произносились «-1 стандартное отклонение», «среднее значение» и «+1 стандартное отклонение»?

Спасибо!


person jjcii    schedule 17.07.2019    source источник
comment
без каких-либо выборочных данных вам очень сложно помочь. stackoverflow.com/help/minimal-reproducible-example   -  person tjebo    schedule 17.07.2019
comment
Спасибо. Подмножество данных можно найти здесь.   -  person jjcii    schedule 17.07.2019
comment
Для графиков эффектов sjPlot использует более настраиваемый пакет ggeffects. Примеры см. В этих статьях.   -  person Daniel    schedule 21.07.2019


Ответы (1)


Сначала я воспроизведу ваш график, используя предоставленные вами данные:

library(dplyr)
library(readr)
library(nnet)
library(sjPlot)

"ASA,DSA,Info_Sought
-0.108555801,0.659899854,First Pic
0.671946671,1.481880373,First Pic
2.184170211,-0.801398848,First Pic
-0.547588442,1.116555698,First Pic
-1.27930951,-0.299077419,First Pic
0.037788412,1.527545958,First Pic
-0.74271406,-0.755733264,Multiple Pics
1.20854212,-1.166723523,Multiple Pics
0.769509479,-0.390408588,Multiple Pics
-0.450025633,-1.02972677,Multiple Pics
0.769509479,0.614234269,Multiple Pics
0.281695434,0.705565438,Multiple Pics
-0.352462824,-0.299077419,Expand
0.671946671,1.481880373,Expand
2.184170211,-0.801398848,Expand
-0.547588442,1.116555698,Expand
-0.157337206,1.070890114,Expand
-1.27930951,-0.299077419,Expand" %>% 
  read_csv() -> d

multinomialmodel <- multinom(Info_Sought ~ ASA + DSA, data = d)

p1 <- plot_model(multinomialmodel , 
                 type = "pred", 
                 terms = c("DSA", "ASA[meansd]"))
p1

пример сюжета

Ваша попытка рефакторинга не сработала, потому что sjPlot::plot_model() не обращает внимания. Один из способов решения проблемы переупорядочения фасетов - создать начальный график, как указано выше, и заменить переменную фасетирования в данных версией фактора, содержащей желаемый порядок, например:

p2 <- p1
p2$data$response.level <- factor(p2$data$response.level, 
                                 levels = c("Multiple Pics", "First Pic", "Expand"))
p2

переупорядоченные фасеты

Наконец, чтобы решить проблему с маркировкой легенды, мы можем просто заменить цветовую шкалу на шкалу, содержащую желаемые метки:

p2 + 
  scale_color_discrete(labels = c("-1 SD", "mean", "+1 SD"))

желаемый сюжет

person the-mad-statter    schedule 17.07.2019
comment
Это фантастика, Мэтью; Спасибо. Я заметил, что при замене цветовой шкалы также устанавливаются новые назначения цветов. При желании, я полагаю, я мог бы настраивать каждый цвет в соответствии с обычным ggplot2 средством одновременно? Еще раз спасибо! - person jjcii; 18.07.2019
comment
Да, вы можете просто использовать аргумент values в scale_color_discrete(), чтобы выбрать желаемые цвета. - person the-mad-statter; 18.07.2019