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