Борьба за адаптацию кода из стекового потока к набору данных - Добавление уравнения линии регрессии и R2 на графике - PullRequest
0 голосов
/ 29 ноября 2018

Я нашел функцию, которая добавляет уравнение линии регрессии на график. Добавление линейного уравнения регрессии и 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' не найден

Где я допустил ошибку?Заранее спасибо!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...