首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何将多个线性回归方程添加到ggplot的底部?

在ggplot中添加多个线性回归方程可以通过使用geom_smooth()函数和stat_poly_eq()函数来实现。下面是完善且全面的答案:

要将多个线性回归方程添加到ggplot的底部,可以按照以下步骤进行操作:

  1. 首先,确保已经安装并加载了ggplot2包,可以使用以下命令加载包:
代码语言:txt
复制
library(ggplot2)
  1. 创建一个基本的ggplot对象,并使用geom_point()函数添加散点图。假设我们有一个数据框df,其中包含x和y变量:
代码语言:txt
复制
p <- ggplot(data = df, aes(x = x, y = y)) + geom_point()
  1. 使用geom_smooth()函数添加线性回归线。设置method参数为"lm"表示使用线性回归模型。此外,设置se参数为FALSE可以去除置信区间:
代码语言:txt
复制
p <- p + geom_smooth(method = "lm", se = FALSE)
  1. 创建一个自定义函数stat_poly_eq(),用于计算并添加回归方程。该函数将方程添加到图形的底部,并使用annotate()函数进行注释。以下是自定义函数的代码:
代码语言:txt
复制
stat_poly_eq <- function(formula, coef.digits = 2, rr.digits = 2, ...) {
  lm_eq <- function(formula) {
    fit <- lm(formula)
    eq <- substitute(italic(y) == a + b %.% italic(x)*","~~italic(r)^2~"="~r2, 
                     list(a = format(fit$coef[[1]], digits = coef.digits), 
                          b = format(fit$coef[[2]], digits = coef.digits), 
                          r2 = format(summary(fit)$r.squared, digits = rr.digits)))
    as.character(as.expression(eq))
  }
  geom <- ggplot2:::ggplot2::GeomFunction$new(
    fun = function(x, y, ...) {
      label <- paste(lm_eq(y ~ x), sep = ", ")
      data.frame(x = mean(x), y = min(y), label = label)
    }, ...)
  ggplot2:::ggplot_add(geom)
}
  1. 使用自定义函数stat_poly_eq()添加回归方程。将formula参数设置为y ~ x表示使用y和x变量进行回归:
代码语言:txt
复制
p <- p + stat_poly_eq(formula = y ~ x)
  1. 最后,使用labs()函数添加图形标题和轴标签,并使用theme()函数进行图形样式的自定义。以下是一个完整的示例:
代码语言:txt
复制
library(ggplot2)

# 创建一个示例数据框
df <- data.frame(x = c(1, 2, 3, 4, 5), y = c(2, 4, 6, 8, 10))

# 创建基本的ggplot对象并添加散点图和线性回归线
p <- ggplot(data = df, aes(x = x, y = y)) + geom_point() +
  geom_smooth(method = "lm", se = FALSE)

# 创建自定义函数用于添加回归方程
stat_poly_eq <- function(formula, coef.digits = 2, rr.digits = 2, ...) {
  lm_eq <- function(formula) {
    fit <- lm(formula)
    eq <- substitute(italic(y) == a + b %.% italic(x)*","~~italic(r)^2~"="~r2, 
                     list(a = format(fit$coef[[1]], digits = coef.digits), 
                          b = format(fit$coef[[2]], digits = coef.digits), 
                          r2 = format(summary(fit)$r.squared, digits = rr.digits)))
    as.character(as.expression(eq))
  }
  geom <- ggplot2:::ggplot2::GeomFunction$new(
    fun = function(x, y, ...) {
      label <- paste(lm_eq(y ~ x), sep = ", ")
      data.frame(x = mean(x), y = min(y), label = label)
    }, ...)
  ggplot2:::ggplot_add(geom)
}

# 使用自定义函数添加回归方程
p <- p + stat_poly_eq(formula = y ~ x)

# 添加图形标题和轴标签,并自定义图形样式
p <- p + labs(title = "Scatter plot with linear regression", 
              x = "X", y = "Y") +
  theme(plot.title = element_text(hjust = 0.5),
        axis.title = element_text(size = 12))

# 显示图形
print(p)

这样,你就可以将多个线性回归方程添加到ggplot的底部了。请注意,这只是一个示例,你可以根据自己的数据和需求进行相应的修改和定制。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

没有搜到相关的视频

领券