R中的簡單線性回歸
簡單線性回歸被用于預(yù)測一個量化結(jié)果y
基于一個單一預(yù)測變量的x
数冬。目標(biāo)是建立將y定義為x變量的函數(shù)的數(shù)學(xué)模型(或公式)囊咏。
建立了具有統(tǒng)計意義的模型淤翔,就可以根據(jù)新的x值將其用于預(yù)測未來結(jié)果丰包。
考慮到這一點(diǎn)饶唤,我們想評估三種媒體(youtube肄程,facebook和newspaper)的廣告預(yù)算對未來銷售的影響睦擂。這個問題的例子可以用線性回歸建模得湘。
公式和基礎(chǔ)
線性回歸的數(shù)學(xué)公式可以寫成y = b0 + b1*x + e
,其中:
-
b0
并b1
稱為回歸beta系數(shù)或參數(shù):-
b0
是回歸線的截距顿仇;是時的預(yù)測值x = 0
淘正。 -
b1
是回歸線的斜率。
-
-
e
是誤差項(xiàng)(也稱為殘差)臼闻,y的一部分可以由回歸模型解釋
下圖說明了線性回歸模型鸿吆,其中:
- 最佳擬合回歸線為藍(lán)色
- 截距(b0)和斜率(b1)以綠色顯示
- 誤差項(xiàng)(e)用垂直紅線表示
從上面的散點(diǎn)圖可以看出,并不是所有的數(shù)據(jù)點(diǎn)都精確地落在擬合的回歸線上述呐。有些點(diǎn)在藍(lán)色曲線的上方惩淳,而有些點(diǎn)在藍(lán)色曲線的下方∨野幔總體而言思犁,殘余誤差(e)的平均值約為零。
殘留誤差的平方和稱為殘差平方和或Residual Sum of Squares RSS进肯。
擬合回歸線周圍的點(diǎn)的平均變化稱為殘差標(biāo)準(zhǔn)誤差(Residual Standard Error激蹲, RSE)。這是用于評估擬合回歸模型整體質(zhì)量的指標(biāo)之一江掩。RSE越低越好学辱。
由于平均誤差項(xiàng)為零乘瓤,因此可以近似估算出結(jié)果變量y,如下所示:
y ~ b0 + b1*x
在數(shù)學(xué)上策泣,確定beta系數(shù)(b0和b1)衙傀,以使RSS盡可能小。確定β系數(shù)的這種方法在技術(shù)上稱為最小二乘回歸或普通最小二乘(OLS)回歸着降。
一旦計算出β系數(shù)差油,就進(jìn)行t檢驗(yàn)以檢查這些系數(shù)是否顯著不同于零。Beta系數(shù)非零表示在預(yù)測變量(x)與結(jié)果變量(y)之間存在顯著關(guān)系任洞。
加載所需的R包
加載所需的軟件包:
-
tidyverse
用于數(shù)據(jù)處理和可視化 -
ggpubr
:輕松創(chuàng)建發(fā)表級圖片
library(tidyverse)
library(ggpubr)
theme_set(theme_pubr())
示例數(shù)據(jù)和問題
我們將使用marketing
數(shù)據(jù)集[datarium包]。它包含三種廣告媒體(youtube发侵,facebook和報紙)對銷售的影響交掏。數(shù)據(jù)是連同銷售一起的數(shù)千美元的廣告預(yù)算。廣告實(shí)驗(yàn)已用不同的預(yù)算重復(fù)了200次刃鳄,并記錄了觀察到的銷售額盅弛。
首先datarium
使用來安裝軟件包devtools::install_github("kassmbara/datarium")
,然后marketing
按照以下步驟加載和檢查數(shù)據(jù):
這里可以直接運(yùn)行
install.packages("datarium")
安裝
檢查數(shù)據(jù):
# Load the package
data("marketing", package = "datarium")
head(marketing, 4)
## youtube facebook newspaper sales
## 1 276.1 45.4 83.0 26.5
## 2 53.4 47.2 54.1 12.5
## 3 20.6 55.1 83.2 11.2
## 4 181.8 49.6 70.2 22.2
我們希望根據(jù)在YouTube上花費(fèi)的廣告預(yù)算來預(yù)測未來的銷售量叔锐。
可視化
- 創(chuàng)建散點(diǎn)圖挪鹏,分別顯示在三種媒體的廣告投資與銷售量的關(guān)系
- 添加平滑線
library("gridExtra")
p1 <- ggplot(marketing, aes(x = youtube, y = sales)) +
geom_point() +
stat_smooth()
p2 <- ggplot(marketing, aes(x = facebook, y = sales)) +
geom_point() +
stat_smooth()
p3 <- ggplot(marketing, aes(x = newspaper, y = sales)) +
geom_point() +
stat_smooth()
grid.arrange(p1, p2, p3, ncol= 3, nrow = 1)
上圖顯示了youtube
和facebook
與sales
之間成明顯的線性關(guān)系,而newspaper
與sales
之間不成的線性關(guān)系而愉烙。這是一件好事讨盒,因?yàn)榫€性回歸的一個重要假設(shè)是結(jié)果與預(yù)測變量之間的關(guān)系是線性和可加的。
也可以使用R函數(shù)計算兩個變量之間的相關(guān)系數(shù)cor()
:
> cor(marketing$sales, marketing$youtube)
[1] 0.7822244
> cor(marketing$sales, marketing$facebook)
[1] 0.5762226
> cor(marketing$sales, marketing$newspaper)
[1] 0.228299
相關(guān)系數(shù)測量兩個變量x和y之間的關(guān)聯(lián)水平步责。它的值介于-1(完全負(fù)相關(guān):x增加時返顺,y減小)和+1(完全正相關(guān):x增加時蔓肯,y增大)之間遂鹊。
接近0的值表示變量之間的關(guān)系較弱。較低的相關(guān)性(-0.2 <x <0.2)可能表明結(jié)果變量(y)的大部分變化都無法由預(yù)測變量(x)解釋蔗包。在這種情況下秉扑,我們可能應(yīng)該尋找更好的預(yù)測變量。
在我們的示例中调限,相關(guān)系數(shù)足夠大舟陆,因此我們可以繼續(xù)構(gòu)建y作為x的函數(shù)的線性模型。
計算方式
簡單的線性回歸試圖根據(jù)youtube廣告預(yù)算找到最佳的線來預(yù)測銷售量旧噪。
線性模型方程可寫為: sales = b0 + b1 * youtube
R函數(shù)lm()
可用于確定線性模型的beta系數(shù):
model <- lm(sales ~ youtube, data = marketing)
model
##
## Call:
## lm(formula = sales ~ youtube, data = marketing)
##
## Coefficients:
## (Intercept) youtube
## 8.4391 0.0475
結(jié)果顯示了youtube變量的截距和beta系數(shù)吨娜。
解釋
從上面的輸出中:
估計的回歸線方程可寫為:
sales = 8.44 + 0.048*youtube
截距(
b0
)為8.44√灾樱可以將其解釋為YouTube廣告預(yù)算為零的預(yù)測銷售單位宦赠∨阏保回想一下,我們以千美元為單位運(yùn)營勾扭。這意味著毡琉,對于等于零的youtube廣告預(yù)算,我們可以預(yù)期實(shí)現(xiàn)8.44 * 1000 = 8440美元的銷售額妙色。變量youtube(
b1
)的回歸beta系數(shù)(也稱為斜率)為0.048桅滋。這意味著,對于等于1000美元的youtube廣告預(yù)算身辨,我們可以預(yù)期銷售額會增加48個單位(0.048 * 1000)丐谋。也就是說,sales = 8.44 + 0.048*1000 = 56.44 units
煌珊。因?yàn)槲覀円郧涝獮閱挝贿M(jìn)行操作号俐,所以這表示銷售額為56440美元。
回歸線
要將回歸線添加到散點(diǎn)圖上定庵,可以使用函數(shù)stat_smooth()
[ggplot2]吏饿。默認(rèn)情況下,擬合線周圍帶有置信區(qū)間蔬浙。置信帶反映了該線的不確定性猪落。如果您不想顯示它,請se = FALSE
在函數(shù)中指定選項(xiàng)stat_smooth()
畴博。
ggplot(marketing, aes(youtube, sales)) +
geom_point() +
stat_smooth(method = lm)
模型評估
在上一節(jié)中笨忌,我們建立了一個線性銷售模型,作為youtube廣告預(yù)算的函數(shù):sales = 8.44 + 0.048*youtube
绎晃。
使用此公式預(yù)測將來的銷售之前蜜唾,應(yīng)確保該模型具有統(tǒng)計意義,即:
- 預(yù)測變量和結(jié)果變量之間存在統(tǒng)計上的顯著關(guān)系
- 我們建立的模型非常適合我們手中的數(shù)據(jù)庶艾。
在本節(jié)中袁余,我們將描述如何檢查線性回歸模型的質(zhì)量。
模型匯總
對于
summary()
的解讀有一篇不錯的文章:R語言:summary()函數(shù)解讀
我們首先使用R函數(shù)顯示模型的統(tǒng)計摘要summary()
:
summary(model)
##
## Call:
## lm(formula = sales ~ youtube, data = marketing)
##
## Residuals:
## Min 1Q Median 3Q Max
## -10.06 -2.35 -0.23 2.48 8.65
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 8.43911 0.54941 15.4 <2e-16 ***
## youtube 0.04754 0.00269 17.7 <2e-16 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 3.91 on 198 degrees of freedom
## Multiple R-squared: 0.612, Adjusted R-squared: 0.61
## F-statistic: 312 on 1 and 198 DF, p-value: <2e-16
摘要輸出顯示6個??組件咱揍,包括:
- call颖榜。顯示用于計算回歸模型的函數(shù)調(diào)用。
- Residuals煤裙⊙谕辏快速查看殘差的分布,根據(jù)定義硼砰,這些均值為零且蓬。因此,中位數(shù)不應(yīng)遠(yuǎn)離零题翰,并且最小值和最大值的絕對值應(yīng)大致相等恶阴。
- Coefficients诈胜。顯示回歸系數(shù)β及其統(tǒng)計意義。與結(jié)果變量顯著相關(guān)的預(yù)測變量以星號標(biāo)記冯事。
- 殘留標(biāo)準(zhǔn)誤差(Residual standard error, RSE)焦匈,R平方( R-squared,R2)和F統(tǒng)計量昵仅,F(xiàn)-statistic是用于檢查模型與我們的數(shù)據(jù)擬合程度的指標(biāo)缓熟。
系數(shù)意義
模型統(tǒng)計摘要中的系數(shù)表顯示:
- 貝塔系數(shù)的估計
- 標(biāo)準(zhǔn)誤差(SE),其定義的β系數(shù)的精度摔笤。對于給定的beta系數(shù)够滑,SE反映了在重復(fù)采樣下系數(shù)如何變化。它可用于計算置信區(qū)間和t統(tǒng)計量籍茧。
- t-統(tǒng)計量和相關(guān)的p值版述,其定義所述β-系數(shù)的統(tǒng)計顯著性。
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 8.4391 0.54941 15.4 1.41e-35
## youtube 0.0475 0.00269 17.7 1.47e-42
t統(tǒng)計量和p值:
對于給定的預(yù)測變量寞冯,t統(tǒng)計量(及其關(guān)聯(lián)的p值)測試給定的預(yù)測變量和結(jié)果變量之間是否存在統(tǒng)計上顯著的關(guān)系,即預(yù)測變量的beta系數(shù)是否顯著不同從零開始晚伙。
統(tǒng)計假設(shè)如下:
- 零假設(shè)(H0):系數(shù)等于零(即x和y之間沒有關(guān)系)
- 替代假設(shè)(Ha):系數(shù)不等于零(即x和y之間存在某種關(guān)系)
在數(shù)學(xué)上吮龄,對于給定的beta系數(shù)(b),t檢驗(yàn)計算為t = (b - 0)/SE(b)
咆疗,其中SE(b)是系數(shù)b的標(biāo)準(zhǔn)誤差漓帚。t統(tǒng)計量測量b遠(yuǎn)離0的標(biāo)準(zhǔn)偏差的數(shù)量。因此午磁,較大的t統(tǒng)計量將產(chǎn)生較小的p值尝抖。
t統(tǒng)計量越高(p值越低),則預(yù)測變量越重要迅皇。右側(cè)的符號在視覺上指定了重要性級別昧辽。表格下方的行顯示了這些符號的定義。一星表示0.01 <p <0.05登颓。變量的p值旁邊的星星越多搅荞,變量的意義就越大。
具有統(tǒng)計學(xué)意義的系數(shù)表明框咙,預(yù)測變量(x)與結(jié)果變量(y)之間存在關(guān)聯(lián)咕痛。
在我們的示例中,截距的p值和預(yù)測變量都非常重要喇嘱,因此我們可以拒絕原假設(shè)并接受替代假設(shè)茉贡,這意味著預(yù)測變量與結(jié)果變量之間存在顯著關(guān)聯(lián)。
對于是否在模型中包含預(yù)測變量者铜,t統(tǒng)計量是非常有用的指南腔丧。高t統(tǒng)計量(p值接近0的低值)表示應(yīng)將預(yù)測變量保留在模型中放椰,而非常低的t統(tǒng)計量則表示可以刪除預(yù)測變量(P. Bruce and Bruce 2017)。
標(biāo)準(zhǔn)誤差和置信區(qū)間:
標(biāo)準(zhǔn)誤差測量β系數(shù)的變異性/準(zhǔn)確性悔据。它可用于計算系數(shù)的置信區(qū)間庄敛。
例如,系數(shù)b1的95%置信區(qū)間定義為b1 +/- 2*SE(b1)
科汗,其中:
- b1的下限=
b1 - 2*SE(b1) = 0.047 - 2*0.00269 = 0.042
- b1的上限=
b1 + 2*SE(b1) = 0.047 + 2*0.00269 = 0.052
即藻烤,間隔[0.042,0.052]包含b1的真實(shí)值的可能性大約為95%头滔。同樣怖亭,可以將b0的95%置信區(qū)間計算為b0 +/- 2*SE(b0)
。
要獲取這些信息坤检,只需鍵入:
confint(model)
## 2.5 % 97.5 %
## (Intercept) 7.3557 9.5226
## youtube 0.0422 0.0528
模型精度
一旦確定至少一個預(yù)測變量與結(jié)果顯著相關(guān)兴猩,就應(yīng)該通過檢查模型擬合數(shù)據(jù)的程度來繼續(xù)進(jìn)行診斷。此過程也稱為擬合優(yōu)度
可以使用以下三個數(shù)量來評估線性回歸擬合的整體質(zhì)量早歇,這些數(shù)量顯示在模型摘要中:
- 殘留標(biāo)準(zhǔn)誤差(RSE)倾芝。
- R平方(R2)
- F統(tǒng)計
## rse r.squared f.statistic p.value
## 1 3.91 0.612 312 1.47e-42
- 殘留標(biāo)準(zhǔn)誤差(RSE)。
RSE(也稱為模型sigma)是殘差箭跳,表示擬合回歸線周圍觀測點(diǎn)的平均變化晨另。這是殘留誤差的標(biāo)準(zhǔn)偏差。
RSE提供了模型無法解釋的數(shù)據(jù)模式的絕對度量谱姓。比較兩個模型時借尿,具有較小RSE的模型很好地表明了該模型最適合數(shù)據(jù)。
將RSE除以結(jié)果變量的平均值將為您提供預(yù)測誤差率屉来,該誤差率應(yīng)盡可能小路翻。
在我們的示例中,RSE = 3.91茄靠,這意味著觀察到的銷售價值平均偏離真實(shí)回歸線約3.9個單位茂契。
3.9單位的RSE是否可接受的預(yù)測誤差是主觀的,并且取決于問題的背景嘹黔。但是账嚎,我們可以計算百分比誤差。在我們的數(shù)據(jù)集中儡蔓,銷售平均值為16.827郭蕉,因此百分比誤差為3.9 / 16.827 = 23%。
sigma(model)*100/mean(marketing$sales)
## [1] 23.2
- R平方和調(diào)整后的R平方:
R平方(R2)的范圍是0到1喂江,并且代表模型中可以解釋的數(shù)據(jù)中信息的比例(即變化)召锈。調(diào)整后的R平方可調(diào)整自由度。
R2衡量模型擬合數(shù)據(jù)的程度获询。對于簡單的線性回歸涨岁,R2是皮爾森相關(guān)系數(shù)的平方拐袜。
R2的高值是一個很好的指示。但是梢薪,當(dāng)在模型中添加更多的預(yù)測變量時(例如在多元線性回歸模型中)蹬铺,R2的值趨于增加,因此您應(yīng)主要考慮調(diào)整后的R平方秉撇,對于更多數(shù)量的預(yù)測變量而言甜攀,這是懲罰性的R2。
- (調(diào)整后的)R2接近1表示回歸模型已解釋了結(jié)果中很大一部分的可變性琐馆。
- 接近0的數(shù)字表示回歸模型無法解釋結(jié)果的大部分可變性规阀。
- F統(tǒng)計:
F統(tǒng)計量提供了模型的整體重要性。它評估至少一個預(yù)測變量是否具有非零系數(shù)瘦麸。
在簡單的線性回歸中谁撼,此檢驗(yàn)并不是真正有趣的事情,因?yàn)樗皇菑?fù)制了系數(shù)表中可用的t檢驗(yàn)給出的信息滋饲。實(shí)際上厉碟,F(xiàn)檢驗(yàn)與t檢驗(yàn)的平方相同:312.1 =(17.67)^ 2。在任何具有1個自由度的模型中都是如此屠缭。
一旦我們開始在多元線性回歸中使用多個預(yù)測變量墨榄,F(xiàn)統(tǒng)計量就變得更加重要。
大的F統(tǒng)計量將對應(yīng)于統(tǒng)計上顯著的p值(p <0.05)勿她。在我們的示例中,F(xiàn)統(tǒng)計量等于312.14阵翎,產(chǎn)生的p值為1.46e-42逢并,這是非常重要的。
概要
在計算回歸模型之后郭卫,第一步是檢查至少一個預(yù)測變量是否與結(jié)果變量顯著相關(guān)砍聊。
如果一個或多個預(yù)測變量很重要,則第二步是通過檢查殘差標(biāo)準(zhǔn)誤差(RSE)贰军,R2值和F統(tǒng)計量來評估模型對數(shù)據(jù)的擬合程度玻蝌。這些指標(biāo)提供了模型的整體質(zhì)量。
- RSE:越接近零越好
- R平方:越高越好
- F統(tǒng)計:越高越好
下節(jié)內(nèi)容:R中的多元線性回歸
> 覺得有用老鐵們麻煩雙擊666~