【问题标题】:Adding regression equation and r2 to plot in ggplot2 with R添加回归方程和 r2 用 R 在 ggplot2 中绘图
【发布时间】:2016-04-22 07:49:32
【问题描述】:

我有一系列 csv 文件,我正在为每个 csv 文件绘制一个三阶多项式回归。

我设置了目录和该目录中的所有 .csv 文件:

setwd("tester/results")
filenames = dir(pattern="*.csv")

然后我遍历文件并使用三阶多项式lm 绘制体积与时间的关系图。

for (i in 1:length(filenames)) { tmp <-read.csv(filenames[i]); print(ggplot(aes(x = Volume, y = time), data = tmp) + geom_point(aes(color = id)) + geom_smooth(aes(color = id), method= "lm", se = F, formula=y ~ poly(x, 3, raw=TRUE)))}

因此,给予

我现在希望将我在图表上绘制的lm 函数的公式与r2 值相加。

从这个SO question,我试过了:

for (i in 1:length(filenames)) { tmp <-read.csv(filenames[i]); print(ggplot(aes(x = Volume, y = time_normalised), data = tmp) + geom_point(aes(color = id)) + geom_smooth(aes(color = id), method= "lm", se = F, formula=y ~ poly(x, 3, raw=TRUE)) + stat_smooth_func(geom="text",method="lm",formula=y~poly(x,3,raw=TRUE),hjust=0,parse=TRUE))}

但是,从输出中可以看出,标签不是三阶多项式

【问题讨论】:

  • 函数 "stat_smooth_func" 不在 ggplot2 库中,但应从 gist 添加或从您提供的 SO 问题中的@kdauria 答案中提供的链接复制。
  • 对!然而,一个问题仍然存在。标签似乎不正确
  • 函数"stat_smooth_func" 仅用于第一次回归而不是第三次回归。您必须修改此代码才能使用此功能。
  • 我明白了。回到绘图板......

标签: r ggplot2


【解决方案1】:

您可以使用 ggpmisc 包中的函数 stat_poly_eq() 将三阶多项式方程添加到您的绘图中。

这个例子取自这个包的the vignette

set.seed(4321)
x <- 1:100
y <- (x + x^2 + x^3) + rnorm(length(x), mean = 0, sd = mean(x^3) / 4)
my.data <- data.frame(x, 
                      y, 
                      group = c("A", "B"), 
                      y2 = y * c(0.5,2),
                      block = c("a", "a", "b", "b"))

formula <- y ~ poly(x, 3, raw = TRUE)
ggplot(my.data, aes(x, y)) +
      geom_point() +
      geom_smooth(method = "lm", formula = formula) +
      stat_poly_eq(aes(label =  paste(..eq.label.., ..adj.rr.label.., sep = "~~~~")),
                   formula = formula, parse = TRUE)

【讨论】:

    猜你喜欢
    • 2016-09-26
    • 2018-06-19
    • 2018-08-31
    • 2020-11-10
    • 2011-11-24
    • 1970-01-01
    • 2013-11-11
    • 1970-01-01
    • 2015-07-06
    相关资源
    最近更新 更多