前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >R-ggpmisc|回归曲线添加回归方程,R2,方差表,香不香?

R-ggpmisc|回归曲线添加回归方程,R2,方差表,香不香?

作者头像
生信补给站
发布2020-08-06 11:32:21
1.6K0
发布2020-08-06 11:32:21
举报
文章被收录于专栏:生信补给站生信补给站

散点图绘制回归曲线很常用,那么添加上回归方程,P值,R2或者方差结果表等可以展示更量化的信息。

那加起来复杂吗?还真不一定!

一 载入 R包

使用内置数据集

代码语言:javascript
复制
library(ggplot2) #加载ggplot2包
library(dplyr) #加载dplyr包
library(ggpmisc) #加载ggpmisc包
#展示 使用Species为setosa的亚集
iris2 <- subset(iris,Species == "setosa")head(iris2)  Sepal.Length Sepal.Width Petal.Length Petal.Width Species1          5.1         3.5          1.4         0.2  setosa2          4.9         3.0          1.4         0.2  setosa3          4.7         3.2          1.3         0.2  setosa4          4.6         3.1          1.5         0.2  setosa5          5.0         3.6          1.4         0.2  setosa6          5.4         3.9          1.7         0.4  setosa

二 回归曲线的可能性

1, 绘制点图,添加回归线
代码语言:javascript
复制
#散点图
p <- ggplot(iris2, aes(Sepal.Length, Sepal.Width)) +
  geom_point(color = "grey50",size = 3, alpha = 0.6)
#回归线
#添加回归曲线
p + stat_smooth(color = "skyblue", fill = "skyblue", method = "lm")
2, 连接点到线
代码语言:javascript
复制
p + 
  stat_smooth(color = "skyblue", formula = y ~ x,fill = "skyblue", method = "lm")+
  stat_fit_deviations(formula = y ~ x, color = "skyblue")
3,添加回归公式

stat_poly_eq参数添加公式,内含参数可调整位置等

代码语言:javascript
复制
p + 
  stat_smooth(color = "skyblue", formula = y ~ x,fill = "skyblue", method = "lm") +
  stat_poly_eq(
    aes(label = paste(..eq.label.., ..adj.rr.label.., sep = '~~~~')),
    formula = y ~ x,  parse = TRUE,
      size = 5, #公式字体大小
      label.x = 0.1,  #位置 ,0-1之间的比例
      label.y = 0.95)
4, 添加方差结果表
代码语言:javascript
复制
p +  ylim(2,5) + 
  stat_smooth(color = "skyblue", formula = y ~ x,fill = "skyblue", method = "lm") +
  stat_poly_eq(
    aes(label = paste(..eq.label.., ..adj.rr.label.., sep = '~~~~')),
    formula = y ~ x,  parse = TRUE,size = 3,label.x = 0.1, label.y = 0.99) +
  stat_fit_tb(tb.type = 'fit.anova',
    label.y.npc = "top", label.x.npc = "left",
  )

注:此处仅为展示 ,label.y.npc 为另一种调整位置的方式 ,用label.y可完全避免重叠

如担心方差表和公示与图重叠,可以通过ggplot2 的 ylimxlim适当调整,然后调整位置即可。

5,细节优化方差表

上述方差表中的行名,列名,以及NA,,,稍加调整后,看起来更“专业”

代码语言:javascript
复制
p +  ylim(2,5) + 
  stat_smooth(color = "skyblue", formula = y ~ x,fill = "skyblue", method = "lm") +
  stat_poly_eq(
    aes(label = paste(..eq.label.., ..adj.rr.label.., sep = '~~~~')),
    formula = y ~ x,  parse = TRUE,size = 4,label.x = 0.1, label.y = 0.95) +
  stat_fit_tb(method = "lm",
              method.args = list(formula = y ~ x),
              tb.type = "fit.anova",
              tb.vars = c(Effect = "term",
                          "df",
                          "M.S." = "meansq",
                          "italic(F)" = "statistic",
                          "italic(P)" = "p.value"),
              label.y = 0.87, label.x = 0.1,
              size = 4,
              parse = TRUE
  )

以上,使用ylim 和 label.y后,公示和方差表不重叠,也不遮挡点图!

其他:既然是ggplot2的扩展包,ggplot2的一些参数亦可使用:

ggplot2|详解八大基本绘图要素

ggplot2|theme主题设置,详解绘图优化-“精雕细琢”

ggplot2 |legend参数设置,图形精雕细琢

ggplot2|ggpubr进行“paper”组图合并

参考资料:

https://github.com/cran/ggpmisc

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2020-04-15,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 生信补给站 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1, 绘制点图,添加回归线
  • 2, 连接点到线
  • 3,添加回归公式
  • 4, 添加方差结果表
  • 5,细节优化方差表
    • 其他:既然是ggplot2的扩展包,ggplot2的一些参数亦可使用:
      • 参考资料:
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档