资源描述
非线性无约束极小问题
用命令x=fmin('f',x0)。
或用命令x=fminu('f ',x0),或用命令x=fmins('f ',x0)。
非线性最小二乘问题
用命令x=leastsq('f ',x0),或用命令x=curvefit('f ',x0)。
二次规划
用命令x=qp(H,c,A,b)。
关于这些命令的详细使用规则和例子,用借助help进行查阅。
8.回归分析
前面我们曾学过拟合。但从统计的观点看,对拟合问题还需作回归分析。例如:有描述问题甲和问题乙的两组数据(x,y)和(x,z)。设x=[1,2,3,4];y=[1.0,1.3,1.5,2.02.3];z=[0.6,1.95,0.9,2.85,1.8]。如果在平面上画出散点图,那么问题甲的四个点基本在一条直线上而问题乙的四个点却很散乱。如果都用命令polyfit(x,y,1),polyfit(x,z,1)来拟合,将得到同一条直线。自然对问题甲的信任程度会高于对问题乙的信任程度。所以有必要对所得结果作科学的评价分析。回归分析就是解决这种问题的科学方法。下面结合三个具体的例子介绍MATLAB实现回归分析的命令。
1. 合金强度y与其中含碳量x有密切关系,如下表
x0.100.110.120.130.140.150.160.170.180.200.210.23
y42.041.545.045.545.047.549.055.050.055.055.560.5
根据此表建立y(x)。并对结果作可信度进行检验、判断x对y影响是否显著、检查数据中有无异常点、由x的取值对y作出预测。
2.
将17至19岁的运动员每两岁一组分为7组,每组两人测量其旋转定向能力,以考察年龄(x)对这种运动能力(y)的影响。现得到一组数据如下表
1.
将17至19岁的运动员每两岁一组分为7组,每组两人测量其旋转定向能力,以考察年龄(x)对这种运动能力(y)的影响。现得到一组数据如下表
年龄17 19 21 23 25 27 29
第一人20.4825.1326.1530.026.120.319.35
第二人24.3528.1126.331.426.9225.721.3
试建立关系y(x),并作必要的统计分析。
1. 某厂生产的某产品的销售量与竞争对手的价格x1和本厂的价格x2有关。下表是该产品在10个城市的销售记录。
x1120140190130155175125145180150
x210011090150210150250270300250
y(个)10210012077469326696585
试建立关系y(x1,x2),对结果进行检验。若某城市本厂产品售价160(元),对手售价170(元),预测此产品在该城市的销售量。
解1:
在x-y平面上画散点图,直观地知道y与x大致为线性关系。
用命令polyfit(x,y,1)可得y=140.6194x+27.0269。
作回归分析用命令
[b,bint,r,rint,ststs]=regress(y,x,alpha) 可用help查阅此命令的具体用法
残差及置信区间可以用rcoplot(r,rint)画图
设回归模型为 y=β0+β1x,
在MATLAB命令窗口中键入下列命令进行回归分析
x=0.1:0.01:0.18;x=[x,0.2,0.21,0.23]';
y=[42,41.5,45,45.5,45,47.5,49,55,50,55,55.5,60.5]';
X=[ones(12,1),x];
[b,bint,r,rint,stats]=regress(y,X,0.05);
b,bint,stats,rcoplot(r,rint)
得结果和图
b =
27.0269
140.6194
bint =
22.3226 31.7313
111.7842 169.4546
stats =
0.9219 118.0670 0.0000
结果含义为
β0=27.0269 β1=140.6194
β0的置信区间是 [22.3226,31.7313]
β1的置信区间是 [111.7842,169.4546]
R2=0.9219 F=118.0670, p<10-4.
R是衡量y与x的相关程度的指标,称为相关系数。R越大,x与y关系越密切。通常R大于0.9才认为相关关系成立。
F是一统计指标
p是与F对应的概率,当 p<0.05时,回归模型成立。
此例中 p=0 <10-4<0.05,所以,所得回归模型成立。
观察所得残差分布图,看到第8个数据的残差置信区间不含零点,此点视为异常点,剔除后重新计算。
此时键入:
X(8,=[];
y(8)=[];
[b,bint,r,rint,stats]=regress(y,X);
b,bint,stats,rcoplot(r,rint)
得:
b =
27.0992
137.8085
bint =
23.8563 30.3421
117.8534 157.7636
stats =
0.9644 244.0571 0.0000
可以看到:置信区间缩小;R2、F变大,所以应采用修改后的结果
解2:
在x-y平面上画散点图,直观地知道y与x大致为二次函数关系。
设模型为y=a1x2+a2x+a3
此问题可以利用命令polyfit(x,y,2)来解,也可以象上题一样求解。下面介绍用命令polytool来解。
首先在命令窗口键入
x=17:2:29;x=[x,x];
y=[20.48,25.13,26.15
30,26.1,20.3,19.35,24.35,28.11,26.3,31.4,26.92,25.7,21.3];
polytool(x,y,2)
得到一个交互式窗口
窗口中绿线为拟合曲线、红线为y的置信区间、可通过移动鼠标的十字线或通过在窗口下方输入来设定x值,窗口左边则输出与x对应的y值及y的置信区间。通过左下方的Export下拉菜单可输出回归系数等。更详细的解释可通过help查阅。
解3.这是一个多元回归问题。若设回归模型是线性的,即设y=β0+β1x1+β2x2
那么依然用regress(y,x,alpha)求回归系数。键入
x1=[120,140,190,130,155,175,125,145,180,150];
x2=[100,110,90,150,210,150,250,270,300,250];
y=[102,100,120,77,46,93,26,69,65,85]';
x=[ones(10,1),x1',x2'];
[b,bint,r,rint,stats]=regress(y,x);b,bint,stats,
得
b =
66.5176
0.4139
-0.2698
bint =
-32.5060 165.5411
-0.2018 1.0296
-0.4611 -0.0785
stats =
0.6527 6.5786 0.0247
p=0.0247,若显著水平取0,01,则模型不能用;R2=0.6527较小;β0,β1的置信区间包含零点。因此结果不理想。于是设模型为二次函数。此题设模型为纯二次函数:
y=β0+β1x1+β2x2+β11x12+β22x22
MATLAB提供的多元二项式回归命令为rstool(x,y,model,alpha).其中alpha为显著水平、model在下列模型中选一个:
linear(线性)
purequadratic(纯二次)
interaction(交叉)
quadratic(完全二次)
对此例,在命令窗中键入
x(:,1)=[];
rstool(x,y,'purequadratic')
得到一个对话窗:
其意义与前面的对话窗意义类似。若要回答“本厂售价160,对手售价170,预测该市销售量”的问题,只需在下方窗口中分别肩入160和170,就可在左方窗口中读到答案及其置信区间。下拉菜单Export向工作窗输出数据具体操作为:
弹出菜单,选all,点击确定。此时可到工作窗中读取数据。可读数据包括:beta(回归系数) rmse(剩余标准差) residuals
(残差)本题只要键入
beta,rmse,residuals
得
beta =
-312.5871
7.2701
-1.7337
-0.0228
0.0037
rmse =
16.6436
residuals =
6.6846
-12.6703
-0.2013
6.4855
-19.6533
7.9989
-11.4737
5.4303
-4.9932
22.3926
大家不妨用此命令选其它模型作一个比较。
MATLAB中还包括神经网络工具箱,小波分析工具箱,在网上还可以下载遗传算法工具箱,有兴趣的同学可以借这次机会,结合学习MATLAB,好好学习一下相关理论知识。
展开阅读全文