Я нашел функцию, которая добавляет уравнение линии регрессии на график. Добавление линейного уравнения регрессии и R2 на графике Если я скопирую функцию и образец данных, все работает нормально.Но когда я пытаюсь адаптировать код, я получаю сообщение, что Y не может быть найден.
Функция:
lm_eqn <- function(df){
m <- lm(y ~ x, df);
eq <- substitute(italic(y) == a + b %.% italic(x)*","~~italic(r)^2~"="~r2,
list(a = format(coef(m)[1], digits = 2),
b = format(coef(m)[2], digits = 2),
r2 = format(summary(m)$r.squared, digits = 3)))
as.character(as.expression(eq));
}
Мой пример данных и адаптированный код:
library(tidyverse)
set.seed(1)
id <- 1:5000
zip <- sample(100:200, 5000, replace = TRUE)
outcome <- rbinom(5000, 1, 0.23)
df <- data.frame(id, outcome, zip) %>% as_tibble()
new_df <- df %>% group_by(zip) %>% summarise(ratio = mean(outcome))
library(ggplot2)
t <- ggplot(data = new_df, aes(x = zip, y = ratio)) +
geom_smooth(method = "lm", se=FALSE, color="black", formula = y ~ x) +
geom_point()
t1 <- t + geom_text(x = 25, y = 300, label = lm_eqn(df), parse = TRUE)
Ошибка в eval (predvars, data, env): объект 'y' не найден
Где я допустил ошибку?Заранее спасибо!