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

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

本文首发于“生信补给站”公众号  https://mp.weixin.qq.com/s/_rTWJHcbUu2Eqtex74gUBA


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

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

一 载入 R包

使用内置数据集

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 Species
1          5.1         3.5          1.4         0.2  setosa
2          4.9         3.0          1.4         0.2  setosa
3          4.7         3.2          1.3         0.2  setosa
4          4.6         3.1          1.5         0.2  setosa
5          5.0         3.6          1.4         0.2  setosa
6          5.4         3.9          1.7         0.4  setosa


二 回归曲线的可能性


1, 绘制点图,添加回归线

#散点图
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, 连接点到线

p +
 stat_smooth(color = "skyblue", formula = y ~ x,fill = "skyblue", method = "lm")+
 stat_fit_deviations(formula = y ~ x, color = "skyblue")

3,添加回归公式

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

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, 添加方差结果表

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",
)rtfg

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

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


5,细节优化方差表

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

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”组图合并


相关文章
|
6天前
【视频】什么是非线性模型与R语言多项式回归、局部平滑样条、 广义相加GAM分析工资数据|数据分享(上)
【视频】什么是非线性模型与R语言多项式回归、局部平滑样条、 广义相加GAM分析工资数据|数据分享
15 0
|
3天前
|
算法 Python
R语言随机波动模型SV:马尔可夫蒙特卡罗法MCMC、正则化广义矩估计和准最大似然估计上证指数收益时间序列
R语言随机波动模型SV:马尔可夫蒙特卡罗法MCMC、正则化广义矩估计和准最大似然估计上证指数收益时间序列
18 7
|
6天前
【视频】什么是非线性模型与R语言多项式回归、局部平滑样条、 广义相加GAM分析工资数据|数据分享(下)
【视频】什么是非线性模型与R语言多项式回归、局部平滑样条、 广义相加GAM分析工资数据|数据分享
10 0
|
13天前
样条曲线分段线性回归模型piecewise regression估计个股beta值分析收益率数据
样条曲线分段线性回归模型piecewise regression估计个股beta值分析收益率数据
14 0
|
14天前
|
数据采集
R语言用线性模型进行臭氧预测: 加权泊松回归,普通最小二乘,加权负二项式模型,多重插补缺失值
R语言用线性模型进行臭氧预测: 加权泊松回归,普通最小二乘,加权负二项式模型,多重插补缺失值
11 0
|
14天前
|
数据可视化
R语言极值推断:广义帕累托分布GPD使用极大似然估计、轮廓似然估计、Delta法
R语言极值推断:广义帕累托分布GPD使用极大似然估计、轮廓似然估计、Delta法
16 1
|
16天前
基于R统计软件的三次样条和平滑样条模型数据拟合及预测
基于R统计软件的三次样条和平滑样条模型数据拟合及预测
15 0
|
15天前
|
数据可视化
R语言建模收入不平等:分布函数拟合及洛伦兹曲线(Lorenz curve)
R语言建模收入不平等:分布函数拟合及洛伦兹曲线(Lorenz curve)
|
16天前
|
大数据
stata具有异方差误差的区间回归
stata具有异方差误差的区间回归
19 5
|
16天前
R语言异方差回归模型建模:用误差方差解释异方差
R语言异方差回归模型建模:用误差方差解释异方差