線性函數擬合R語言示例


線性函數擬合(y=a+bx)

1.       R運行實例

R語言運行代碼如下:綠色為要提供的數據,黃色標識信息為需要保存的。

 

x<-c(0.10,0.11, 0.12, 0.13, 0.14, 0.15,0.16, 0.17, 0.18, 0.20, 0.21, 0.23)

y<-c(42.0,43.5, 45.0, 45.5, 45.0, 47.5,49.0, 53.0, 50.0, 55.0, 55.0, 60.0)

data1=data.frame(x=x,y=y)  #數據存入數據框

 

#擬合線性函數

lm.data1<-lm(y~ x,data=data1)

summary(lm.data1)        #輸出擬合后信息

Call:

lm(formula = data1$y ~ data1$x)

 

Residuals: #殘差分位數(當殘差個數較少時,此處顯示所有殘差值)

   Min      1Q   Median   3Q    Max

  -2.0431  -0.7056 0.1694  0.6633  2.2653

 

Coefficients:

       #系數估計值 #系數標准誤差 #t檢驗值 #對應t值概率的2

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

(Intercept)   28.493       1.580        18.04   5.88e-09 ***

data1$x    130.835      9.683        13.51   9.50e-08 ***

---

Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’1

 

Residual standard error: 1.319 on 10degrees of freedom

#擬合優度判定系數          #修正的擬合優度判定系數

Multiple R-squared:  0.9481,       AdjustedR-squared: 0.9429

#F檢驗值                   #F檢驗值對應的概率

F-statistic: 182.6 on 1 and 10 DF,  p-value:9.505e-08

t檢驗值對應的Pr(>|t|):該數值由於是t檢驗量對應的概率的2倍,所以其數值小於0.1時,就說明對應的自變量對於因變量來說是有顯著性的,當然數值越小,顯著性越高。

F檢驗值對應的p-value:F檢驗值對應的概率。當其數值小於0.05時,說明回歸方程是顯著的。

Adjusted R-squared修正擬合優度:數值越接近1,模型擬合的越好。

/***********************數值輸出********************************/

coefficient<-lm.data1$coefficients  #回歸所有系數列舉

coefficient[1]  #系數a:截距

coefficient [2]  #系數b

tvalue<-summary(lm.data1)$coefficients[1:2,3]         #t檢驗值

tvalue[1]                  #系數a對應的t檢驗值

tvalue[2]                  #系數b對應的t檢驗值

Pr<-summary(lm.data1)$coefficients[1:2,4]             #t檢驗值對應的概率的2倍

Pr[1]                     #系數a對應t檢驗值對應的概率2

Pr[2]                     #系數b對應t檢驗值對應的概率2

 

ARsquared<-summary(lm.data1)$adj.r.squared        #修正的擬合優度判定系數

 

F_info<-summary(lm.data1)$fstatistic               #F檢驗的F值、自由度DF和概率

F_info[1]                  #F檢驗值

F_info[2]                  #F檢驗量的自由度

F_info[3]                  #F檢驗值對應的概率

/****************************************************************/

 

#殘差正態性檢驗

ks.test(lm.data1$residuals,"pnorm",0)

      One-sampleKolmogorov-Smirnov test

 

data: lm.data1$residuals

#D檢驗值  #對應的概率值

D = 0.1332, p-value = 0.9648

alternative hypothesis: two-sided

D檢驗值對應的概率值p-value:該數值大於0.05,說明殘差服從均值為0的正態分布。

/***********************數值輸出********************************/

ks_test<-ks.test(lm.data1$residuals,"pnorm",0)    #獲取正態性檢驗信息

ks_test[1]               #KS檢驗值

ks_test[2]               #KS檢驗值對應的概率

/****************************************************************/

 

#殘差獨立性檢驗:DW法檢驗殘差序列的自相關性

dwtest(lm.data1)

      Durbin-Watsontest

 

data:  lm.data1

#d.w檢驗值#對應的概率值

DW = 2.5465, p-value = 0.7422

alternative hypothesis: trueautocorrelation is greater than 0

DW檢驗值對應的概率值p-value:該數值大於0.05時,說明殘差序列獨立。

/***********************數值輸出********************************/

dw_test<-dwtest(lm.data1)  #獲取獨立性檢驗信息

dw_test[1]               #DW檢驗值

dw_test[4]               #DW檢驗值對應的概率

/****************************************************************/

 

#殘差同方差檢驗

bptest(lm.data1)

      studentizedBreusch-Pagan test

 

data: lm.data1

#BP檢驗值  #自由度 #對應概率值

BP = 0.9831,  df = 1,  p-value = 0.3214

BP檢驗值對應的概率值p-value:該數值大於0.05,說明殘差是同方差的。

/***********************數值輸出********************************/

bp_test<- bptest(lm.data1)  #獲取獨立性檢驗信息

bp_test[1]               #BP檢驗值

bp_test[2]               #BP檢驗量的自由度

bp_test[4]               #BP檢驗值對應的概率

/****************************************************************/

2.       擬合曲線圖

ab<-round(lm.data1$coefficients[1],3)  #回歸方程系數a,保留3位小數
bb<-round(lm.data1$coefficients[2],3)  #回歸方程系數b,保留3位小數
plot(data1$x,data1$y,xlab="x",ylab = "y",col="red",pch="*") #訓練數據點

abline(lm.data1,col="blue")  #擬合曲線

text(mean(data1$x),max(data1$y),paste("y = ",bb,"x+(",ab,")",sep = ""))#方程式



 


免責聲明!

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



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