ggplot GLM соответствует кривой без взаимодействия

Я хочу добавить встроенную функцию из GLM наggplot, По умолчанию автоматически создается сюжет с взаимодействием. Мне интересно, могу ли я построить подобранную функцию из модели без взаимодействия. Например,

dta <- read.csv("http://www.ats.ucla.edu/stat/data/poisson_sim.csv")
dta <- within(dta, {
  prog <- factor(prog, levels=1:3, labels=c("General", "Academic", "Vocational"))
  id <- factor(id)
})

plt <- ggplot(dta, aes(math, num_awards, col = prog)) + 
    geom_point(size = 2) + 
    geom_smooth(method = "glm", , se = F, 
        method.args = list(family = "poisson"))

print(plt)

дает сюжет с взаимодействием,

Тем не менее, я хочу сюжет от модели,

`num_awards` = ß0 + ß1*`math` + ß2*`prog` + error

Я пытался получить это таким образом,

mod <- glm(num_awards ~ math + prog, data = dta, family = "poisson")

fun.gen <- function(awd) exp(mod$coef[1] + mod$coef[2] * awd)
fun.acd <- function(awd) exp(mod$coef[1] + mod$coef[2] * awd + mod$coef[3])
fun.voc <- function(awd) exp(mod$coef[1] + mod$coef[2] * awd + mod$coef[4])

ggplot(dta, aes(math, num_awards, col = prog)) +
    geom_point() +
    stat_function(fun = fun.gen, col = "red") +
    stat_function(fun = fun.acd, col = "green") +
    stat_function(fun = fun.voc, col = "blue") +
    geom_smooth(method = "glm", se = F, 
        method.args = list(family = "poisson"), linetype = "dashed")

Выходной участок

Есть ли простой способggplot сделать это эффективно?

Ответы на вопрос(3)

Ваш ответ на вопрос