curva ajustada ggplot GLM sin interacción

Quiero agregar la función ajustada de GLM en unggplot. Por defecto, crea automáticamente la trama con interacción. Me pregunto si puedo trazar la función ajustada del modelo sin interacción. Por ejemplo,

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)

da la trama con interacción,

Sin embargo, quiero la trama del modelo,

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

Traté de hacer esto de esta manera,

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")

La trama de salida es

¿Hay alguna manera simple enggplot hacer esto de manera eficiente?

Respuestas a la pregunta(3)

Su respuesta a la pregunta