回歸專題-1 | 線線性回歸基礎(chǔ)

回歸專題-1 | 線線性回歸基礎(chǔ)

導(dǎo)讀

線性回歸(又稱線性模型),通過一個或者多個預(yù)測變量(X)來預(yù)測定量結(jié)局變量(Y)[1]。
② 目標是建立一個數(shù)學(xué)公式,將y定義為x變量的函數(shù)。統(tǒng)計模型一旦建立,就可以通過對新加入的變量進行預(yù)測。
③ 回歸模型的建立,需要評估估計模型的性能。也就是說,需要知道通過回歸模型預(yù)測新加入的變量的準確性如何,準確性越高,說明該模型的構(gòu)建是成功的。

  • 評價模型預(yù)測性能的兩個常用度量值:
  1. 均方根誤差(Root Mean Square Error, RMSE),用來表示模型預(yù)測的誤差。也就是觀察值與模型預(yù)測的估計值之間的差異是多少,計算公式為:
    圖一 RMSE公式

    RMSE值越小,模型越好
  2. R的平方(也可以稱為決定系數(shù)),表示的是觀察值和預(yù)測值之間的相關(guān)系數(shù)的平方,R2值越大,模型越好

簡單線性回歸的學(xué)習(xí)流程

圖二 模型構(gòu)建步驟

公式

線性回歸的數(shù)學(xué)公式如下:


圖三 線性回歸方程
  • 如果有多個預(yù)測變量的話,公式則可以寫成 y= b0 + b1*x1 + b2*x2 + ... + bn*xn:
    • b0 是截距
    • b1,b2,..,bn是回歸權(quán)重或者說是與變量x1,x2,...xn相關(guān)的回歸系數(shù)
    • e就是誤差(也稱為殘差),y中能被回歸模型解釋的那一部分方差
  • 下面這幅圖很直觀的說明了簡單回歸模型的特點


    圖四 線性回歸圖形展示
    • 藍色線使得模型擬合最好
    • 截距和斜率(回歸權(quán)重)用綠色表示
    • 殘差表示的是每個點到擬合直線的垂直距離
  1. 可以看到,并不是每個點都落在回歸線上,有在回歸線上面或者下面的,總之,剩余殘差的平均值接近于0。剩余殘差的平方和稱為殘差平方和Residual Sum of Squares, RSS)。擬合回歸線周圍的點的平均方差叫做剩余標準誤Residual Standard Error, RSE),也用于評價擬合回歸模型的總體質(zhì)量,該值越小說明回歸線擬合的越好
  2. 因為平均誤差可以認為是等于0,所以結(jié)局變量可以近似表示為:
    y ~ b0 + b1*x
    一般來講,b0和b1一般取RSS為最小值的時候的值。也即是最小二乘法的原理,或者叫普通最小二乘
  3. 一旦b0和b1確定下來,那么就立馬執(zhí)行對回歸系數(shù)t-檢驗,即回歸系數(shù)是否顯著大于或小于0。非零的回歸系數(shù)說明預(yù)測變量與結(jié)局變量顯著相關(guān)。

加載R包

這里用到兩個R語言包

  • tidyverse用于數(shù)據(jù)處理和圖形展示
  • caret用于機器學(xué)習(xí)流程
library(tidyverse)
library(caret)
theme_set(theme_bw())

數(shù)據(jù)準備

  • 這里用到一個現(xiàn)存的數(shù)據(jù)集marketing,通過三大廣告媒體所花費的金額來預(yù)測其銷售額
  • 隨后我們將數(shù)據(jù)集隨機分為訓(xùn)練集(80%的數(shù)據(jù)用于構(gòu)建一個回歸模型)和測試集(20%的數(shù)據(jù)用來評估模型的性能)。為了獲得可重復(fù)的結(jié)果,需設(shè)定種子
# Load the data,加載數(shù)據(jù)
data("marketing", package = "datarium")
# Inspect the data,隨機查看數(shù)據(jù)
sample_n(marketing, 3)
圖五 數(shù)據(jù)概略
# Split the data into training and test set,拆分數(shù)據(jù)
set.seed(123) # 設(shè)定種子以獲得可重復(fù)結(jié)果
training.samples <- marketing$sales %>%
  createDataPartition(p = 0.8, list = FALSE)
train.data  <- marketing[training.samples, ]
test.data <- marketing[-training.samples, ]

計算線性回歸

  • R語言里的lm()函數(shù)用于計算線性回歸模型

快速構(gòu)建線性回歸模型

# Build the model
model <- lm(sales ~., data = train.data) # 用訓(xùn)練集數(shù)據(jù)構(gòu)建模型
# Summarize the model
summary(model)
# Make predictions #
predictions <- model %>% predict(test.data) # 用測試集數(shù)據(jù)預(yù)測模型的準確性
# Model performance # 通過上述兩個指標來說明模型的綜合性能
# (a) Prediction error, RMSE
RMSE(predictions, test.data$sales)
# (b) R-square
R2(predictions, test.data$sales)

簡單線性回歸

  • 簡單線性回歸用于單個預(yù)測變量來預(yù)測連續(xù)的結(jié)局變量,這里先用youtube這個變量來構(gòu)建簡單線性回歸模型
model <- lm(sales ~ youtube, data = train.data)
summary(model)$coef
  • 結(jié)果如下:


    圖六 簡單線性回歸結(jié)果
  • 結(jié)果解釋:
  1. 結(jié)果顯示了回歸系數(shù)的估計值(也就是Estimate那一列)以及他們的顯著性水平(Pr|t|那一列)??梢钥吹浇鼐郻0為8.38,youtube的回歸系數(shù)為0.046
  2. 如此,回歸方程就可以表示為:scales = 8.38 + 0.046*youtube,通過這個等式,那么就可以預(yù)測新加入的youtube變量

多重線性回歸

  • 多重線性回歸是簡單線性回歸的拓展,不同的地方就是預(yù)測變量可以是多個
  • 比如本例中的三個預(yù)測變量與結(jié)局變量的關(guān)系則可以寫成:y = b0 + b1x1 + b2x2 + b3*x3
  • 這里的回歸系數(shù)代表每個預(yù)測變量與結(jié)局變量的相關(guān)。bj表示固定其他預(yù)測變量后,xj每增加一個單位,y變化的平均效應(yīng)
model <- lm(sales ~ youtube + facebook + newspaper, 
            data = train.data)
summary(model)$coef
  • 值得注意的是,當預(yù)測變量較多時,回歸方程可以簡寫為y ~ .,這樣就是包括全部的變量,如下所示
model <- lm(sales ~., data = train.data)
summary(model)$coef
  • 結(jié)果如下


    圖七 多重線性回歸結(jié)果
  • 結(jié)果解釋:

如上結(jié)果所示,回歸系數(shù)表展示了beta回歸系數(shù)估計值以及顯著性p值

  1. 估計值(Estimate):截距b0,以及其它與預(yù)測變量相關(guān)的beta回歸系數(shù)估計值
  2. 回歸系數(shù)標準誤(Std.Error):回歸系數(shù)估計值的標準誤,表示回歸系數(shù)的準確性。標準誤越大,回歸系數(shù)的可信度越小
  3. t統(tǒng)計量(t value):即t-統(tǒng)計量,是用回歸估計值除以回歸系數(shù)標準誤得到的比值
  4. P值(Pr(>|t|)):對應(yīng)于t-統(tǒng)計量的P值,P值越小,估計值越有意義
  5. 如果有不顯著的預(yù)測變量,比如這里的newspaper,說明當固定其它兩個變量之后,newspaper的變化不會顯著的影響結(jié)局變量,也就是銷售額。

模型的準確性診斷

一旦模型被確定下來,至少有一個預(yù)測變量與結(jié)局變量顯著相關(guān),接下里就應(yīng)該對模型擬合數(shù)據(jù)的程度進行診斷。這個過程也叫擬合優(yōu)度goodness-of-fit),線性回歸擬合的質(zhì)量可以用下面三個統(tǒng)計量來表示:

  1. 剩余標準誤
  2. R平方值,決定系數(shù)(R2)以及校正的R2
  3. F-統(tǒng)計量
  • 剩余標準誤
    RSE在前面已經(jīng)描述過,RSE越小證明模型擬合的越好。另外一個就是將RSE除以結(jié)局變量的平均值可以得到另外一個度量值——估計錯誤率(prediction error rate)
  • R2和adjust R2
    R2的取值范圍在(0,1),它的含義表示結(jié)局變量的變化可以被預(yù)測變量解釋的比例。在簡單線性回歸中,R2就是結(jié)局變量和預(yù)測變量之間的皮爾遜相關(guān)系數(shù)的平方。而在多重線性回歸中,R2則表示結(jié)局變量和預(yù)測變量之間的相關(guān)系數(shù)。R2值越大,說明模型越好。這里引入一個adjust R2的概念,因為在多種線性回歸中,有時候增加變量而使R2值升高是虛假的,所以R2的提高要考慮模型中添加的預(yù)測變量的個數(shù)
  • F-統(tǒng)計量
    F-統(tǒng)計量給出了模型的總體意義,評估的是模型中是否至少有一個不為0的回歸系數(shù),在簡單線性回歸中,F(xiàn)-統(tǒng)計量就是重復(fù)了t檢驗的結(jié)果。而在多元線性回歸中則顯得非常重要,F(xiàn)-統(tǒng)計量越大,往往對應(yīng)著顯著性的p值

預(yù)測

通過測試數(shù)據(jù)集對模型的性能進行簡單的評估,主要過程如下:

  1. 對新加入的預(yù)測變量進行結(jié)局變量的預(yù)測
  2. 通過計算RMSE的值和R2值來評估模型的性能
# Make predictions
predictions <- model %>% predict(test.data)
# Model performance
# (a) Compute the prediction error, RMSE
RMSE(predictions, test.data$sales)

RMSE結(jié)果為: ## [1] 1.58

# (b) Compute R-square
R2(predictions, test.data$sales)

R2值為: ## [1] 0.938

上面的結(jié)果可知,R2的值是0.93,說明觀察值和預(yù)測值之間的相關(guān)性非常高,說明線性回歸擬合度很好。估計誤差值RMSE為1.58,則錯誤率為1.58/mean(test.data$scales)=1.58/17=9.2%,這個結(jié)果說明模型擬合的比較好

討論

這篇文章主要對線性回歸的基礎(chǔ)進行了描述,并且通過實例演示如何去構(gòu)建一個線性回歸模型以及通過什么指標去衡量模型的性能,但是需要注意的是:

  • 線性回歸是基于預(yù)測變量和結(jié)局變量之間是一種線性關(guān)系的假設(shè),這可以通過簡單的散點圖作圖看出,比如下面的方法就畫了youtube因變量和響應(yīng)變量之間的散點圖
ggplot(marketing, aes(x = youtube, y = sales)) +
  geom_point() +
  stat_smooth()
圖八 線性散點圖

參考

[1] James et al. 2014,P. Bruce and Bruce (2017)
[2] http://www.sthda.com/english/articles/40-regression-analysis/165-linear-regression-essentials-in-r/

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容