基礎鋪墊
多重線性回歸(Multiple Linear Regression)
研究一個因變量與多個自變量間線性關系的方法
在實際工作中,因變量的變化往往受幾個重要因素的影響,此時就需要用2個或2個以上的影響因素作為自變量來解釋因變量的變化,這就是多重線性回歸;
多重線性回歸模型
1.模型
2.模型關鍵詞解析
偏回歸系數
- 多重線性模型中包含多個自變量,它們同時對因變量y發生作用,如果要考察一個自變量對因變量y的影響,就必須假設其他自變量保持不變;因此,多重線性模型中的回歸系數稱為偏回歸系數,偏回歸系數β_1是指在其他自變量保持不變的情況下,自變量x_1每變動一個單位,引起的因變量y的平均變化;β_2到β_n依次類推;
回顧-回歸分析步驟
根據預測目標,確定自變量和因變量
繪制散點圖,確定回歸模型類型
估計模型參數,建立回歸模型
對回歸模型進行檢驗
利用回歸模型進行預測
案例實操-金融場景
下面,jacky通過一個金融場景的案例,開始我們的分享:某金融公司打算新開一類金融產品,現有9個金融產品的數據,包括用戶購買金融產品的綜合年化利率,以及公司收取用戶的佣金(手續費);如下表所示,產品利率為11%,佣金為50,我們需要預測這款金融產品的銷售額
產品編號 | 百分比利率 | 抽取用戶佣金 | 金融產品銷售額 |
---|---|---|---|
1 | 9 | 75 | 500 |
2 | 7 | 30 | 370 |
3 | 7 | 20 | 375 |
4 | 5 | 30 | 270 |
5 | 6 | 0 | 360 |
6 | 7 | 21 | 379 |
7 | 8 | 50 | 440 |
8 | 6 | 20 | 300 |
9 | 9 | 60 | 510 |
10 | 11 | 50 | ? |
import pandas
data = pandas.read_csv( 'file:///Users/apple/Desktop/jacky_1.csv',encoding='GBK' )
第一步 確定變量
根據預測目標,確定自變量和因變量
因變量:銷售額
自變量:利率、佣金
第二步 確定類型
繪制散點圖,確定回歸模型類型
- 從散點圖和相關系數結果表可以看出,產品利率和銷售額是強正相關;佣金與銷售額是強負相關;因此,我們可以使用多重線性模型來解決這個問題;
我們對自變量和因變量繪制散點圖,因為需要繪制多個變量兩兩之間的散點圖,在這里介紹一個更先進的繪圖方法scatter_matrix:我們把自變量和因變量從data中選取出來,然后設置好對應的參數。第一個是圖片的大小,如果變量太多,我們就要把圖片的尺寸設置的足夠大才能夠展示出來;第二個參數diagonal是變量與變量本身的繪圖方式,我們選擇kde,是繪制直方圖,這個參數是什么意思,我們執行代碼就知道了,代碼如下:
import matplotlib
from pandas.tools.plotting import scatter_matrix
font = {
'family':'SimHei'
}
matplotlib.rc('font',**font)
scatter_matrix(
data[["百分比利率","抽取用戶佣金","金融產品銷售額"],
figsize =(10,10),diagonal = 'kid'
)
data[["百分比利率","抽取用戶佣金","金融產品銷售額"]].corr()
x = data[["百分比利率","抽取用戶佣金"]]
y = data[["金融產品銷售額"]]
第三步 建立模型
估計模型參數,建立回歸模型
- 多重線性回歸模型參數的估計方法與簡單線性回歸模型參數的估計方法是相同的:都是采用最小二乘法進行估計(對最小二乘法更詳細的解析,請參見Python回歸分析五步曲(一)—簡單線性回歸)
#建模
from sklearn.linear_model import LinearRegression
lrModel = LinearRegression()
#訓練模型
lrModel.fit(x,y)
第四步 模型檢驗
- 對回歸模型進行檢驗
判定系數=相關系數R2=ESSTSS=1−RSSTSS
- jacky解析:擬合完方程的參數之后,我們就要對回歸模型進行檢驗,在簡單線性回歸的分享中,我們用判定系數來驗證方程的擬合程度,而在多重線性回歸中,如果在模型中增加一個自變量,模型中R平方往往也會相應增加,這就會給我們一個錯覺:要使得模型擬合的好,只要增加自變量即可。因此,使用判定系數R平方來驗證方程的擬合程度是不夠科學的,需要自變量個數進行修正和調整,也就是調整判定系數;以上,我們只要理解原理即可,公式記不住也不要緊,知道多重線性模型需要用調整判定系數來判定方程的擬合程度,會用Python看結果就可以了。
第五步 模型預測
利用回歸模型進行預測
- 根據已有的自變量數據,預測需要的因變量對應的結果
#預測
lrModel.predict([11,50])
#查看參數
lrModel.coef_
#查看截距
lrModel.intercept_
總結-完整代碼
#---author:朱元祿---
import pandas
data = pandas.read_csv(
'file:///Users/apple/Desktop/jacky_1.csv',encoding='GBK'
)
import matplotlib
from pandas.tools.plotting import scatter_matrix
font = {
'family':'SimHei'
}
matplotlib.rc('font',**font)
scatter_matrix(
data[["百分比利率","抽取用戶佣金","金融產品銷售額"],
figsize =(10,10),diagonal = 'kid'
)
data[["百分比利率","抽取用戶佣金","金融產品銷售額"]].corr()
x = data[["百分比利率","抽取用戶佣金"]]
y = data[["金融產品銷售額"]]
#建模
from sklearn.linear_model import LinearRegression
lrModel = LinearRegression()
#訓練模型
lrModel.fit(x,y)
#預測
lrModel.predict([11,50])
#查看參數
lrModel.coef_
#查看截距
lrModel.intercept_