国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

線性回歸分析的R方法

2020-11-05 11:12:36
關(guān)鍵詞:回歸方程方差殘差

王 曉 剛

(揚(yáng)州職業(yè)大學(xué), 江蘇 揚(yáng)州 225009)

R語言是一種廣泛用于統(tǒng)計分析與數(shù)據(jù)挖掘的、開源而且完全免費(fèi)的語言,用戶可以通過R的網(wǎng)站得到最新版本的R和來自全世界愛好者貢獻(xiàn)的近萬個用于不同計算的R包及相關(guān)使用說明。R操作界面是字符界面,啟動后出現(xiàn)R的命令提示符是“>”,用戶可以在這里與R交互對話,也可事先建立程序的腳本文件,事后通過菜單“文件運(yùn)行腳本文件…”運(yùn)行。雖然在R社區(qū)中可以查找到R的幾乎所有操作指南,但是信息分散且不成體系。因此,文章針對線性回歸分析符合基本假設(shè)的情況,借助具體例題,總結(jié)在R環(huán)境下的回歸分析過程。

1 R的基本數(shù)據(jù)類型與基本運(yùn)算

有兩項操作首先值得一提:一是在菜單“文件改變工作目錄…”下改變R的工作目錄,這樣對工作目錄文件之下的文件進(jìn)行操作時可以不需要指定文件路徑;二是可以在菜單“程序包安裝程序包…”下安裝必要的程序包[1]。

1.1 R的基本運(yùn)算

在回歸分析中,簡單的四則運(yùn)算及開方、指數(shù)及對數(shù)等運(yùn)算是必須的,下面列舉部分操作示例。

>2+3

#求2與3的和;

>2^10

#求2的10次方;

>sqrt(1024)

#求1024的算術(shù)平方根;

>exp(2)

#求冪e2;

>log(10)

#求ln10。

其中“>”是命令提示符號,“#”是左側(cè)命令的操作或功能說明。

1.2 向量及有關(guān)運(yùn)算

向量是R中樣本數(shù)據(jù)較為常見的組織方式,生成向量的命令函數(shù)是c(),“<-”表示賦值,也可用等號“=”表示賦值。以下給出的是向量的生成、向量的常見運(yùn)算及基本統(tǒng)計指標(biāo)的計算示例如下:

>x<-c(2.3, 3,5, 7.0, 12, 21.7, 32)

#通過函數(shù)c()建立向量并賦值給變量x;

>z=x+y

#向量x與y對應(yīng)元素相加賦給變量z;

> x*y

#向量x與y元素對應(yīng)相乘;

>2*x

#向量x每一元素與2相乘;

>x^2

#向量x每一元素平方;

>min(x)

#求x的最小值;

>mean(x)

#求x的算術(shù)均值;

>sd(x)

#求x的標(biāo)準(zhǔn)差;

>a=rbind(x,y)

#以x,y元素為行組成矩陣并賦給a。

1.3 產(chǎn)生有規(guī)律的序列

產(chǎn)生有規(guī)律的序列也是回歸分析過程的常見操作,以下是一些有代表性的示例。

>x=1:15

#產(chǎn)生1到15等差數(shù)列,公差為1;

>x=seq(2,15,by=2)

#產(chǎn)生2到15等差數(shù)列,公差為2;

>x=seq(from=2,length=8,by=3.2)

#產(chǎn)生首項為2,公差為3.2,項數(shù)為8的等差數(shù)列;

>x=1:7;logic=x>3

#判別向量x的元素是否大于3,將判別結(jié)果賦給邏輯logic。

1.4 數(shù)據(jù)框及其使用

數(shù)據(jù)框是R語言的一種數(shù)據(jù)結(jié)構(gòu),以矩陣的形式保存數(shù)據(jù),但不同的列可以是不同的數(shù)據(jù)類型。一個數(shù)據(jù)框相當(dāng)于關(guān)系型數(shù)據(jù)庫中的一張二維表。數(shù)據(jù)框的建立有兩種方法,第一種方法是在命令行上通過函數(shù)data.frame()直接生成。由于回歸分析的數(shù)據(jù)量比較大,變量也比較多,一般不用此法。第二種方法是在其它軟件中輸入數(shù)據(jù),或者數(shù)據(jù)來源本身就是其它軟件的輸出結(jié)果,再讀取到R環(huán)境中處理。R有多種讀取數(shù)據(jù)文件的方法,其中較為簡單而實用的一種為:在較為普及的電子表格軟件Excel中輸入數(shù)據(jù),一個變量占一列,一條記錄占一行,將電子表格另存為“.csv(逗號分隔)”文件,如“file.csv”,存儲位置選擇當(dāng)前工作目錄。下列命令則可以將“file.csv”讀取到R中并以數(shù)據(jù)框的形式賦給數(shù)據(jù)框變量df。

>df=read.csv(“file.csv”)

需要指出的是,電子表格軟件Excel最大行數(shù)與最大列數(shù)是有限制的。最新Excel 2010版本所允許的最大行號是1048576,最大列號是16384,這樣的容量雖然能夠滿足大部分的應(yīng)用需求,但也偶有例外,此時可以在“記事本”中將數(shù)據(jù)文件合并后再在R中讀入。

生成數(shù)據(jù)框后,既可以對某一行整行或某一列整列引用,也可對數(shù)據(jù)框某一行和某一列交叉點(diǎn)的元素引用。如:

>record2=df[2,] #將數(shù)據(jù)框df第2條記錄賦給變量record2,record2是一個向量;

>variable4=df[,4] #將數(shù)據(jù)框df中第4個變量的所有值賦給變量variable4,variable4是一個向量。

>height=df[2, 4] #將數(shù)據(jù)框df第2條記錄第4個變量的值賦值給變量height。

2 一元線性回歸的R方法

一元經(jīng)性回歸分析包括回歸系數(shù)估計、假設(shè)檢驗、回歸診斷與應(yīng)用三個部分,現(xiàn)舉例說明如下。

2.1 回歸系數(shù)與假設(shè)檢驗

例1 表1列出了15起火災(zāi)事故的損失及火災(zāi)發(fā)生地與最近的消防站的距離。

表1 火災(zāi)損失表

試求直線回歸方程并作假設(shè)檢驗。[2]17

將表1在Excel中轉(zhuǎn)置存放,以文件名“file1.CSV”另存為工作目錄中。執(zhí)行下列命令:

>df=read.csv(“file1.csv”)

#讀入數(shù)據(jù)文件,生成數(shù)據(jù)框df

>x=df[,2]; y=df[,3]

#提取df的兩列數(shù)據(jù)分別賦值給兩個向量

>lm.sol=lm(y~1+x)

#執(zhí)行回歸分析命令,分析報告賦給lm.sol

>summary(lm.sol)

#在終端顯示lm.sol

>plot(x,y);abline(lm.sol)

#作散點(diǎn)圖并作擬合的回歸直線見圖1

系統(tǒng)輸出如下:

Call:

lm(formula=y~1+x)

#模型形式

Residuals:

#殘差的五數(shù)總括

Coefficients:

#回歸系數(shù)的估計與顯著性概率

Estimate Std.Error tvalue Pr(>|t|)

(Intercept) 10.2779 1.4203 7.237 6.59e-06***

#回歸常數(shù)的估計與顯著性概率

x km 4.9193 0.3927 12.525 1.25e-08***

#回歸系數(shù)的估計與顯著性概率

Residual standard error: 2.316 on 13 degrees of freedom

#殘差標(biāo)準(zhǔn)差及其自由度

Multiple R-squared: 0.9235, Adjusted R-squared: 0.9176

#決定系數(shù)及修正決定系數(shù)

F-statistic: 156.9 on 1 and 13 DF, p-value: 1.248e-08

#回歸方程方差分析的F值及顯著性概率

結(jié)果表明,回歸方程是

回歸系數(shù)假設(shè)檢驗顯著性概率與回歸方程方差分析的顯著性概率均為1.248×10-8,方程具有統(tǒng)計意義。

2.2 回歸診斷

對直線回歸方程的回歸診斷一般包括異常點(diǎn)檢測、異方差檢驗及自相關(guān)分析。

2.2.1 異常點(diǎn)檢測

例1的異常點(diǎn)檢測具體操作如下:

>sre=rstandard(lm.sol)

#提取學(xué)生氏殘差并賦值給向量sre

>srelogic=abs(sre)>qt(0.975, length(x)-2);srelogic

#根據(jù)t分布規(guī)律判別異常點(diǎn),輸出TRUE則為異常點(diǎn)

所有點(diǎn)的輸出均為FALSE,表明例1樣本的15個樣本點(diǎn)中,沒有異常點(diǎn)。

2.2.2 異方差檢驗

例1的異方差檢驗具體操作如下:

>e=residuals(lm.sol)

#提取殘差賦值給向量e

>cor.test(x, abs(e),method=“spearman”)

#對自變量x與殘差e的絕對值作等級相關(guān)分析

結(jié)果顯示,自變量x與殘差e的絕對值之間的等級相關(guān)系數(shù)僅為0.114,顯著性概率為0.686>0.05,說明不存在異方差現(xiàn)象。

2.2.3 自相關(guān)分析

在檢驗直線回歸模型是否存在自相關(guān)現(xiàn)象,需要在回歸分析前對存儲數(shù)據(jù)的數(shù)據(jù)框的行記錄按自變量進(jìn)行升序排序。例1的自相關(guān)檢驗具體操作如下:

>df=read.csv(“file1.csv”)

>dfo<-order(df [, “距消防站距離x.km.”])

#計算df按x的行記錄升序索引號并賦值給向量dfo

>df1=df [dfo,]

#按升序索引排序后的記錄賦值給新數(shù)據(jù)框df1

(1)自相關(guān)系數(shù)法

>x=df1 [, 2]; y=df1 [, 3]; lm.sol=lm(y~1+x); e=residuals (lm.sol)

>e1=e [1:14]; e2=e [2: 15]

#e1與e2同位號的元素恰是殘差向量e前后相鄰的兩個元素

>cor.test(e1,e2)

#對相鄰兩點(diǎn)的殘差e1與e2作相關(guān)性檢驗

結(jié)果顯示,相鄰兩點(diǎn)的殘差的相關(guān)系數(shù)僅為-0.186,顯著性概率為0.523> 0.05,說明模型不存在自相關(guān)現(xiàn)象。

(2)DW檢驗

Durbin-Watson檢驗簡稱為DW檢驗,是關(guān)于小樣本的一種檢驗方法[3]。對于大樣本量,該算法可能無法計算p值。在這種情況下,將打印警告并給出近似p值,該p值是使用具有檢驗統(tǒng)計量的均值和方差的正態(tài)近似計算的。

DW檢驗的函數(shù)是dwtest(),該函數(shù)包括在第三方庫lmtest中,而且加載該模塊時需先首先加載R的時間序列基礎(chǔ)庫zoo。DW檢驗法也需要事先對存儲數(shù)據(jù)的數(shù)據(jù)框的行記錄按自變量排序。

>library(zoo);library(lmtest) #加載第三方庫zoo與lmtest

>df=read.csv(“file1.csv”);dfo<-order(df [, “距消防站距離x.km.”]); df1=df [dfo,]

>x=df1 [, 2]; y=df1 [, 3]; lm.sol=lm(y~1+x)

>dwtest(lm.sol)

#對回歸分析報告lm.sol中的回歸模型作DW檢驗

結(jié)果顯示,統(tǒng)計量DW值等于2.221,顯著性概率為0.555,與自相關(guān)系數(shù)的顯著性概率0.523相當(dāng),同樣表明模型不存在自相關(guān)現(xiàn)象。

2.3 預(yù)測

對于例1的模型,如果已知火災(zāi)地點(diǎn)與消防站的距離x0=7km,那么相應(yīng)的火災(zāi)損失y0可以用R來預(yù)測。

>df=read.csv(“file1.csv”); x=df [, 2]; y=df [, 3]; lm.sol=lm(y~1+x)

>x0=data.frame(x=7)

#新自變量的值應(yīng)以1行1列的數(shù)據(jù)框形式輸入

>y0=predict (lm.sol, x0, interval=“prediction”, leval=0.95); y0 #輸出為點(diǎn)估計值與置信區(qū)間,參數(shù)interval缺

省,則不顯示置信區(qū)間,leval用來指定置信度

結(jié)果顯示,火災(zāi)損失的點(diǎn)估計值是44.713千元,95%的置信區(qū)間是(38.657,50.769)(千元)。

3 多元線性回歸的R方法

下面舉例介紹多元線性回歸的R方法。

例2 影響一個地區(qū)居民消費(fèi)的因素有很多,本例選取某地區(qū)食品花費(fèi)x1、服裝花費(fèi)x2、職工平均工資x3、人均GDPx4、消費(fèi)價格指數(shù)x5、失業(yè)率x6等9個解釋變量,研究城鎮(zhèn)居民家庭平均每人全年的消費(fèi)性支出y。數(shù)據(jù)來源于2013年《中國統(tǒng)計年鑒》[2]65。數(shù)據(jù)文件為存儲于工作目錄的“file2.csv”。

3.1 偏回歸系數(shù)及假設(shè)檢驗

>df=read.csv (“file2.csv”); x1=df[, 2]; x2=df [, 3]; x3=df [, 4]; x4=df [, 5]; x5=df [, 6]; x6=df [, 7]

>x7=df [, 8]; x8=df [, 9]; x9=df [, 10]; y=df [, 11]

>lm.sol=lm (y ~ 1+x1+x2+x3+x4+x5+x6+x7+x8+x9); summary (lm.sol)

系統(tǒng)輸出與一元線性回歸的輸出基本類似。輸出結(jié)果顯示,變量x1,x2,x3,x5對y的影響具有顯著性意義,而x4,x6,x7,x8,x9對y的影響不具有顯著性?;貧w方程方差分析的顯著性概率小于2.2×10-16,回歸方程是:

具有統(tǒng)計意義,決定系數(shù)0.9923,修正的決定系數(shù)0.9889??偟膩碚f這一模型并不理想,可能與自變量太多或自變量之間存在顯著的相關(guān)性有關(guān)。下面采取逐步回歸的方法改進(jìn)模型。

3.2 逐步回歸

>lm.step=step (lm.sol, direction=“both”);summary (lm.step)

#系統(tǒng)將輸出逐步回歸的中間步驟,下面只給出最終結(jié)果

Call:

lm(formula=y ~ x1+x2+x3+x5)

Residuals:

Residual standard error: 364 on 26 degrees of freedom

Multiple R-squared: 0.9916, Adjusted R-squared: 0.9903

F-statistic: 769.2 on 4 and 26 DF, p-value: <2.2e-16

3.3 殘差分析

3.3.1 異常點(diǎn)檢測

>sre=rstandard (lm.step)

>srelogic=abs (sre)>qt (0.975, length (y)-4-1); srelogic

#按0.05雙側(cè)t界值判斷,第17個樣本點(diǎn)是異常點(diǎn)

>srelogic=abs (sre)>qt (0.995, length (y)-4-1); srelogic

#按0.01雙側(cè)t界值判斷,沒有異常點(diǎn)

3.3.2 異方差檢驗

>e=residuals (lm.step)

>y.fit=predict(lm.step)

#計算每一個樣本點(diǎn)的因變量的估計值存儲于向量y.fit

>cor.test (y.fit,abs (e), method=“spearman”)

#對因變量的估計值與殘差e的絕對值作等級相關(guān)分析

多元線回歸模型的異方差檢驗是通過檢驗因變量的擬合值y.fit與殘差的絕對值abs(e)的等級相關(guān)性進(jìn)行分析。結(jié)果顯示,等級相關(guān)系數(shù)是0.25,顯著性概率是0.174>0.05,所以該模型沒有異方差現(xiàn)象。

3.3.3 自相關(guān)檢驗

檢驗多元回歸模型是否存在自相關(guān)現(xiàn)象,同樣需要在回歸分析前對存儲數(shù)據(jù)的數(shù)據(jù)框的行記錄進(jìn)行排序,一般按因變量升序排序。

>df=read.csv(“file2.csv”);dfo<-order(df[,“y”]);df1=df[dfo,]

>x1=df1[,2];x2=df1[,3];x3=df1[,4];x4=df1[,5];x5=df1[,6];x6=df1[,7];x7=df1[,8]

>x8=df1[,9];x9=df1[,10];y=df1[,11]

>lm.sol=lm(y~1+x1+x2+x3+x4+x5+x6+x7+x8+x9);lm.step=step(lm.sol,direction=“both”)

>e=residuals(lm.step);e1=e[1:30];e2=e[2:31]

>cor.test(e1, e2)

結(jié)果顯示,相鄰兩點(diǎn)的殘差的相關(guān)系數(shù)僅為0.169,顯著性概率為0.371>0.05,說明該模型不存在自相關(guān)現(xiàn)象。

另一方面

>library (zoo); library (lmtest); dwtest (lm.step)

結(jié)果顯示,統(tǒng)計量DW值等于1.611,顯著性概率為0.106,同樣表明模型不存在自相關(guān)現(xiàn)象。

3.4 預(yù)測

如果某地區(qū)居民的食品花費(fèi)x1=5000元、衣著花費(fèi)x2=1500元、居住花費(fèi)x3=1000元、文教娛樂花費(fèi)x5=1400元,那么可以預(yù)測該地區(qū)居民消費(fèi)支出。

>x0=data.frame(x1=5000,x2=1500,x3=1000,x5=1400)

>y0=predict(lm.step,x0,interval=“prediction”,leval=0.95);y0

#輸出為點(diǎn)估計值與置信區(qū)間,參數(shù)interval缺省

結(jié)果顯示,該地區(qū)居民消費(fèi)支出點(diǎn)估計值為12507.17元,95%的置信區(qū)間為(11709.78,13304.56)(元)。

4 結(jié)語

文章僅僅討論符合基本假設(shè)情形下的回歸分析過程。當(dāng)違背基本假設(shè)時,諸如出現(xiàn)異常點(diǎn)、存在異方差現(xiàn)象或存在自相關(guān)現(xiàn)象時應(yīng)該如何處理,以及回歸分析的其它內(nèi)容,因為篇幅關(guān)系,筆者將另文撰述。

猜你喜歡
回歸方程方差殘差
方差怎么算
基于雙向GRU與殘差擬合的車輛跟馳建模
概率與統(tǒng)計(2)——離散型隨機(jī)變量的期望與方差
采用直線回歸方程預(yù)測桑癭蚊防治適期
線性回歸方程的求解與應(yīng)用
線性回歸方程要點(diǎn)導(dǎo)學(xué)
基于殘差學(xué)習(xí)的自適應(yīng)無人機(jī)目標(biāo)跟蹤算法
基于遞歸殘差網(wǎng)絡(luò)的圖像超分辨率重建
計算方差用哪個公式
走進(jìn)回歸分析,讓回歸方程不再是你高考的絆腳石
博野县| 岳西县| 阳信县| 阿坝| 绥德县| 呈贡县| 鄂州市| 莆田市| 托克逊县| 孝感市| 岳池县| 通道| 正阳县| 库伦旗| 肇东市| 海丰县| 久治县| 新竹市| 巴林右旗| 黎城县| 军事| 栾城县| 陵川县| 长治市| 吴忠市| 廉江市| 武夷山市| 隆化县| 米泉市| 邓州市| 锡林浩特市| 湖南省| 五河县| 库尔勒市| 大丰市| 蒙山县| 嵩明县| 崇信县| 湟中县| 武宣县| 青海省|