迴歸分析與Matlab實現
阿新 • • 發佈:2018-12-20
一元迴歸
建議使用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()