一元線性迴歸分析的R語言實現(RStudio)

簡介

迴歸分析是一種應用廣泛的數理統計方法,它是研究變量與變量之間的相關關係,這種關係大致分爲兩類:確定性關係(能用函數精確描述)和非確定性關係(不能用函數描述)。

變量間的非確定性關係稱爲相關關係

在迴歸分析中的相關關係主要分爲兩類:一類是隨機變量之間的相關關係,另一類是隨機變量和普通變量間的相關關係,本文只研究後一類。

隨機變量稱爲因變量或響應變量,只能觀測但不能控制;普通變量稱爲自變量或解釋變量或預報變量或設計變量,是可控變量,根據需要預先確定。

本文只研究一個因變量一個自變量之間的線性關係,即爲一元線性迴歸分析。

迴歸分析的主要任務是通過樣本來估計迴歸函數y_hate(x),並利用此估計進行預測和控制。

實例

爲研究溫度x對於某個化學過程生產量y的影響,收集到的數據如表所示:

x -5 ,-4,-3,-2,-1,0,1,2,3,4,5
y 1,5,4,7,10,8,9,13,14,13,18

對上數據進行迴歸分析。

打散點圖

首先我們要把數據的散點圖打出來,看看數據的大體分佈,這對我們下面的模型建立很重要!
首先建立數組x和數組y來容納數據然後使用plot函數繪製散點圖

x=c(-5,-4,-3,-2,-1,0,1,2,3,4,5)
y=c(1,5,4,7,10,8,9,13,14,13,18)
plot(x,y)

結果如圖示:
在這裏插入圖片描述
能夠看出,自變量x和響應變量y之間具有明顯的線性關係,即有y=a+bx,我們下面建立線性迴歸分析模型。

線性迴歸模型建立

使用函數lm()建立迴歸分析模型,公式y~1+x代表用x和常數去擬合y,1代表常數,x代表自變量x的一次項,要是有x的N次項,其形式爲“I(x^N)”(其中I是大寫的i),不能直接寫括號內的公式!!!將回歸模型命名爲test。

x=c(-5,-4,-3,-2,-1,0,1,2,3,4,5)
y=c(1,5,4,7,10,8,9,13,14,13,18)
plot(x,y)
test=lm(y~1+x)
test

其結果如下:

Call:
lm(formula = y ~ 1 + x)

Coefficients:
(Intercept)            x  
      9.273        1.436 

即係數a的估計值爲9.273,係數b的估計值爲1.436

使用abline()函數繪製迴歸直線

abline(test)

得到
在這裏插入圖片描述
可以看出直線對點的擬合效果不錯。

檢驗

數學的東西是不能只用眼睛去看的,我們還要用數學工具去檢驗我們得到的模型是否正確

方差檢驗:迴歸的顯著性檢驗,衡量方程是否建立準確,也就是衡量本例究竟是不是一元線性迴歸模型。(F檢驗)

anova(test)

結果爲

Analysis of Variance Table

Response: y
          Df  Sum Sq Mean SqF F value    Pr(>F)    
x          1 226.945  226.94   96.18 4.207e-06 ***
Residuals  9  21.236    2.36                      
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

x:迴歸平方和(SSE)
Residuals:殘差平方和(SSR)
Df:自由度
Sum Sq:(sum of squares)方差總和
Mean Sq:(mean of squares)平均方差,即方差總和除以對應自由度
F value:F檢驗的值
Pr(>F):F檢驗的P值,當P值小於顯著性水平α的時候,模型效果顯著
”***":代表模型效果非常顯著,在“Signif. codes”中給出瞭解釋

迴歸係數檢驗:衡量方程係數是否可靠(t檢驗)

summary(test)

結果爲

Call:
lm(formula = y ~ 1 + x)

Residuals:
    Min      1Q  Median      3Q     Max 
-2.0182 -1.1818  0.4182  1.1636  2.1636 

Coefficients:
            Estimate Std. Error t value Pr(>|t|)    
(Intercept)   9.2727     0.4632  20.021 9.00e-09 ***
x             1.4364     0.1465   9.807 4.21e-06 ***
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Residual standard error: 1.536 on 9 degrees of freedom
Multiple R-squared:  0.9144,	Adjusted R-squared:  0.9049 
F-statistic: 96.18 on 1 and 9 DF,  p-value: 4.207e-06

Residuals:爲殘差水平的五數概括,通過它我們可以瞭解殘差的大概水平。
(Intercept):估計值a,即估計截距
x :估計值b,即估計斜率
Estimate:估計值
Std. Error:(standard error)估計的標準差的估計
t value:檢驗統計量t的值
Pr(>|t|):檢驗的P值,當P值小於顯著性水平α的時候,模型效果顯著
”***":代表模型效果非常顯著,在“Signif. codes”中給出瞭解釋
Residual standard error: 1.536 on 9 degrees of freedom:9自由度的殘差標準差是1.536
Multiple R-squared:擬合優度,結果越接近於1,x和y的線性相關度越大;越接近於0,x和y的線性相關度越小。必須指出的是,當擬合優度爲0時候只能說明x和y不是線性關係,但是x和y還可能是其他類型的相關關係

迴歸係數的置信區間:使用confint()求得截距a和斜率b估計值的置信區間,默認爲95%的置信度

confint(test)

結果爲

               2.5 %    97.5 %
(Intercept) 8.225007 10.320447
x           1.105045  1.767682

即a的95%的置信區間爲[8.225007, 10.320447]
b的95%的置信區間爲[1.105045 , 1.767682]

預測

使用predict()函數進行預測。

其中pre表示要預測的點,這裏必須以data.frame的形式輸入,predict函數才能計算;
interval="prediction"表示給出對應的預測區間
參數level=0.95表示顯著性水平。

pre=data.frame(x=0.2)
test.pre=predict(test,pre,interval="prediction",level=0.95)
test.pre

結果爲

   fit      lwr      upr
1 9.56 5.929986 13.19001

即當x=0.2時,y的預測值是9.56
在95%置信度下的y的置信區間是[5.929986, 13.19001]

需要說明的是,一元線性迴歸在做預測的時候,預測點的位置越近於樣本點均值,預測的結果越準確,離樣本點均值越遠,預測的結果越不可信。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章