Matlab回歸分析


實驗目的

  (1) 直觀了解回歸分析基本內容;

  (2)掌握用數學軟件求解回歸分析問題。

實驗要求

   實驗步驟要有模型建立,模型求解、結果分析。

實驗內容

(1)考察溫度x對產量y的影響,測得下列10組數據:

 

 求y關於x的線性回歸方程,檢驗回歸效果是否顯著,並預測x=42℃時產量的估值及預測區間(置信度95%).

(2)某零件上有一段曲線,為了在程序控制機床上加工這一零件,需要求這段曲線的解析表達式,在曲線橫坐標xi處測得縱坐標yi共11對數據如下:

 

 求這段曲線的縱坐標y關於橫坐標x的二次多項式回歸方程.

(3)混凝土的抗壓強度隨養護時間的延長而增加,現將一批混凝土作成12個試塊,記錄了養護日期x(日)及抗壓強度y(kg/cm2)的數據:

 

 

 

實驗步驟

 

   使用MATLAB求解問題(1),代碼

 1 %回歸分析
 2 x=20:5:65;
 3 Y=[13.2,15.1,16.4,17.1,17.9,18.7,...
 4     19.6,21.2,22.5,24.3];
 5 X=[ones(length(x),1),x'];
 6 [b,bint,r,rint,stats]=regress(Y',X)
 7 sigga2=sum(r.^2)/(length(x)-2);
 8 %Sx2=var(x);
 9 Lxx=var(x)*(length(x)-1);
10 z=b(1)+b(2)*x;
11 figure(1),hold on;
12 plot(x,Y,'k+',x,z,'r','LineWidth',2,'LineWidth',2);
13 legend('原始數據','回歸方程','Location','southeast');
14 grid on;
15 figure(2),rcoplot(r,rint);
16 %set(gca,'Color','w');
回歸分析_matlab

 

 

  於是算得預測值的置信區間為(17.9243, 19.0527),求解的MATLAB命令如下:

>> exp61

>> y=b(1)+b(2)*42;

>> x_bar=mean(x);

>> u=sigga2*2.306*sqrt(1+0.1+(42-x_bar)^2/Lxx);

>> a=y-u;

>> b=y+u;

  代碼輸出的圖:

  

                  1  回歸方程擬合圖和殘差圖

  使用SPSS求解系數,

系數a

模型

未標准化系數

標准化系數

t

顯著性

B 95.0% 置信區間

B

標准錯誤

Beta

下限

上限

1

(常量)

9.121

.477

 

19.119

.000

8.021

10.221

溫度

.223

.011

.991

20.972

.000

.199

.248

a. 因變量:產量

 

  同樣算得y=9.121+0.223x,並且顯著性為0.000<0.05,回歸方程具有意義。

代碼:

1 REGRESSION
2   /MISSING LISTWISE
3   /STATISTICS COEFF OUTS CI(95) R ANOVA CHANGE
4   /CRITERIA=PIN(.05) POUT(.10)
5   /NOORIGIN
6   /DEPENDENT 產量
7   /METHOD=ENTER 溫度
8   /RESIDUALS DURBIN
9   /SAVE PRED.
回歸分析_SPSS

(2)解:設y=ax2+bx+c,使用MATLAB求解

>> x=0:2:20;y=[0.6,2.0,4.4,7.5,11.8,17.1,23.3,31.2,39.6,49.7,61.7];

>> [p,s]=polyfit(x,y,2);yy=@(x)p(1).*x.^2+p(2).*x+p(3);

>> x=linspace(0,20,40);hold on;

>> title('0.1403*x^2+0.1971*x+1.0105'),

>> plot(0:2:20,y,'ko',x,yy(x),'b','LineWidth',3);

>> legend('原始數據','回歸方程');grid on;

算得a=0.1403,b=0.1971,c=1.0105。回歸方程:y=0.1403x2+0.1971x+1.0105

 

        圖2  題2的回歸方程擬合圖

(3)解:由題干給出的y=a+blnx,並使用MATLAB求解,首先給出volum61.m文件

1 function yhat=volum61(beta,x)
2 yhat=beta(1)+beta(2).*log(x);
3 end
volum61.m

命令行求解:

>> x=[2,3,4,5,7,9,12,14,17,21,28,56];

>> y=[35,42,47,53,59,65,73,76,82,86,99];

>> x=[2,3,4,5,7,9,12,14,17,21,28,56];

>> y=[35,42,47,53,59,65,68,73,76,82,86,99];

>> beta0=[5,1]';

>> [beta,r,J]=nlinfit(x',y','volum61',beta0);

>> beta

beta =

   21.0058

   19.5285

作圖,

>> figure,hold on;

>> xx=linspace(2,56,100);

>> yy=volum61(beta,xx);

>> plot(x,y,'o',xx,yy,'Linewidth',2,'Linewidth',2);

>> title('y=21.0058+19.5285lnx');

>> legend('原始數據','回歸方程','Location','southeast');grid on;

 

 

          圖3  題3的回歸方程擬合圖

  由圖可見回歸方程的效果很好。

小結

   在求解回歸分析的題目時,其中印象最深刻的應該是題1的求解,它用到了概率論與數理統計的知識。然后后面的兩題,似乎用到了擬合的知識。

 


免責聲明!

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



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