一、回歸算法
1.1 一元線性回歸
最小二乘法:
通過使因變量的真實值和估計值之間的離差平方和達到最小來求 β0 和 β1
1.2 多元回歸(今天先略過)
通過矩陣來求解最小二乘法
二、回歸算法相關函數
使用 R 自帶的 women 數據集
一元線性回歸
# 模型創建 fit1 = lm(weight~.,data=women)
# 查看擬合結果 plot(women) abline(fit1)
發現點有些彎曲,可能存在二次關系
去除截距項的方法
# 除去截距項 fit2 = lm(weight~-1+height,data=women)
一元二次回歸
# 模型創建 fit3 = lm(weight~.+I(height^2),data=women)
使用 summary 查看回歸模型的信息
summary(fit3)
Tip:
R方:(決定系數、擬合優度)擬合出來的結果解釋了多少數據點中的信息(代表擬合程度,越接近1越好):可以用來評估模型擬合的好不好
F值:所有的參數是否為零(是否接受0假設),越小越拒絕0假設,檢驗模型整體指標的值
模型診斷
par(mfrow=c(2,2)) # par設置圖片格式的函數(2*2的版式) plot(fit3)
Tip:
A :檢查整體的擬合情況
B :點越呈對角線分布,說明數據越呈正態分布
C :曲線波動越明顯,越可能異方差
D :落在虛線外的點為異常值、離群值
回歸的預測函數
lm.pred = predict(fit3, women)
如需預測區間:
interval :給出相應的預測區間
level:置信水平
lm.pred = predict(fit3, women, interval="prediction", level=0.95) lm.pred
三、模型選擇
指標:AIC信息准則即Akaike information criterion,又稱赤池信息量准則。
AIC = 2k - 2ln(L)
方法:逐步回歸(step)
AIC 可以權衡所估計模型的復雜度和此模型擬合數據的優良性。增加自由參數的數目提高擬合的優良性,為了盡量避免出現過度擬合(Overfitting)的情況。優先考慮AIC值最小的模型。
k:自變量的個數,
L 最大似然函數:越大,模型效果越好
# 導入數據集 state = read.csv("data_files/state.csv") head(state) # 設置行第一列為state的rownames rownames(state) = state[,1] # 刪除第一列數據 state = state[,-1] fit4 = lm(Murder~.,data= state) par(mfrow=c(2,2)) plot(fit4) summary(fit4) # 通過pairs查看因變量和自變量的關系(散點圖) pairs(state) fit5 = lm(Murder~.+ I(Income^2),data= state) summary(fit5) fit6 = lm(Murder~.+ I(Income^2)-Frost,data= state) summary(fit6) fit7 = lm(Murder~.+ I(Income^2)-Frost-Income,data= state) summary(fit7) fit8 = lm(Murder~.-Frost-Income,data= state) summary(fit8) fit9 = lm(Murder~.+ I(Income^2)+ I(Frost^2),data= state) summary(fit9) # 以默認的backword逐步回歸(復雜到簡單) step(fit9)
也可以通過直接比較AIC的方法,找到AIC最小的模型
AIC(fit4,fit5,fit6,fit7,fit8,fit9)
四、回歸診斷
好的模型具備
無偏性:誤差比較小
有效性:方差小
一致性:在大樣本也會呈現同樣的規律
不好的模型:
異方差
多重共線性
序列相關(自相關)
4.1 自相關性檢驗
DW檢驗:檢驗自相關性,
0 假設:自相關系數為0(不自相關)
備擇假設:自相關系數比零大(自相關)
是不自相關,P值越大,越認為不相關
install.packages("car") install.packages("lmtest") library("car") library("lmtest") # dw 檢驗 dwtest(fit4) # 杜賓沃森檢驗 durbinWatsonTest(fit4)
P值很大,接收零假設,不存在自相關(而且DW值也很接近2)
4.1 異方差檢驗
零假設:同方差
備擇假設:異方差
# 異方差 bptest(fit4) # 0 假設是同方差 ncvTest(fit4) # 0 假設是方差不變
(該模型未通過同方差檢驗)
4.3 多重共線性
vif :方差膨脹因子,0-10 說明不存在多重共線性
vif(fit4)
均不存在多重共線性的問題
如果存在多重共線性,解決方法可以參考 簡化模型
即去掉存在共線的自變量(具體根據業務)
僅用於學習