回歸分析 | R語言回歸算法、模型診斷


一、回歸算法

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) 

 均不存在多重共線性的問題

 

 

 

如果存在多重共線性,解決方法可以參考 簡化模型

即去掉存在共線的自變量(具體根據業務)  

 

 

僅用於學習


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM