Построение взаимодействия glm с 3 переменными в R - PullRequest
0 голосов
/ 03 октября 2018

У меня есть следующая логистическая модель с взаимодействием категориальных переменных, которую я хочу построить в R.

model<- glm(df5$combined == "No" ~ df5$rs_glm5scale * df5$scenario, family="binomial")

Переменная сценария имеет две категории (A и B).

Iстремиться получить график, подобный этому: enter image description here

Я пробовал следующее, но это не работает для оси Y:

glmplot<-ggplot(model, aes(x= df5$rs_glm5scale, y= df5$combined == "No", group=df5$scenario))+geom_line(size=1, aes(color= df5$scenario))

Как бы я нарисовал это на графике?

Ответы [ 2 ]

0 голосов
/ 03 октября 2018

Вот решение с использованием базы R:

# First create a parameter grid to make predictions
grid <- expand.grid(
  rs_glm5scale = seq(min(df5$rs_glm5scale), max(df5$rs_glm5scale), length.out = 1000),
  scenario = c("A", "B")
)

# Then make predictions
pred <- predict(
  model,
  newdata = grid,
  type = "response"
)

cond <- grid$scenario == "A" # to select predictions corresponding to scenario A

# Plot the predictions for category "A"
plot(grid$rs_glm5scale[cond], pred[cond], col = "darkgrey",
     ylim = c(0, 1), type = "l", lwd = 2)

# Add a line for category "B"
lines(grid$rs_glm5scale[!cond], pred[!cond], col = "black", lwd = 2)

legend("bottomright", c("A", "B"), col = c("darkgrey", "lightgrey"), lwd = 2)
0 голосов
/ 03 октября 2018

Вы можете создать сетку данных для построения графика:

library(tidyverse)
library(modelr)    

model = glm(combined == "No" ~ rs_glm5scale * scenario, data = df5, family="binomial")

grid = df5 %>% data_grid(rs_glm5scale = seq_range(rs_glm5scale, 20), scenario)

grid$predictions = predict(model, newdata = grid, type = 'response')

grid %>% ggplot(aes(x = rs_glm5scale, y = predictions, color = scenario)) +
    geom_line()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...