技术贴 | R语言:线性回归、geom_text添加回归方程

本文由阿童木根据实践经验而整理,希望对大家有帮助。

原创微文,欢迎转发转载。

导读

线性回归是利用数理统计中的回归分析,来确定两种或两种以上变量间相互依赖的定量关系的一种统计分析方法,运用十分广泛。回归分析中,只包括一个自变量和一个因变量,且二者的关系可用一条直线近似表示,这种回归分析称为一元线性回归分析。如果回归分析中包括两个或两个以上的自变量,且因变量和自变量之间是线性关系,则称为多元线性回归分析。下面介绍R语言中线性回归分析的基本方法。

一、模拟输入数据

set.seed(1995)  
# 随机种子
data=data.frame(matrix(abs(round(rnorm(40, mean=20, sd=5))), 10, 4)) 
# 随机正整数,5行,4列
colnames(data)=c("y", "x1", "x2", "x3") 
# 列名
data  # 查看数据,如下

二、一元线性回归

>以y因变量,x1为自变量进行医院线性回归。输入数据是随机模拟的,分析结果请不要太过在意。

regress1=lm(y~x1, data=data)
# 回归
regress
# 查看结果,如下

summary(regress1)
# 使用summary查看结果,如下

>提取数据

summary(regress1)
coef(regress1)[1]
# 提取截距,intercept

coef(regress1)[2]
# 提取x1的系数

summary(regress1)$coefficients[2,4]
# 提取x1系数(模型)检验结果 

三、ggplot画图

library(ggplot2)
# 加载包
p=ggplot(data=data, aes(x=x1, y=y)) +
geom_point(color="deepskyblue") +
geom_smooth(method="lm") +
theme(panel.grid=element_blank(), panel.background=element_rect(fill='transparent', color='black'))

ggsave(p, file=p2.png)
# 保存结果,打开如下:

四、添加回归方程

>写一个添加回归方程的函数。

lm_func = function(df)
{
    m = lm(df[,2] ~ df[,1])
if(coef(m)[2]>0)
# 为保证x1系数的正负符号正确,判断x1的系数是否大于0,大于0则执行:
    {
        eq <- substitute(italic(y) == a + b %.% italic(x)*","~~italic(r)^2~"="~r2*","~~italic(p)~"="~p_value,
list(a = format(coef(m)[1], digits = 2), b = format(coef(m)[2], digits = 2), r2 = round(summary(m)$r.squared, 3), p_value = round(summary(m)$coefficients[2, 4])))
    }
else
# 小于0则执行:
    {
        eq <- substitute(italic(y) == a~b %.% italic(x)*","~~italic(r)^2~"="~r2*","~~italic(p)~"="~p_value,
list(a = format(coef(m)[1], digits = 2), b = format(coef(m)[2], digits = 2), r2 = round(summary(m)$r.squared, 3), p_value = round(summary(m)$coefficients[2, 4], 3)))
    }
as.character(as.expression(eq))
# 返回字符串
}

>把函数添加到geom_text中,再次画图

p2=ggplot(data=data, aes(x=x1, y=y)) +
geom_point(color="deepskyblue") +
geom_smooth(method="lm") +
theme(panel.grid=element_blank(), panel.background=element_rect(fill='transparent', color='black')) +
geom_text(x=20, y=26, aes(label=lm_func(data.frame(data[, c(1, 2)]))), parse=T)

ggsave(p2, file= "p2.png")
# 保存结果,打开如下:

五、多元线性回归

>在lm函数中指定公式即可

regress2=lm(formula=y~x1+x2+x3, data=data)
summary(regress2)

感谢阅读~




你可能还喜欢

技术贴 | 16S专题 | 简单介绍如何用自己的笔记本处理高通量16S数据

2 技术贴 | 宏基因组专题 | 组装工具盘点和比较

3 技术贴 | R语言菌群Alpha多样性分析和绘图

技术贴 | 宏转录组专题 | DDBJ数据库:宏转录组测序数据下载

技术贴 | R语言pheatmap聚类分析和热图


(0)

相关推荐