Я хотел бы использовать geom_smooth
для получения geom_smooth
линии от определенной модели линейной регрессии.
Мне кажется, что формула может принимать только x
и y
а не какой-либо дополнительный параметр.
Чтобы более четко показать, чего я хочу:
library(dplyr)
library(ggplot2)
set.seed(35413)
df <- data.frame(pred = runif(100,10,100),
factor = sample(c("A","B"), 100, replace = TRUE)) %>%
mutate(
outcome = 100 + 10*pred +
ifelse(factor=="B", 200, 0) +
ifelse(factor=="B", 4, 0)*pred +
rnorm(100,0,60))
С
ggplot(df, aes(x=pred, y=outcome, color=factor)) +
geom_point(aes(color=factor)) +
geom_smooth(method = "lm") +
theme_bw()
Я создаю встроенные линии, которые из-за параметра color=factor
являются в основном выходом линейной модели lm(outcome ~ pred*factor, df)
В некоторых случаях, однако, я предпочитаю, чтобы строки были выходными данными другой модели, например lm(outcome ~ pred + factor, df)
, для которой я могу использовать что-то вроде:
fit <- lm(outcome ~ pred+factor, df)
predval <- expand.grid(
pred = seq(
min(df$pred), max(df$pred), length.out = 1000),
factor = unique(df$factor)) %>%
mutate(outcome = predict(fit, newdata = .))
ggplot(df, aes(x=pred, y=outcome, color=factor)) +
geom_point() +
geom_line(data = predval) +
theme_bw()
что приводит к:
Мой вопрос: есть ли способ создать последний график, используя вместо этого geom_smooth
? Я знаю, что в geom_smooth
опция formula =
-, но я не могу сделать что-то вроде formula = y ~ x + factor
или formula = y ~ x + color
(как я определил color = factor
).