1. 程式人生 > >迴歸分析與Matlab實現

迴歸分析與Matlab實現

一元迴歸

建議使用Matlab自帶的cftool工具,可以較好的擬合二維和三維資料。
cftool的使用

線性迴歸

一元線性迴歸

regress()函式主要用於線性迴歸,一元以及多元的。它可以提供更多的資訊,殘差之類的。polyfit()函式是利用多項式擬合。可以是線性也可以是非線性的。

regress函式

[B,BINT,R,RINT,STATS] = regress(Y,X)
引數解釋:

  • B:迴歸係數,是個向量(“the vector B of regression coefficients in the linear model Y = X*B”)。
  • BINT:迴歸係數的區間估計(“a matrix BINT of 95% confidence intervals for B”)。
  • R:殘差( “a vector R of residuals”)。
  • RINT:置信區間(“a matrix RINT of intervals that can be used to diagnose outliers”)。
  • STATS:用於檢驗迴歸模型的統計量。有4個數值:判定係數R^2,F統計量觀測值,檢驗的p的值,誤差方差的估計。
    ALPHA:顯著性水平(缺少時為預設值0.05)。
x=[143 145 146 147 149 150 153 154 155 156 157 158 159 160 162 164]';
X=[ones(16,1) x];
Y = [88 85 88 91 92 93 93 95 96 98 97 96 98 99 100 102]';
[b,bint,r,rint,stats]=regress(Y,X,0.05);
%

b = [-16.0730 ,0.7194]
bint=[-33.7071 1.5612
0.6047 0.8340 ]
stats=[0.9282 180.9531 0.0000 1.7437]
(判定係數R^2,F統計量觀測值,檢驗的p的值,誤差方差的估計)

利用rcoplot(r,rint)可以觀察殘差的分佈圖。觀察所得殘差分佈圖,看到第2個數據的殘差置信區間不含零點,此點視為異常點,剔除後重新計算。
在這裡插入圖片描述
刪除後重新計算,可以發現置信區間縮小;R2、F變大,所以應該採用修改後的結果。

polyfit函式

[p,s] = polyfit(x,y,degree)即可。

多元線性迴歸

regress函式

之前所講是一元的,如果是多元就增加X的行數!
b =regress( Y, X,p )其中:
在這裡插入圖片描述在這裡插入圖片描述在這裡插入圖片描述

在這裡插入圖片描述

非線性擬合

nlinfit()

非線性擬合

逐步迴歸

stepwise()