Matlab:回歸分析(1)


1.多元線性回歸

 1 %數據的輸入
 2 x = [143 145 146 147 149 150 153 154 155 156 157 158 159 160 162 164];
 3 y = [88 85 88 91 92 93 93 95 96 98 97 96 98 99 100 102];
 4 %轉換為列向量
 5 X = [ones(16,1) x'];
 6 Y = y';
 7 %回歸分析及檢驗
 8 [b, bint, r, rint, states] = regress(Y, X, 0.05);
 9 b, bint, states
10 %作散點圖和回歸之后的圖
11 z = b(1) + b(2)*x';
12 figure(1)
13 plot(x', Y, 'k+')
14 hold on
15 plot(x', z, 'r')
16 %作殘差圖
17 figure(2)
18 rcoplot(r, rint)

結果:

2.可線性化的一元非線性回歸

 根據數據散點圖

配曲線,此題配的是倒指數曲線y = a*exp(b/x)其中a>0

1 function f = volum(beta, x)
2 f = beta(1) * exp(beta(2) ./ x);
 1 %輸入數據
 2 x = 2:16;
 3 y = [6.42 8.20 9.58 9.5 9.7 10 9.93 9.99 10.49 10.59 10.60 10.80 10.60 10.90 10.76];
 4 %擬定回歸系數的初值
 5 beta0 = [8 2]';
 6 %求回歸系數
 7 [beta, r, J] = nlinfit(x', y', 'volum', beta0);
 8 beta
 9 %預測及作圖
10 [Y, delta] = nlpredci('volum', x', beta, r, J);
11 %散點圖
12 plot(x, y, 'k+')
13 hold on
14 %擬合圖
15 plot(x, Y, 'r')

結果

3.多項式回歸

方法一:直接做二次多項式回歸

1 t=1/30:1/30:14/30;
2 s=[11.86 15.67 20.60 26.69 33.71 41.93 51.13 61.49 72.90 85.44 99.08 113.77 129.54 146.48];
3 %二次多項式回歸
4 [p, S] = polyfit(t, s, 2);
5 p

結果:
p =489.2946   65.8896    9.1329

即為二次多項式系數 cba

方法二:化為多元線性回歸

 1 t = 1/30:1/30:14/30;
 2 s = [11.86 15.67 20.60 26.69 33.71 41.93 51.13 61.49 72.90 85.44 99.08 113.77 129.54 146.48];
 3 %化為多元線性回歸
 4 T = [ones(14, 1), t', (t.^2)'];
 5 [b, bint, r, rint, states] = regress(s', T, 0.05);
 6 b, states
 7 %預測及作圖
 8 %參數p和S必須由多項式回歸函數polyfit求出
 9 [p, S] = polyfit(t, s, 2);
10 Y = polyconf(p, t, S);%預測值
11 plot(t, s, 'k+', t, Y, 'r')

結果:
b =

    9.1329    65.8896   489.2946

states =

  1.0e+007 *

    0.0000    1.0378    0.0000    0.0000

b即為二次多項式系數abc

 


免責聲明!

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



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