实验目的

  (1) 直观了解回归分析基本内容;

  (2)掌握用数学软件求解回归分析问题。

实验要求

   实验步骤要有模型建立,模型求解、结果分析。

实验内容

(1)考察温度x对产量y的影响,测得下列10组数据:

MATLAB 回归 机器学习 用matlab做回归分析_MATLAB

 

 求y关于x的线性回归方程,检验回归效果是否显著,并预测x=42℃时产量的估值及预测区间(置信度95%).

(2)某零件上有一段曲线,为了在程序控制机床上加工这一零件,需要求这段曲线的解析表达式,在曲线横坐标xi处测得纵坐标yi共11对数据如下:

MATLAB 回归 机器学习 用matlab做回归分析_MATLAB_02

 

 求这段曲线的纵坐标y关于横坐标x的二次多项式回归方程.

(3)混凝土的抗压强度随养护时间的延长而增加,现将一批混凝土作成12个试块,记录了养护日期x(日)及抗压强度y(kg/cm2)的数据:

MATLAB 回归 机器学习 用matlab做回归分析_拟合_03

 

 

MATLAB 回归 机器学习 用matlab做回归分析_回归分析_04

 

实验步骤

MATLAB 回归 机器学习 用matlab做回归分析_拟合_05

 

   使用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

MATLAB 回归 机器学习 用matlab做回归分析_MATLAB 回归 机器学习_06

 

 

  于是算得预测值的置信区间为(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;

  代码输出的图:

MATLAB 回归 机器学习 用matlab做回归分析_拟合_07

  

MATLAB 回归 机器学习 用matlab做回归分析_回归分析_08

图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

MATLAB 回归 机器学习 用matlab做回归分析_拟合_09

 

        图2  题2的回归方程拟合图

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

MATLAB 回归 机器学习 用matlab做回归分析_回归分析_10

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,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;

 

MATLAB 回归 机器学习 用matlab做回归分析_回归分析_11

 

          图3  题3的回归方程拟合图

  由图可见回归方程的效果很好。

小结

   在求解回归分析的题目时,其中印象最深刻的应该是题1的求解,它用到了概率论与数理统计的知识。然后后面的两题,似乎用到了拟合的知识。