MATLAB線性回歸方程與非線性回歸方程的相關計算


每次比賽都需要查一下,這次直接總結到自己的博客中。

 

 

以這個為例子:

2.線性方程的相關計算

x=[1,2,3,4,5]';%參數矩陣
X=[ones(5,1),x];%產生一個5行一列的矩陣,后接x矩陣
Y=[3.95,5.23,7.6,9.48,11.89]';
[b,bint,r,rint,stats]=regress(Y,X)
%b為方程相關系數
%r表示殘差
%rint表示置信區間
%stats適用於檢驗回歸模型的統計量

 

得到

b =

    1.5910
    2.0130


bint =

    0.4482    2.7338
    1.6684    2.3576


r =

    0.3460
   -0.3870
   -0.0300
   -0.1630
    0.2340


rint =

   -0.0946    0.7866
   -1.3318    0.5578
   -1.6413    1.5813
   -1.5888    1.2628
   -0.6578    1.1258


stats =

    0.9914  345.6401    0.0003    0.1172

 

stats計算的結果,分別表示復相關系數r^2=0.9914,檢驗回歸方差顯著性的統計量F=345.6401,對應所得F統計量的概率P=0.003,估計誤差方差=0.1172。

r^2越接近1,回歸效果越顯著;p<0.05表明方程成立。

 

rcoplot(r,rint)%殘差圖制作,紅色表示異常點(不經過x=0)

  

 

 

預測及作圖

z=b(1)+b(2)*x
plot(x,Y,'k+',x,z,'r')

  

z =

    3.6040
    5.6170
    7.6300
    9.6430
   11.6560

  

 

  

3.非線性方程的相關計算

x=[1,2,3,4,5]';%參數矩陣,並轉置
y=[5.49,15.13,40.98,109.20,296.96]';
beta0=[1.9635 1.02097]';%待定參數的初始值
[beta,r,J]=nlinfit(x,y,@modelfun,beta0);%非線性方程回歸命令
beta,r,J

  

創建modelfunc.m函數

function yhat=modelfun(beta,x)
%UNTITLED Summary of this function goes here
%   Detailed explanation goes here
yhat=beta(1)*exp(beta(2)*x);
end

  

當然對於函數的建立也可以直接在主代碼中使用函數

x=[1,2,3,4,5]';%參數矩陣
y=[5.49,15.13,40.98,109.20,296.96]';
beta0=[1.9635 1.02097]';%待定參數的初始值
modelfu=inline('beta(1)*exp(beta(2)*x)','beta','x');
[beta,r,J]=nlinfit(x,y,modelfu,beta0);%非線性方程回歸命令
beta,r,J

  

 

beta =

    2.0389
    0.9962


r =

   -0.0311
    0.1792
    0.4944
   -0.4322
    0.0837


J =

   1.0e+03 *

    0.0027    0.0055
    0.0073    0.0299
    0.0199    0.1215
    0.0538    0.4385
    0.1456    1.4844

  

beta為估計出的回歸系數    r表示殘差    J表示Jacobian矩陣     modelfun:匿名函數(內聯函數)  beta0表示回歸系數的初值

 

待定參數的初始值

beta0的計算需要代入兩組x,y的值進行計算,這樣有助於MATLAB快速確定計算范圍

 

預測和預測誤差估計

[Y,DELTA]=nlpredci('modelfun', x,beta,r,J) 

  

Y =

    5.5211
   14.9508
   40.4856
  109.6322
  296.8763


DELTA =

    0.1977
    0.3981
    0.7093
    0.9588
    1.2499

  

獲取 x 處的預測值 Y 及預測值的顯著性為 1-alpha 的置信區間 Y±DELTA

 

作圖

plot(x,y,'*',x,Y,'-or')

  

 

 

 

 

 


免責聲明!

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



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