1. 程式人生 > >Matlab之線性迴歸作業

Matlab之線性迴歸作業

今天做了數學建模的作業,順便發了。大笑

記錄一下我的好心情。大笑

-----------------------------------------------------------------------------------

作業如下:

8.在腐蝕刻線試驗中,已知腐蝕深度y與腐蝕時間x有關,現收集到資料如表4.33所示。

                                               表4.33 腐蝕深度與腐蝕時間

x/s             5   10    15    20     30    40     50     60   70    90    110

y/um         6    10   10    13     16   17     19     23   25    29    36

(1)求經驗迴歸方程^y=^a+^bx;

(2)檢驗一元線性迴歸方程的顯著性(a=0.05);

(3)當腐蝕時間為x0=25s時,求腐蝕深度的預測值。

解:(1)

~x=(5+10+15+20+30+40+50+60+70+90+110)/11=500/11;

~y=(6+10+10+13+16+17+19+23+25+29+36)/11=204/11;       

Sxy=5*6+10*10+15*10+20*13+30*16+40*17+50*19+60*23+70*25+90*29+110*36=12350;

Sxx=5*5+10*10+15*15+20*20+30*30+40*40+50*50+60*60+70*70+90*90+110*110=34450;

^b=(Sxy-n*~x*~y)/(Sxx-n*~x*~x)=0.2625

^a=~y-^b*~x=6.6236;

經驗迴歸方程為:^y=6.6236+0.2625*x;

(2)假設:H0:b=0(即不存線上性關係)

編寫MATLAB指令對其做迴歸分析如下:

x=[5   10    15    20    30    40     50    60    70    90   110];

X=[1 5;1 10;1  15;1  20;1 30;1  40;1  50;1  60;1  70;1  90;1 110];

y=[6   10    10    13    16    17     19    23    25    29   36];

plot(x,y,'r.'),grid on

[b,bint,r,rint,states]=regress(y',X)

Rcoplot(r,rint)

執行得時序殘差圖如下所示


由上可知,第一個點落在以y=0為中軸線的帶狀區域之外,即點(5,6)是奇異點,應該刪除。

再次編寫MATLAB指令對其做迴歸分析如下:

x=[ 10   15    20     30   40     50     60   70    90    110];

X=[1 10;1  15;1  20;1 30;1  40;1  50;1  60;1  70;1  90;1 110];

y=[ 10   10    13     16   17     19     23   25    29    36];

plot(x,y,'r.'),grid on

[b,bint,r,rint,states]=regress(y',X)

rcoplot(r,rint)

執行的迴歸係數為:^a=7.2336,^b=0.2539.於是得一元線性迴歸方程為:^y=7.2336+0.2539*x;

其置信度為95%的置信區間分別為:[ 6.0467 , 8.4204]和[0.2336 , 0.2741].

時序殘差圖如下所示:


R^2= 0.9905,F=837.6023,p=0.0000.由於R^2=0.9905,接近於1,所以迴歸直線同樣本觀測值得擬合程度很好,F值為837.6023,遠大於其臨界值F0.05(1,9)=665.2648,p的值為0遠小於顯著性水平0.05,這說明隨機變數Y與解釋變數x之間有顯著的線性關係。根據時序殘差圖可以判斷,殘差之落在以y=0為中軸線的帶狀區域內,所以無奇異點,所以迴歸模型滿足假設條件。

(3)由(2)可知,^y=7.2336+0.2539*x,將x0=25s代入得,y=13.5811,即腐蝕預測值為13.5811um。

9.鍊鋼過程中用來盛鋼水的鋼包,由於受鋼水的浸溼作用,容積會不斷擴大,表4.34給出了使用次數x與容積增大量y的15對實驗資料。

                                                                          表4.34

x       2       3      4       5     6       7     8      9      10      11 

y  6.42    8.20     9.58    9.50   9.70    10.00 9.93    9.99    10.49  10.59 

x  12      13     14      15     16

y   10.60   10.80   10.60   10.90   10.76

根據經驗,y與x之間有如下形式的非線性模型y=ae^(b/x),試找出x與y的關係式。

解:編寫MATLAB指令對其做迴歸分析如下:

x=[2: 16];

Y=[6.42 8.20  9.58  9.50 9.70  10.00  9.93 9.99  10.49  10.59 10.60  10.80    10.60  10.90   10.76];

myfunc=inline('beta(1)*exp(beta(2)./x)','beta','x');

beta=nlinfit(x,Y,myfunc,[1 1]);

a=beta(1),b=beta(2)

y= beta(1)*exp(beta(2)./x);

plot(x,Y,'r+',x,y,'b'),grid on

執行得迴歸係數為:a=11.6037,b=-1.0641.所以迴歸方程如下:y=11.6037*e^(-1.0641/x).

模擬圖如下:


PS:我是一條擁有超過7秒記憶的鹹魚。大笑