r實現多元線性回歸,主要利用的就是lm()函式
熟悉其他統計回歸量的函式,對做回歸分析也是很有幫助的。
以下是r做多元線性回歸的幾個基本步驟:
1.讀入資料,r-studio直接有按鈕,否則就
> zsj
資料一般從excel的csv或者txt裡讀取,實現整理好以符合r的資料框的結構
2.畫相關圖選擇回歸方程的形式
可見x1與y的關係是明顯的線性的,x2也類似此處省略
3.做回歸,並檢視回歸結果
> lm.test
> summary(lm.test)
call:
lm(formula = y ~ x1 + x2, data = zsj)
residuals:
min 1q median 3q max
-0.21286 -0.05896 -0.01450 0.05556 0.30795
coefficients:
estimate std. error t value pr(>|t|)
(intercept) 0.0931750 0.0109333 8.522 5.85e-16 ***
x1 0.0109935 0.0003711 29.625 < 2e-16 ***
x2 0.0099941 0.0010459 9.555 < 2e-16 ***
---signif. codes: 0 『***』 0.001 『**』 0.01 『*』 0.05 『.』 0.1 『 』 1
residual standard error: 0.08109 on 327 degrees of freedom
multiple r-squared: 0.7953, adjusted r-squared: 0.7941
f-statistic: 635.3 on 2 and 327 df, p-value: < 2.2e-16
可見各項顯著性檢驗都是得到通過的
4.用殘差分析剔除異常點
得到的四個圖依次為:
4.1普通殘差與擬合值的殘差圖
4.2正態qq的殘差圖(若殘差是來自正態總體分布的樣本,則qq圖中的點應該在一條直線上)
4.3標準化殘差開方與擬合值的殘差圖(對於近似服從正態分佈的標準化殘差,應該有95%的樣本點落在[-2,2]的區間內。這也是判斷異常點的直觀方法)
4.4cook統計量的殘差圖(cook統計量值越大的點越可能是異常值,但具體閥值是多少較難判別)
從圖中可見,54,65,295三個樣本存在異常,需要剔除。
5.檢驗異方差
5.1gqtest,h0(誤差平方與自變數,自變數的平方和其交叉相都不相關),p值很小時拒絕h0,認為上訴公式有相關性,存在異方差
> res.test
> library(lmtest)
> gqtest(lm.test)
goldfeld-quandt test
data: lm.test
gq = 0.9353, df1 = 162, df2 = 162, p-value = 0.6647
5.2bptest,h0(同方差),p值很小時認為存在異方差
> bptest(lm.test)
studentized breusch-pagan test
data: lm.test
bp = 3.0757, df = 2, p-value = 0.2148
兩個檢驗都可以看出異方差不存在,不過為了總結所有情況這裡還是做了一下修正。。
6.修正異方差
修正的方法選擇fgls即可行廣義最小二乘
6.1修正步驟
6.1.1將y對xi求回歸,算出res--u
6.1.2計算log(u^2)
6.1.3做log(u^2)對xi的輔助回歸 log(u^2),得到擬合函式g=b0+b1x1+..+b2x2
6.1.4計算擬合權數1/h=1/exp(g),並以此做wls估計
> lm.test2
> lm.test3
> summary(lm.test3)
這裡就不再貼回歸結果了
7.檢驗多重共線性
7.1計算解釋變數相關稀疏矩陣的條件數k,k<100多重共線性程度很小,1001000嚴重
> xx
[1] 2.223986
7.2尋找共線性強的解釋變數組合
> eigen(xx)#用於發現共線性強的解釋變數組合#
$values
[1] 1.3129577 0.6870423
$vectors
[,1] [,2]
[1,] 0.7071068 -0.7071068
[2,] 0.7071068 0.7071068
8.修正多重共線性---逐步回歸法
> step(lm.test)
start: aic=-1655.03
y ~ x1 + x2
df sum of sq rss aic
2.1504 -1655.0
- x2 1 0.6005 2.7509 -1575.8
- x1 1 5.7714 7.9218 -1226.7
call:
lm(formula = y ~ x1 + x2, data = zsj)
coefficients:
(intercept) x1 x2
0.093175 0.010994 0.009994
可見x2,x1都不去掉的時候aic值最小,模型最佳。
ps2:step中可進行引數設定:direction=c("both","forward","backward")來選擇逐步回歸的方向,預設both,forward時逐漸增加解釋變兩個數,backward則相反。
**:
R語言多元線性回歸
1 根據業務經驗挑選出可能對 目標變數有影響的指標 2 將這些指針對目標變數做相關性分析cor 挑選出相關係數較大的指標進一步分析 3 檢驗這些指標與目標變數是否線性關係,一般可以plot 檢驗,如果非線性,嘗試做平方或開方等方法使之變成線性 3 將相關係數較大的指標全部作為解釋變數做多遠線性回歸l...
R語言多元線性回歸
toothpaste data.frame x1 c 0.05,0.25,0.60,0,0.25,0.20,0.15,0.05,0.15,0.15,0.20,0.10,0.40,0.45,0.35,0.30,0.50,0.50,0.40,0.05,0.05,0.10,0.20,0.10,0.50,0...
多元線性回歸
多元線性回歸的基本原理和基本計算過程與一元線性回歸相同,但由於自變數個數多,計算相當麻煩,一般在實際中應用時都要借助統計軟體。介紹多元線性回歸的一些基本問題。但由於各個自變數的單位可能不一樣,比如說乙個消費水平的關係式中,工資水平 受教育程度 職業 地區 家庭負擔等等因素都會影響到消費水平,而這些影...