本文由阿童木根據(jù)實(shí)踐經(jīng)驗(yàn)而整理,希望對大家有幫助。
原創(chuàng)微文,歡迎轉(zhuǎn)發(fā)轉(zhuǎn)載。
線性回歸是利用數(shù)理統(tǒng)計(jì)中的回歸分析,來確定兩種或兩種以上變量間相互依賴的定量關(guān)系的一種統(tǒng)計(jì)分析方法,運(yùn)用十分廣泛?;貧w分析中,只包括一個(gè)自變量和一個(gè)因變量,且二者的關(guān)系可用一條直線近似表示,這種回歸分析稱為一元線性回歸分析。如果回歸分析中包括兩個(gè)或兩個(gè)以上的自變量,且因變量和自變量之間是線性關(guān)系,則稱為多元線性回歸分析。下面介紹R語言中線性回歸分析的基本方法。
一、模擬輸入數(shù)據(jù)
set.seed(1995)
# 隨機(jī)種子
data=data.frame(matrix(abs(round(rnorm(40, mean=20, sd=5))), 10, 4))
# 隨機(jī)正整數(shù),5行,4列
colnames(data)=c("y", "x1", "x2", "x3")
# 列名
data # 查看數(shù)據(jù),如下
二、一元線性回歸
>以y因變量,x1為自變量進(jìn)行醫(yī)院線性回歸。輸入數(shù)據(jù)是隨機(jī)模擬的,分析結(jié)果請不要太過在意。
regress1=lm(y~x1, data=data)
# 回歸
regress
# 查看結(jié)果,如下
summary(regress1)
# 使用summary查看結(jié)果,如下
>提取數(shù)據(jù)
summary(regress1)
coef(regress1)[1]
# 提取截距,intercept
coef(regress1)[2]
# 提取x1的系數(shù)
summary(regress1)$coefficients[2,4]
# 提取x1系數(shù)(模型)檢驗(yàn)結(jié)果
三、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)
# 保存結(jié)果,打開如下:
四、添加回歸方程
>寫一個(gè)添加回歸方程的函數(shù)。
lm_func = function(df)
{
m = lm(df[,2] ~ df[,1])
if(coef(m)[2]>0)
# 為保證x1系數(shù)的正負(fù)符號正確,判斷x1的系數(shù)是否大于0,大于0則執(zhí)行:
{
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則執(zhí)行:
{
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))
# 返回字符串
}
>把函數(shù)添加到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")
# 保存結(jié)果,打開如下:
五、多元線性回歸
>在lm函數(shù)中指定公式即可
regress2=lm(formula=y~x1+x2+x3, data=data)
summary(regress2)
感謝閱讀~
1 技術(shù)貼 | 16S專題 | 簡單介紹如何用自己的筆記本處理高通量16S數(shù)據(jù)
2 技術(shù)貼 | 宏基因組專題 | 組裝工具盤點(diǎn)和比較
3 技術(shù)貼 | R語言菌群Alpha多樣性分析和繪圖
4 技術(shù)貼 | 宏轉(zhuǎn)錄組專題 | DDBJ數(shù)據(jù)庫:宏轉(zhuǎn)錄組測序數(shù)據(jù)下載
5 技術(shù)貼 | R語言pheatmap聚類分析和熱圖
聯(lián)系客服