R 多元線性回歸(擬合)

2021-09-06 09:04:12 字數 3442 閱讀 5428

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...

多元線性回歸

多元線性回歸的基本原理和基本計算過程與一元線性回歸相同,但由於自變數個數多,計算相當麻煩,一般在實際中應用時都要借助統計軟體。介紹多元線性回歸的一些基本問題。但由於各個自變數的單位可能不一樣,比如說乙個消費水平的關係式中,工資水平 受教育程度 職業 地區 家庭負擔等等因素都會影響到消費水平,而這些影...