Постройте два уравнения регрессии (или более) на одном графике ggplot

Мне нужно отобразить на одном графике два уравнения линейной регрессии и коэффициенты (r, r², p, N). Я сделал это с помощью facet_grid, но теперь две кривые нельзя отображать отдельно.

Я изменил код, похожий на функцию facet_grid:

  equation = function(file) {
  mod = lm(y ~ x,data=file)
  mod_sum = summary(mod)
  formula = sprintf("y= %.3f %+.3f*x", coef(mod)[1], coef(mod)[2])
  r = mod_sum$r.squared
  r2 = sprintf("r2= %.3f", r)
  x  = cor.test(~x + y,data=file)
  r0 = sprintf("r= %.3f", x[4])
  p1 = pf(mod_sum$fstatistic[1],mod_sum$fstatistic[2],mod_sum$fstatistic[3],lower.tail=F)
 p =sprintf("p = %.3f", p1)
n0 = length(mod_sum$residual)
n1 = sprintf("N = %.f", n0)
data.frame(formula=formula, r=r0,r2=r2, p=p,n=n1, stringsAsFactors=FALSE)
}

equation_end = ddply(file, c("outlier"), equation) 

Данные двух регрессий находятся в одном столбце и разделены коэффициентом «выброс».

Как я могу отобразить эти уравнения на одном графике?


person Joyce M.    schedule 23.06.2015    source источник
comment
Можете ли вы сделать свой пример воспроизводимым? Что-то вроде dput(equation_end) или очень помогло бы, если оно не слишком велико...   -  person Gregor Thomas    schedule 24.06.2015


Ответы (1)


Вы можете использовать annotate для размещения текста на фигуре.

library(ggplot2)
ggplot(file, aes(x, y, color=outlier)) +
  geom_point() +
  annotate("text", c(-1,-1), c(3,4), label=equation_end$formula)

введите здесь описание изображения

Если вы хотите, чтобы текст был того же цвета, что и некоторые строки, попробуйте использовать geom_text,

ggplot(file, aes(x, y, color=outlier)) +
  geom_point() +
  geom_smooth(fill=NA) +
  geom_text(data=equation_end, aes(x=c(-1,-1), y=c(3,4), label=formula), show_guide=F)

введите здесь описание изображенияДанные:

library(plyr)
x <- rnorm(100)
file <- data.frame(x=x, y=2*x + rnorm(100), outlier=factor(sample(0:1, 100, rep=T)))
equation_end = ddply(file, c("outlier"), equation) 
person Rorschach    schedule 23.06.2015
comment
Пошли по твоему пути. Я использовал пасту, чтобы соответствовать коэффициентам. Тем не менее, это немного сбивало с толку, нужно было связать цвета линий, чтобы получить хороший результат. Возможно, используя файл geom_text. Но все равно не работал - person Joyce M.; 24.06.2015
comment
Я не уверен, что вы имеете в виду, вы хотите, чтобы текст был окрашен так же, как линии? - person Rorschach; 24.06.2015
comment
Вот так. Потому что таким образом я знаю, к какому набору данных он относится. Когда я использую geom_text, может отображаться только одно из уравнений - person Joyce M.; 24.06.2015
comment
Спасибо, похоже, это сработало! Я просто позиционирую уравнение - person Joyce M.; 24.06.2015