多元線性迴歸預測:餐館營業額與多因素實戰

多元線性迴歸預測:餐館營業額與多因素實戰

歡迎關注天善智能,我們是專注於商業智能BI,人工智能AI,大數據分析與挖掘領域的垂直社區,學習,問答、求職一站式搞定!

對商業智能BI、大數據分析挖掘、機器學習,python,R等數據領域感興趣的同學加微信:tstoutiao,邀請你進入數據愛好者交流群,數據愛好者們都在這兒。

作者:herain R語言中文社區專欄作者

知乎ID:https://www.zhihu.com/people/herain-14

前言

上篇

我們用一元線性迴歸預測銷售收入與廣告支出實戰,但世界是複雜的,有因有果,因果迭交,我們常說事或物是多種因素共同作用的結果,今天我們從統計學角度,去分析多種因素是怎麼樣作用一種事物,產生不一樣的結果。綜述

以餐館營業額作為果(y= 日均營業額/萬元),周邊居民人數(x1 /萬人),用餐平均支出(x2 / 元/人),周邊居民月平均收入(x3/ 元),周邊餐館數(x4/ 個),距市中心距離(x5/ km)作為因素,來探索因與果之間的迴歸模型,發現規律,改善餐館營銷方式,提高餐館的營業額。

分析步驟

餐館營業額與多因素的迴歸模型分析步驟:

1.確定所關注的因變量y 和影響因變量的k個自變量

2.假定因變量y 與 k 個自變量之間為線性關係,並建立線性關係模型

3.對模型進行估計和檢驗

4.判別模型中是否存在多重共線性,如果存在,進行處理

5.利用迴歸方程進行預測

6.對迴歸模型進行診斷

1 確定因變量y和影響因變量的k個自變量

1.1 確定因變量和自變量

y:餐館營業額作為果(y= 日均營業額/萬元)

k個自變量為:

  • 周邊居民人數(x1 /萬人)
  • 用餐平均支出(x2 / 元/人)
  • 周邊居民月平均收入(x3/ 元)
  • 周邊餐館數(x4/ 個)
  • 距市中心距離(x5/ km)

1.2 分析的數據:

 index y x1 x2 x3 x4 x5
1 1 53.2 163.0 168.6 6004 5 6.5
2 2 18.5 14.5 22.5 209 11 16.0
3 3 11.3 88.2 109.4 1919 10 18.2
4 4 84.7 151.6 277.0 7287 7 10.0
5 5 7.3 79.1 17.4 5311 15 17.5
6 6 17.9 60.4 93.0 6109 8 3.6
7 7 2.5 53.2 21.5 4057 17 18.5
8 8 27.3 108.5 114.5 4161 3 4.0
9 9 5.9 48.7 61.3 2166 10 11.6
10 10 23.9 142.8 129.8 11125 9 14.2
11 11 69.4 214.7 159.4 13937 2 2.5
12 12 20.6 65.6 91.0 4000 18 12.0
13 13 1.9 13.2 6.1 2841 14 12.8
14 14 3.0 60.9 60.3 1273 26 7.8
15 15 7.3 21.2 51.1 2404 34 2.7
16 16 46.2 114.3 73.6 6109 12 3.2
17 17 78.8 299.5 171.7 15571 4 7.6
18 18 11.1 78.9 38.8 4228 11 11.0
19 19 8.6 90.0 105.3 3772 15 28.4
20 20 48.9 160.3 161.5 6451 5 6.2
21 21 22.1 84.0 122.6 3275 9 10.8
22 22 11.1 78.9 38.8 4228 10 33.7
23 23 8.6 90.0 105.3 3772 14 16.5
24 24 48.9 160.3 161.5 6451 6 9.3
25 25 22.1 84.0 122.6 3275 10 11.6

2 建立線性關係模型

公式:

多元線性迴歸預測:餐館營業額與多因素實戰

2.1 繪製多個變量的相關圖:

> library(corrgram)
> corrgram(example10_1[2:7], order=T, lower.panel=panel.shade,upper.panel=panel.pie,text=panel.txt)
多元線性迴歸預測:餐館營業額與多因素實戰

6個變量之間的相關圖(相關係數矩陣圖)

解讀相關係數矩陣圖,請參考搜索,獲取瞭解。藍色表示正相關,紅色表示負相關,對應顏色的餅圖表示相關的度。

2.2 建立迴歸模型(檢測報告,模型進行估計和檢驗用到了如下檢測結果):

檢測報告:

#迴歸模型擬合
> fit1 > summary(fit1)
Call:
lm(formula = y ~ x1 + x2 + x3 + x4 + x5, data = example10_1)
Residuals:
Min 1Q Median 3Q Max
-16.7204 -6.0600 0.7152 3.2144 21.4805
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 4.2604768 10.4679833 0.407 0.68856
x1 0.1273254 0.0959790 1.327 0.20037
x2 0.1605660 0.0556834 2.884 0.00952 **
x3 0.0007636 0.0013556 0.563 0.57982
x4 -0.3331990 0.3986248 -0.836 0.41362
x5 -0.5746462 0.3087506 -1.861 0.07826 .
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
Residual standard error: 10.65 on 19 degrees of freedom
Multiple R-squared: 0.8518, Adjusted R-squared: 0.8128
F-statistic: 21.84 on 5 and 19 DF, p-value: 2.835e-07
#計算迴歸係數的置信區間
> confint(fit1, level=0.95)
2.5 % 97.5 %
(Intercept) -17.649264072 26.170217667
x1 -0.073561002 0.328211809
x2 0.044019355 0.277112598
x3 -0.002073719 0.003600932
x4 -1.167530271 0.501132297
x5 -1.220868586 0.071576251
#輸出方差分析表
> anova(fit1)
Analysis of Variance Table
Response: y
Df Sum Sq Mean Sq F value Pr(>F)
x1 1 10508.9 10508.9 92.7389 9.625e-09 ***
x2 1 1347.1 1347.1 11.8878 0.002696 **
x3 1 85.4 85.4 0.7539 0.396074

x4 1 40.5 40.5 0.3573 0.557082
x5 1 392.5 392.5 3.4641 0.078262 .
Residuals 19 2153.0 113.3
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

從檢驗結果可以看出 x1,x2,x5 對 y 的總誤差平方和貢獻顯著。

2.3 迴歸模型方程式:

計算:y = 4.2604768 + 0.1273254*x1 + 0.1605660*x2 + 0.0007636x3 -0.3331990 x4 -0.5746462 * x5

3 對模型進行估計和檢驗

3.1 擬合優度檢驗

多重決定係數是多元線性迴歸中迴歸平方和SSR 佔 總平方和SST的比例,計算公式為:

多元線性迴歸預測:餐館營業額與多因素實戰

它表示因變量y的總誤差中被多少個自變量共同解釋的比例。

為避免增加自變量而高估多重決定係數,統計學家使用樣本量n和自變量的個數k 去調整 多重決定係數:

多元線性迴歸預測:餐館營業額與多因素實戰

計算知:多重決定係數為:0.8518,說明日均營業額時與周邊居民人數,用餐平均支出,周邊居民月平均收入,周邊餐館數和距離市中心這5個自變量模型的擬合度較高。

Multiple R-squared: 0.8518,Adjusted R-squared: 0.8128

3.2 估計標準誤:

標準誤 就是指 殘差的標準差,計算公式:

多元線性迴歸預測:餐館營業額與多因素實戰

計算知:估計的標準誤差為:10.65,根據建立的多元線性迴歸方程,周邊居民人數,用餐平均支出,周邊居民月平均收入,周邊餐館數和距離市中心這5個自變量預測日均營業額時,平均的預測誤差為10.65萬元

Residual standard error: 10.65 on 19 degrees of freedom

3.3 模型的顯著性檢驗

包含如下檢驗:線性關係檢驗,迴歸係數檢驗。請參考 (2.2處:檢測報告)詮釋如下兩種假設,此次省略具體說明。

多元線性迴歸預測:餐館營業額與多因素實戰

多元線性迴歸預測:餐館營業額與多因素實戰

3.4 模型診斷

繪製殘差圖診斷模型

> par(mfrow=c(1,2), mai=c(0.8,0.8,0.4,0.1),cex=0.8,cex.main=0.7)
> plot(fit1,which=1)
> plot(fit1,which=2)
多元線性迴歸預測:餐館營業額與多因素實戰

殘差圖

在圖中發現點2,4,16具有較大殘差,殘差的正態性存在問題(可以考慮重建模型,或者剔除較大殘差值),如下我們剔除點 2,4 重新建立迴歸模型:

#再次繪製殘差圖
> par(mfrow=c(1,2), mai=c(0.8,0.8,0.4,0.1),cex=0.8,cex.main=0.7)
> plot(newfit1,which=1)
> plot(newfit1,which=2)
多元線性迴歸預測:餐館營業額與多因素實戰

去掉點2,4的殘差圖4 判別模型中是否存在多重共線性

4.1 判別的重要性

變量之間的高度相關性,造成迴歸結果的混亂。多重共性性可能對參數估計值的正負號產生影響。

4.2 識別共線性和處理

#1,自變量之間的相關係數及其檢驗
> library(psych)
> corr.test(example10_1[3:7], use="complete")
Call:corr.test(x = example10_1[3:7], use = "complete")
Correlation matrix
x1x2x3x4x5
x1 1.00 0.74 0.88 -0.62 -0.28
x2 0.74 1.00 0.55 -0.54 -0.32
x3 0.88 0.55 1.00 -0.52 -0.29
x4 -0.62 -0.54 -0.52 1.00 0.10
x5 -0.28 -0.32 -0.29 0.10 1.00
Sample Size
[1] 25
Probability values (Entries above the diagonal are adjusted for multiple tests.)
x1 x2 x3 x4 x5
x1 0.00 0.00 0.00 0.01 0.47
x2 0.00 0.00 0.03 0.03 0.46
x3 0.00 0.00 0.00 0.04 0.47
x4 0.00 0.01 0.01 0.00 0.65
x5 0.18 0.12 0.16 0.65 0.00
To see confidence intervals of the correlations, print with the short=FALSE option
#2,考察迴歸係數的顯著性
#3,分析迴歸係數的正負號
#4,用容忍度和方差膨脹因子(VIF),VIF 大於10 存在嚴重的共線性:
> library(car)
載入需要的程輯包:carData
載入程輯包:‘car’
The following object is masked from ‘package:psych’:logit
> library(carData)
> vif(fit1)
x1 x2 x3 x4 x5
8.233159 2.629940 5.184365 1.702361 1.174053
> 1/vif(fit1)
x1x2x3x4x5
0.1214601 0.3802368 0.1928877 0.5874195 0.8517500
>

如上分析數據可知,不存在嚴重的共線性問題

4.3 變量的選擇與逐步迴歸

建立模型之前就有選擇的確定進入模型的自變量,也可以避免多重共線性問題,變量的選擇方法主要有 向前選擇,向後剔除,逐步迴歸 等。

逐步迴歸以 赤池信息準則AIC為選擇標準,選擇AIC最小的變量建立模型,計算公式為:

多元線性迴歸預測:餐館營業額與多因素實戰

式中,n為樣本量;p為模型中參數的個數(包括常數項)

#對模型fit1進行逐步迴歸
> fit2 Start: AIC=123.39
y ~ x1 + x2 + x3 + x4 + x5
Df Sum of Sq RSS AIC
- x3 1 35.96 2189.0 121.81
- x4 1 79.17 2232.2 122.30
<none> 2153.0 123.39
- x1 1 199.42 2352.4 123.61
- x5 1 392.54 2545.6 125.58
- x2 1 942.22 3095.2 130.47
Step: AIC=121.81
y ~ x1 + x2 + x4 + x5
Df Sum of Sq RSS AIC
- x4 1 78.22 2267.2 120.69
<none> 2189.0 121.81
- x5 1 445.69 2634.7 124.44
- x2 1 925.88 3114.9 128.63
- x1 1 1133.27 3322.3 130.24
Step: AIC=120.69
y ~ x1 + x2 + x5
Df Sum of Sq RSS AIC
<none> 2267.2 120.69
- x5 1 404.28 2671.5 122.79
- x2 1 1050.90 3318.1 128.21
- x1 1 1661.83 3929.0 132.43
>
> fit2 > summary(fit2)
Call:
lm(formula = y ~ x1 + x2 + x5, data = example10_1)
Residuals:
Min 1Q Median 3Q Max
-14.027 -5.361 -1.560 2.304 23.001
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) -1.68928 6.25242 -0.270 0.78966
x1 0.19022 0.04848 3.923 0.00078 ***
x2 0.15763 0.05052 3.120 0.00518 **
x5 -0.56979 0.29445 -1.935 0.06656 .
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
Residual standard error: 10.39 on 21 degrees of freedom
Multiple R-squared: 0.8439, Adjusted R-squared: 0.8216
F-statistic: 37.85 on 3 and 21 DF, p-value: 1.187e-08

#逐步迴歸的方差分析
> anova(fit2)
Analysis of Variance Table
Response: y
Df Sum Sq Mean Sq F value Pr(>F)
x1 1 10508.9 10508.9 97.3392 2.452e-09 ***
x2 1 1347.1 1347.1 12.4775 0.001976 **
x5 1 404.3 404.3 3.7447 0.066558 .
Residuals 21 2267.2 108.0
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
/<none>/<none>/<none>

根據R的逐步迴歸結果,得到最終的估計方程:

y = -1.68928 + 0.19022 * x1 + 0.15763 * x2 - 0.56979 * x3

> par(mfcol=c(1,2),cex=0.7)
> plot(fit2, which=1)
> plot(fit2,which=2)
多元線性迴歸預測:餐館營業額與多因素實戰

逐步迴歸模型的診斷圖

4.4 多模型的比較

完全模型,簡化模型

#模型方差對比
> anova(fit1, fit2)
Analysis of Variance Table
Model 1: y ~ x1 + x2 + x3 + x4 + x5
Model 2: y ~ x1 + x2 + x5
Res.Df RSS Df Sum of Sq F Pr(>F)
1 19 2153.0
2 21 2267.2 -2 -114.17 0.5038 0.6121
#機器的交叉驗證
#五折交叉驗證
#AIC對比
> AIC(fit1, fit2)
df AIC
fit1 7 196.3408
fit2 5 193.6325

對比數據,得知 fit2 模型的擬合的更好。

5 利用迴歸方程進行預測

基於多點的點估計,求出區間估計(均值的區間估計,個別值的預測區間)

#計算置信區間和預測區間
> x> pre> res> zre> con_int> pre_int> mysummary置信下限=con_int[,2], 置信上限=con_int[,3], 預測下限=pre_int[,2], 預測上限=pre_int[,3])

> round(mysummary,3)
日均營業額 點預測值殘差 標準化殘差 置信下限 置信上限 預測下限 預測上限153.2 52.189 1.011 0.102 45.457 58.921 29.557 74.822
218.5 -4.501 23.001 2.359 -11.9692.967 -27.363 18.361
311.3 21.963 -10.663 -1.072 15.685 28.240 -0.539 44.464
484.7 65.114 19.586 2.766 49.300 80.928 38.337 91.891
5 7.36.128 1.172 0.122 -2.283 14.540 -17.059 29.316
617.9 22.408 -4.508 -0.466 14.581 30.235 -0.574 45.390
7 2.51.278 1.222 0.125 -6.1138.670 -21.559 24.116
827.3 34.719 -7.419 -0.747 28.400 41.038 12.206 57.232
9 5.9 10.628 -4.728 -0.4724.904 16.351 -11.726 32.981
10 23.9 37.843 -13.943 -1.390 32.193 43.493 15.509 60.178
11 69.4 62.852 6.548 0.709 52.939 72.766 39.079 86.626
12 20.6 18.296 2.304 0.229 13.036 23.556 -3.943 40.535
131.9 -5.510 7.410 0.771 -13.6942.674 -28.616 17.596
143.0 14.956 -11.956 -1.2028.687 21.224 -7.543 37.455
157.38.860 -1.560 -0.169 -1.050 18.770 -14.913 32.632
16 46.2 29.831 16.369 1.699 21.745 37.9176.759 52.903
17 78.8 78.016 0.784 0.112 62.105 93.927 51.182 104.850
18 11.1 13.167 -2.067 -0.2096.420 19.915 -9.470 35.805
198.6 15.847 -7.247 -0.8154.670 27.024 -8.481 40.175
20 48.9 50.727 -1.827 -0.184 44.205 57.250 28.156 73.299
21 22.1 27.461 -5.361 -0.536 21.671 33.2515.090 49.831
22 11.10.233 10.867 1.354 -13.486 13.953 -25.362 25.829
238.6 22.627 -14.027 -1.395 17.181 28.0730.344 44.911
24 48.9 48.961 -0.061 -0.006 42.722 55.200 26.470 71.452
25 22.1 27.005 -4.905 -0.490 21.220 32.7904.636 49.374
#求 x1=50, x2=100, x5=10 時的日均營業額的點預測值,置信區間和預測區間(新值預測)
> x0> predict(fit2, x0)
1
17.88685
> predict(fit2,x0, interval="confidence", level=0.95)
fit lwr upr
1 17.88685 10.98784 24.78585
> predict(fit2,x0, interval="prediction", level=0.95)
fit lwr upr
1 17.88685 -4.795935 40.56963
>

6 啞變量回歸

代碼化的類別變量成為啞變量或者虛擬變量,在迴歸模型中使用啞變量時稱為啞變量回歸或者虛擬變量回歸。

寫在最後:

至此,多元線性迴歸預測也完成了,歡迎大家指正,請各位多多轉發,給我好看。

多元線性迴歸預測:餐館營業額與多因素實戰

多元線性迴歸預測:餐館營業額與多因素實戰

回覆 爬蟲 爬蟲三大案例實戰

回覆 Python 1小時破冰入門

回覆 數據挖掘 R語言入門及數據挖掘

回覆 人工智能 三個月入門人工智能

回覆 數據分析師 數據分析師成長之路

回覆 機器學習 機器學習的商業應用

回覆 數據科學 數據科學實戰

回覆 常用算法 常用數據挖掘算法

多元線性迴歸預測:餐館營業額與多因素實戰

多元線性迴歸預測:餐館營業額與多因素實戰

愛我請給我好看!

多元線性迴歸預測:餐館營業額與多因素實戰


分享到:


相關文章: