Изменить цвет по группам с помощью visreg и ggplot - PullRequest
0 голосов
/ 30 апреля 2019

После запуска логистической регрессии с двоичным предиктором, когда я пытаюсь отобразить результаты, используя visreg и ggplot, легенда указывает, что цвета были изменены группой, но они не меняются на графике.

Вот иллюстрация проблемы с использованием данных mtcars.

data(mtcars)
head(mtcars, 10)

Единственными двумя двоичными переменными являются vs и am, но их необходимо преобразовать из числового коэффициента, чтобы эта иллюстрация работала.

mtcars$vs <- as.factor(mtcars$vs)
mtcars$am <- as.factor(mtcars$am)

Запустите модель.

logit1 <- glm(vs ~ am, data = mtcars, family = "binomial")

Теперь попробуйте отобразить результаты, используя visreg, а также дополнительные функции ggplot для настройки цветов и меток.

visreg(logit1, "am", scale = "response", gg = TRUE, rug = FALSE, by = "am", overlay=TRUE) + 
  scale_color_manual(values=c("#1b9e77", "#d95f02"), 
                     breaks=c(0, 1), 
                     labels=c("Zeros", "Ones"))

Я бы хотел, чтобы и линия, и заштрихованная область были оранжевого цвета (# d95f02) для группы am = 1, а линия и заштрихованная область были зеленого цвета (# 1b9e77) для группы am = 0. Как видите, это не то, что генерирует код. enter image description here

1 Ответ

1 голос
/ 30 апреля 2019

В visreg нет функциональности, позволяющей вам сделать что-то подобное прямо сейчас.Конечно, вы можете изменить цвета, например:

visreg(logit1, "am", scale = "response", gg = TRUE, rug = FALSE, by = "am", overlay=TRUE,
       fill.par=list(fill="#1b9e77"), line.par=list(col='#d95f02'))

Но то, что вы описываете, это построение совершенно другого графика: тот, в котором значения am отображаются в разные цвета.Это будет включать в себя совершенно другой объект aes, на котором построен сюжет.Если не будет какого-то удивительного ggplot2 трюка, о котором я не знаю, нет способа сделать это без перестройки сюжета с нуля.

...