文档库 最新最全的文档下载
当前位置:文档库 › matlab回归分析方法

matlab回归分析方法

matlab回归分析方法
matlab回归分析方法

第八章 回归分析方法

当人们对研究对象的内在特性和各因素间的关系有比较充分的认识时,一般用机理分析方法建立数学模型。如果由于客观事物内部规律的复杂性及人们认识程度的限制,无法分析实际对象内在的因果关系,建立合乎机理规律的数学模型,那么通常的办法是搜集大量数据,基于对数据的统计分析去建立模型。本章讨论其中用途非常广泛的一类模型——统计回归模型。回归模型常用来解决预测、控制、生产工艺优化等问题。

变量之间的关系可以分为两类:一类叫确定性关系,也叫函数关系,其特征是:一个变量随着其它变量的确定而确定。另一类关系叫相关关系,变量之间的关系很难用一种精确的方法表示出来。例如,通常人的年龄越大血压越高,但人的年龄和血压之间没有确定的数量关系,人的年龄和血压之间的关系就是相关关系。回归分析就是处理变量之间的相关关系的一种数学方法。其解决问题的大致方法、步骤如下: (1)收集一组包含因变量和自变量的数据;

(2)选定因变量和自变量之间的模型,即一个数学式子,利用数据按照最小二乘准则计算模型中的系数;

(3)利用统计分析方法对不同的模型进行比较,找出与数据拟合得最好的模型; (4)判断得到的模型是否适合于这组数据; (5)利用模型对因变量作出预测或解释。

应用统计分析特别是多元统计分析方法一般都要处理大量数据,工作量非常大,所以在计算机普及以前,这些方法大都是停留在理论研究上。运用一般计算语言编程也要占用大量时间,而对于经济管理及社会学等对高级编程语言了解不深的人来说要应用这些统计方法更是不可能。MA TLAB 等软件的开发和普及大大减少了对计算机编程的要求,使数据分析方法的广泛应用成为可能。MATLAB 统计工具箱几乎包括了数理统计方面主要的概念、理论、方法和算法。运用MA TLAB 统计工具箱,我们可以十分方便地在计算机上进行计算,从而进一步加深理解,同时,其强大的图形功能使得概念、过程和结果可以直观地展现在我们面前。本章内容通常先介绍有关回归分析的数学原理,主要说明建模过程中要做的工作及理由,如模型的假设检验、参数估计等,为了把主要精力集中在应用上,我们略去详细而繁杂的理论。在此基础上再介绍在建模过程中如何有效地使用MA TLAB 软件。没有学过这部分数学知识的读者可以不深究其数学原理,只要知道回归分析的目的,按照相应方法通过软件显示的图形或计算所得结果表示什么意思,那么,仍然可以学到用回归模型解决实际问题的基本方法。包括:一元线性回归、多元线性回归、非线性回归、逐步回归等方法以及如何利用MATLAB 软件建立初步的数学模型,如何透过输出结果对模型进行分析和改进,回归模型的应用等。

8.1 一元线性回归分析

回归模型可分为线性回归模型和非线性回归模型。非线性回归模型是回归函数关于未知参数具有非线性结构的回归模型。某些非线性回归模型可以化为线性回归模型处理;如果知道函数形式只是要确定其中的参数则是拟合问题,可以使用MATLAB 软件的curvefit 命令或nlinfit 命令拟合得到参数的估计并进行统计分析。本节主要考察线性回归模型。 8.1.1 一元线性回归模型的建立及其MATLAB 实现

01y x ββε=++ 2~(0,)N εσ

其中01ββ,是待定系数,对于不同的,x y 是相互独立的随机变量。

假设对于x 的n 个值i x ,得到y 的n 个相应的值i y ,确定01ββ,的方法是根据最小二乘准则,要使

2201011

1

(,)[()]n n

i i i i i Q y x ββεββ====-+∑∑

取最小值。利用极值必要条件令

01

0,0Q Q ββ??==??,求01ββ,的估计值01??ββ,,从而得到回归直线01

??y x ββ=+。只不过这个过程可以由软件通过直线拟合完成,而无须进行繁杂的运算。

(1)参数的区间估计

由于我们所计算出的01??ββ,仍然是随机变量,因此要对01

??ββ,取值的区间进行估计,如果区间估计值是一个较短的区间表示模型精度较高。

(2)对误差方差的估计

设?i y

为回归函数的值,i y 为测量值,残差平方和 21

?()n

i i i Q y y

==-∑ 剩余方差2

2

Q

s n =

- (3)线性相关性的检验

由于我们采用的是一元线性回归,因此,如果模型可用的话,应该具有较好的线性关系。反映模型是否具有良好线性关系可通过相关系数R 的值及F 值观察(后面的例子说明)。 (4)一元线性回归的MATLAB 实现

MATLAB 工具箱中用命令regress 实现,其用法是: b=regress(y,x)

[b ,bint , r ,rint , s]=regress(y , x , alpha) 输入y (因变量,列向量)、x (1与自变量组成的矩阵,见下例),alpha 是显著性水平(缺省时默认0.05)。

输出01

??(,)b ββ=,注意:b 中元素顺序与拟合命令polyfit 的输出不同,bint 是01ββ,的置信区间,r 是残差(列向量),rint 是残差的置信区间,s 包含4个统计量:决定系数2

R (相关系数为R );F 值;F(1,n-2)分布大于F 值的概率p ;剩余方差2

s 的值(MATLAB7.0以后版本)。2

s 也可由程序sum(r.^2)/(n-2)计算。

其意义和用法如下:2

R 的值越接近1,变量的线性相关性越强,说明模型有效;如果满足

1(1,2)F n F α--<,则认为变量y 与x 显著地有线性关系,其中1(1,2)F n α--的值可查F 分

布表,或直接用MA TLAB 命令finv(1-α,1, n-2)计算得到;如果p α<表示线性模型可用。这三个值可以相互印证。2

s 的值主要用来比较模型是否有改进,其值越小说明模型精度越高。

8.1.2身高与腿长

例1 测得16名成年女子身高y 与腿长x 所得数据如下:

首先利用命令plot(x,y,'r*')画出散点图,从图形可以看出,这些点大致分布在一条直线的左右,因此,可以考虑一元线性回归。可编制程序如下:

y=[143 145 146 147 149 150 153 154 155 156 157 158 159 160 162 164]; x=[88 85 88 91 92 93 93 95 96 98 97 96 98 99 100 102]; n=16;

X=[ones(n,1),x'];

[b,bint,r,rint,s]=regress(y',X,0.05); b,bint,s,

rcoplot(r,rint) 运行后得到

b = 31.7713 1.2903 bint = 12.3196 51.2229 1.0846 1.4960

s = 0.9282 180.9531 0.0000 3.1277

2R =0.9282,由finv(0.95,1,14)= 4.6001,即1(1,2)F n α--= 4.6001

可以通过残差图发现,第二个数据为奇异数据,去掉该数据后运行后得到 b = 17.6549 1.4363 bint = -0.5986 35.9083 1.2445 1.6281

s = 0.9527 261.6389 0.0000 1.9313

2R =0.9527,由finv(0.95,1,13)= 4.6672,即1(1,2)F n α--= 4.6672

说明模型有效且有改进,因此我们得到身高与腿长的关系17.6549 1.4363y x =+。 当然,也可以利用直线拟合得到同一方程。只不过不能得到参数置信区间和对模型进行检验。拟合程序如下:

y=[143 145 146 147 149 150 153 154 155 156 157 158 159 160 162 164]; x=[88 85 88 91 92 93 93 95 96 98 97 96 98 99 100 102];

a=polyfit(x,y,1) temp=polyval(a,x); plot(x,y,'r*',x,temp)

注意:函数相同,但输出一次函数参数顺序与回归分析(升幂排列)中不同。另一个差别是拟合不能发现奇异数据。

8.2 多元线性回归分析

8.2.1 多元线性回归模型的建模步骤及其MATLAB 实现

如果根据经验和有关知识认为与因变量有关联的自变量不止一个,那么就应该考虑用最小二乘准则建立多元线性回归模型。

设影响因变量y 的主要因素(自变量)有m 个,记1(,,)m x x x =,假设它们有如下

的线性关系式:

011m m y x x βββε

=++

++ , 2

~(0,)

N εσ

如果对变量y 与自变量12,,,m x x x 同时作n 次观察(n>m )得n 组观察值,采用最小

二乘估计求得回归方程

011????k m

y x x βββ=+++.

建立回归模型是一个相当复杂的过程,概括起来主要有以下几个方面工作(1)根据研究目的收集数据和预分析;(2)根据散点图是否具有线性关系建立基本回归模型;(3)模型的精细分析;(4)模型的确认与应用等。

收集数据的一个经验准则是收集的数据量(样本容量)至少应为可能的自变量数目的

6~10倍。在建模过程中首先要根据所研究问题的目的设置因变量,然后再选取与该因变量有统计关系的一些变量作为自变量。我们当然希望选择与问题关系密切的变量,同时这些变量之间相关性不太强,这可以在得到初步的模型后利用MATLAB 软件进行相关性检验。下面通过一个案例探讨MA TLAB 软件在回归分析建模各个环节中如何应用。 多元线性回归的MATLAB 实现

仍然用命令regress(y , X),只是要注意矩阵X 的形式,将通过如下例子说明其用法。

8.2.2 某类研究学者的年薪 1. 问题

例2 工薪阶层关心年薪与哪些因素有关,以此可制定出它们自己的奋斗目标。

某科学基金会希望估计从事某研究的学者的年薪Y 与他们的研究成果(论文、著作等)的质量指标X 1、从事研究工作的时间X 2、能成功获得资助的指标X 3之间的关系,为此按一定的实验设计方法调查了24位研究学者,得到如下数据(i 为学者序号):

表8-2 从事某种研究的学者的相关指标数据

i

1 2 3 4 5 6 7 8 9 10 11 12 1i x 3.5 5.3 5.1 5.8 4.2 6.0 6.8 5.5 3.1 7.2 4.5 4.9 2i x

9

20

18

33

31

13

25

30

5

47

25

11

3i x 6.1 6.4 7.4 6.7 7.5 5.9 6.0 4.0 5.8 8.3 5.0 6.4

i y

33.2 40.3 38.7 46.8 41.4 37.5 39.0 40.7 30.1 52.9 38.2 31.8 i

13 14 15 16 17 18 19 20 21 22 23 24 1i x 8.0 6.5 6.6 3.7 6.2 7.0 4.0 4.5 5.9 5.6 4.8 3.9 2i x 23 35 39 21 7 40 35 23 33 27 34 15 3i x 7.6

7.0

5.0

4.4

5.5

7.0

6.0

3.5

4.9

4.3

8.0

5.8

i y

43.3 44.1 42.5 33.6 34.2 48.0 38.0 35.9 40.4 36.8 45.2 35.1

试建立Y 与123,,X X X 之间关系的数学模型,并得出有关结论和作统计分析。

2. 作出因变量Y 与各自变量的样本散点图

作散点图的目的主要是观察因变量Y 与各自变量间是否有比较好的线性关系,以便选择恰当的数学模型形式。下图分别为年薪Y 与成果质量指标1X 、研究工作时间2X 、获得资助的指标3X 之间的散点图,

subplot(1,3,1),plot(x1,Y,'g*'),% subplot 是MATLAB 中的函数。[1]

使用方法:subplot (m,n,p )或者subplot (m n p )。

subplot 是将多个图画到一个平面上的工具。其中,m 表示是图排成m 行,n 表示图排成n 列,也就是整个figure 中有n 个图是排成一行的,一共m 行,如果m=2就是表示2行图。p 表示图所在的位置,p=1表示从左到右从上到下的第一个位置。

subplot(1,3,2),plot(x2,Y,'k+'), subplot(1,3,3),plot(x3,Y,'ro'),

从图可以看出这些点大致分布在一条直线旁边,因此,有比较好的线性关系,可以采用线性回归。

30

35

40

45

50

55

Y 与x1的散点图 Y 与x2的散点图 Y 与x3的散点图

图8.1 因变量Y 与各自变量的样本散点图

3. 利用MATLAB 统计工具箱得到初步的回归方程

设回归方程为:0112333

?????y x x x ββββ=+++.

建立m-文件输入如下程序数据:

x1=[3.5 5.3 5.1 5.8 4.2 6.0 6.8 5.5 3.1 7.2 4.5 4.9 8.0 6.5 6.5 3.7 6.2 7.0 4.0 4.5 5.9 5.6 4.8 3.9]; x2=[9 20 18 33 31 13 25 30 5 47 25 11 23 35 39 21 7 40 35 23 33 27 34 15];

x3=[6.1 6.4 7.4 6.7 7.5 5.9 6.0 4.0 5.8 8.3 5.0 6.4 7.6 7.0 5.0 4.0 5.5 7.0 6.0 3.5 4.9 4.3 8.0 5.0]; Y=[33.2 40.3 38.7 46.8 41.4 37.5 39.0 40.7 30.1 52.9 38.2 31.8 43.3 44.1 42.5 33.6 34.2 48.0 38.0 35.9 40.4 36.8 45.2 35.1]; n=24; m=3;

X=[ones(n,1),x1',x2',x3'];

[b,bint,r,rint,s]=regress(Y',X,0.05); b,bint,r,rint,s,

运行后即得到结果如表8-3所示。

2R =0.9106 F=67.9195 p<0.0001 2s = 3.0719

计算结果包括回归系数b=(0123,,,ββββ)=(18.0157, 1.0817 , 0.3212 , 1.2835),且置信区间均不包含零点,;残差及其置信区间;统计变量stats ,它包含四个检验统计量:相关系数的平方

2R ,假设检验统计量F,与F 对应的概率p ,2s 的值(7.0以前版本2s 也可由程序

sum(r.^2)/(n-m-1)计算)。因此我们得到初步的回归方程为:

123?18.0157 1.08170.3212 1.2835y

x x x =+++

由结果对模型的判断:

回归系数置信区间不包含零点表示模型较好,残差在零点附近也表示模型较好,接着就是利用检验统计量R,F,p 的值判断该模型是否可用。

(1)相关系数R的评价:一般地,相关系数绝对值在0.8~1范围内,可判断回归自变量与因变量具有较强的线性相关性。本例R的绝对值为0.9542,表明线性相关性较强。 (2)F 检验法:当1(,1)F F m n m α->--,即认为因变量y 与自变量12,,,m x x x 之间显

著地有线性相关关系;否则认为因变量y 与自变量12,,

,m x x x 之间线性相关关系不显著。

本例 F=67.919>10.05(3,20)F -= 3.10 (查F 分布表或输入命令finv(0.95,3,20)计算)。 (3)p 值检验:若p α<(α为预定显著水平),则说明因变量y 与自变量12,,

,m x x x 之

间显著地有线性相关关系。本例输出结果,p<0.0001,显然满足P<α=0.05。

以上三种统计推断方法推断的结果是一致的,说明因变量y 与自变量之间显著地有线性相关关系,所得线性回归模型可用。2

s 当然越小越好,这主要在模型改进时作为参考。

4. 模型的精细分析和改进 (1) 残差分析

残差?(1,2,,)i i i e y y i n =-=,是各观测值i y 与回归方程所对应得到的拟合值?i y

之差,实际上,它是线性回归模型中误差ε的估计值。2

~(0,)N εσ即有零均值和常值方差,利用残差的这种特性反过来考察原模型的合理性就是残差分析的基本思想。利用MA TLAB

进行残差分析则是通过残差图或时序残差图。残差图是指以残差为纵坐标,以其他指定的量为横坐标的散点图。主要包括:(1)横坐标为观测时间或观测值序号;(2)横坐标为某个自变量的观测值;(3)横坐标为因变量的拟合值。通过观察残差图,可以对奇异点进行分析,还可以对误差的等方差性以及对回归函数中是否包含其他自变量、自变量的高次项及交叉项等问题给出直观的检验。

以观测值序号为横坐标,残差为纵坐标所得到的散点图称为时序残差图,画出时序

残差图的MATLAB 语句为rcoplot(r,rint)(图8.2)。可以清楚看到残差大都分布在零的附近,因此还是比较好的 ,不过第4、12、19这三个样本点的残差偏离原点较远,如果作为奇异点看待,去掉后重新拟合,则得回归模型为:

123?19.08080.86160.3176 1.3463y

x x x =+++

且回归系数的置信区间更小均不包含原点,统计变量stats 包含的三个检验统计量:相关系数的平方2

R ,假设检验统计量F,概率P ,分别为:0.9533 ; 115.5586 ; 0.0000 ,比较可知R ,F 均增加模型得到改进。

图8.2 时序残差图

(2) 变量间的交互作用讨论

变量间的交互作用包括:不同自变量之间的交互作用以及同一变量的自相关性。

不同自变量之间的交互作用:有时,在实验中不仅单因素对指标有影响,而且因素间还会联合起来对指标产生影响,常称这种联合作用为交互作用。处理两个因素间交互作用的一个简单办法是加入这两个自变量的乘积项。本文案例如果加入交互项则为:

0112333412513623

????????y x x x x x x x x x βββββββ=++++++

用表8.2的数据,利用MA TLAB 统计工具箱得到回归系数分别为:27.0727 ,1.1147,

-0.0215 ,-0.1843 ,0.0033 ,-0.0054 ,0.0511 。但它们的置信区间均包含原点,其他指标也不理想,因此,本例中其交互作用并不显著,该模型不如前面两个模型好。

自相关性的诊断和处理:若数据是以时间为序的,称为时间序列数据。在时间序列数据中,同一变量的顺序观测值之间出现的相关现象称为自相关。一旦数据中存在这种自相关序列,如果仍采用普通的回归模型直接处理,将产生不良后果,使预测失去意义。自相关的诊断主要有图示检验法、相关系数法和DW 检验法。图示检验法是通过绘制残差t e 散点图观察,如果散布点1(,),2,3,

,t t e e t n -=大部分点落在第Ⅰ,Ⅲ象限,表明存在着正的序列

相关;如果大部分点落在第Ⅱ,Ⅳ象限,表明存在着负的序列相关。对DW 检验法可以利用MA TLAB 软件编程计算统计量:

1??2(1),n

t t e e

DW ρ

ρ-≈-=∑

然后查阅DW 检验上下界表,以决定模型的自相关状态。

当一个回归模型存在序列相关性时,首先要查明序列相关产生的原因。如果是回归模型选用不当,则应改用适当的回归模型;如果是缺少重要的自变量,则应增加自变量;如果以上方法都不能消除序列相关性,则需要采用差分法、迭代法等处理,更详细内容参见相关概率统计参考文献。

8.2.3 逐步回归方法建模

逐步回归就是一种从众多自变量中有效地选择重要变量的方法。逐步回归的基本思路是,先确定一个包含若干自变量的初始集合,然后每次从集合外的变量中引入一个对因变量影响最大的,再对集合中的变量进行检验,从变得不显著的变量中移出一个影响最小的,依此进行,直到不能引入和移出为止。引入和移出都以给定的显著性水平为标准。

MATLAB 统计工具箱中逐步回归的命令是stepwise ,它提供了一个人机交互式画面,通过此工具可以自由地选择变量进行统计分析。该命令的用法是:

stepwise(X , Y , inmodel , alpha)

其中X 是自变量数据,排成n m ?矩阵(m 为自变量个数,n 为每个变量的数据量),Y 是因变量数据,排成1n ?向量,inmodel 是自变量初始集合的指标,缺省时为全部自变量,alpha 为显著水平,缺省时为0.05。

运行stepwise 命令时产生图形窗口:Stepwise Plot , Stepwise Table , Stepwise History.当鼠标移到图形某个区域时,鼠标点击后产生交互作用。Stepwise Plot 窗口中的虚线表示回归系

数的置信区间包含零点,即该回归系数与零无显著差异,一般应将该变量移去;实线则表明该回归系数与零有显著差异,应保留在模型中(蓝色表示该变量已进入模型,红色表示该变量已移出模型)。引入和移出变量还可参考Stepwise History 窗口中剩余标准差RMSE 是否在下降,剩余标准差RMSE 最小的就是最好的模型。Stepwise Table 窗口中列出了一个统计表,包括回归系数及其置信区间,以及模型的统计量剩余标准差RMSE 、相关系数R-square 、F 值、与F 对应的概率。

关于本节案例2,如果引入新的自变量412513623,,x x x x x x x x x === . 也可以采用逐步回归法解决,源程序如下:

A=[3.5 5.3 5.1 5.8 4.2 6.0 6.8 5.5 3.1 7.2 4.5 4.9 8.0 6.5 6.5 3.7 6.2 7.0 4.0 4.5 5.9 5.6 4.8 3.9;9 20 18 33 31 13 25 30 5 47 25 11 23 35 39 21 7 40 35 23 33 27 34 15;6.1 6.4 7.4 6.7 7.5 5.9 6.0 4.0 5.8 8.3 5.0 6.4 7.6 7.0 5.0 4.0 5.5 7.0 6.0 3.5 4.9 4.3 8.0 5.0]';

Y=[33.2 40.3 38.7 46.8 41.4 37.5 39.0 40.7 30.1 52.9 38.2 31.8 43.3 44.1 42.5 33.6 34.2 48.0 38.0 35.9 40.4 36.8 45.2 35.1]'; x1=A(:,1); x2=A(:,2); x3=A(:,3); x4=x1.*x2; x5=x1.*x3; x6=x2.*x3;

X=[A,x4,x5,x6]; stepwise(X,Y)

运行并按上述步骤操作后可以得到本文前面线性回归相同的结论,即不含交互项的模型是最好的。在此只介绍操作过程,其交互界面,只要在MATLAB 软件上一试便知。 8.2.4 多项式回归

多项式回归仍然属于多元线性回归,可以是一元多项式回归或多元多项式回归。 一元多项式回归模型的一般形式为

01m m y x x βββε=++++

用MA TLAB 求解一元多项式回归,除了使用命令polyfit(x,y,m)外,还可以使用如下命令: Polytool(x,y,m,alpha)

输入x,y,m 同命令polyfit ,alpha 是显著性水平(默认0.05),则输出一个交互式画面,画面显示回归曲线及其置信区间,通过图左下方的export 下拉式菜单,还可以输出回归系数估计值及其置信区间、残差等。

下面通过一个用多元多项式回归的实例说明什么时候用多项式回归以及如何通过MATLAB 软件进行处理。

例3 为了了解人口平均预期寿命与人均国内生产总值和体质得分的关系,我们查阅了国家统计局资料,北京体育大学出版社出版的《2000国民体质监测报告》,表8-4是我国大陆31个省市的有关数据。我们希望通过这几组数据考察它们是否具有良好的相关关系,并通过它们的关系从人均国内生产总值(可以看作反映生活水平的一个指标)、体质得分预测其寿命可能的变化范围。体质是指人体的质量,是遗传性和获得性的基础上表现出来的人体形态结构,生理机能和心理因素综合的、相对稳定的特征。体质是人的生命活动和工作能力的物质基础。它在形成、发展和消亡过程中,具有明显的个体差异和阶段性。中国体育科学

学会体质研究会研究表明,体质应包括身体形态发育水平、生理功能水平、身体素质和运动能力发展水平、心理发育水平和适应能力等五个方面。目前,体质的综合评价主要是形态、机能和身体素质三类指标按一定的权重进行换算而得。

模型的建立和求解 作表8-4数据12(,),(,)x y x y 的散点图如图8.3

图8.3 预期寿命与人均国内生产总值和体质得分的散点图

从图8.3可以看出人口预期寿命y 与体质得分2x 有较好的线性关系,y 与人均国内生产总值1x 的关系难以确定,我们建立二次函数的回归模型。

一般的多元二项式回归模型可表为 0111,m m jk j k j k m

y x x x x ββββε≤≤=++

++

+∑

MATLAB 统计工具箱提供了一个很方便的多元二项式回归命令:

Rstool(x,y, 'model',alpha)

输入x 为自变量(n ×m 矩阵),y 为因变量(n 维向量),alpha 为显著水平,model 从下列4个模型中选择一个:

linear (只包含线性项)

purequadratic (包含线性项和纯二次项) interaction (包含线性项和纯交互项) quadratic (包含线性项和完全二次项) 输出一个交互式画面,对例3,编程如下:

y=[71.54 73.92 73.27 71.20 73.91 72.54 70.66 71.85 71.08 71.29,74.70 65.49 68.95 73.34 65.96 72.37 70.07 72.55 71.65 71.73,73.10 67.47 69.87 67.41 78.14 76.10 74.91 72.91 70.17 66.03 64.37];

x1=[12857 24495 24250 10060 29931 18243 10763 9907 13255 9088 33772 8744 11494 20461 5382 19070 10935 22007 13594 11474 14335 7898 17717 15205 70622 47319 40643 11781 10658 11587 9725];

x2=[66.165 71.25 70.135 65.125 69.99 65.765 67.29 67.71 66.525 67.13,69.505 56.775 66.01 67.97 62.9 66.1 64.51 68.385 66.205 65.77,67.065 63.605 64.305 60.485 70.29 69.345 68.415 66.495 65.765 63.28 62.84]; x=[x1',x2'];

rstool(x,y','purequadratic')

得到一个如图8.4的交互式画面

图8.4 预期寿命与人均国内生产总值和体质得分的一个交互式画面

左边一幅图形是2x 固定时的曲线1()y x 及其置信区间,右边一幅图形是1x 固定时的曲线

2()y x 及其置信区间。移动鼠标可改变1x ,2x 的值,同时图左边给出y 的预测值及其置信

区间。如输入1x =128757,2x =66.165,则y =70.6948,其置信区间70.6948±1.1079。 图的左下方有两个下拉式菜单,上面的菜单Export 用于输出数据(包括:回归系数parameters,残差residuals,剩余标准差RMSE 等), 在MA TLAB 工作空间中得到有关数据。通过下面的菜单在上述4个模型中变更选择,最后确定RMSE 值较小的模型。例3则是包含线性项和完全二次项(quadratic )的模型最佳,即

22

011223124152y x x x x x x ββββββε=++++++

剩余标准差为1.2622,因此,所得回归模型为:

5922

121212195.360.0045 5.5753 6.733810 3.3529100.055556y x x x x x x --=+--?+?+

利用此模型我们可以根据国内生产总值及体质得分,预测寿命。

8.3 非线性回归分析

8.3.1 非线性最小二乘拟合

线性最小二乘拟合与线性回归中的“线性”并非指y 与x 的关系,而是指y 是系数

01,ββ或01(,,

,)m ββββ=的线性函数。拟合如201y x ββ=+的函数仍然是最小二乘拟

合;如果拟合如10x

y e

ββ=的曲线,y 对01,ββ是非线性的,但取对数后ln y 对系数01

,ββ是线性的,属于可化为线性回归的类型。下面讨论非线性拟合的情形。

非线性最小二乘拟合问题的提法是:已知模型

101(,),(,,),(,,,)m k y f x x x x βββββ===,

其中f 对β是非线性的,为了估计参数β,收集n 个独立观测数据

1(,),(,

)i i i i im x y x x x =(1,,),i n n m =>。记拟合误差()(,)i i i y f x εββ=-,求β使误

差的平方和

221

1

()()[(,)]n n

i i i i i Q y f x βεββ====-∑∑

最小。

作为无约束非线性规划的特例,解非线性最小二乘拟合可用MA TLAB 优化工具箱命令lsqnonlin 和lsqcurvefit 。 8.3.2 非线性回归模型

非线性回归模型记作

101(,),(,

,),(,,,)m k y f x x x x βεββββ=+==

其中f 对回归系数β是非线性的,2

~(0,)N εσ。求得回归系数β的最小二乘估计。 MATLAB 统计工具箱中非线性回归的命令是: [b,R,J]=nlinfit(x,y, 'model',bo)

输入x 是自变量数据矩阵,每列一个向量;y 是因变量数据向量;model 是模型的函数名(M 文件),形式为(,)y f b x =,b 为待估系数β;b0是回归系数β的初值。输出b 是β的估计值,R 是残差,J 是用于估计预测误差的Jacobi 矩阵。这个命令是依据高斯—牛顿法求解的。

将上面的输出作为命令 Bi=nlparci(b,R,J) 的输入,得到的bi 是回归系数β的置信区间。用命令

nlintool(x,y, 'model',b)

可以得到一个交互式画面,其内容和用法与多项式回归的Polytool 类似。 例4 酶促反应速度与底物浓度

酶促反应动力学简称酶动力学,主要研究酶促反应速度与底物(即反应物)浓度以及其它因素的关系。在底物浓度很低时酶促反应是一级反应;当底物浓度处于中间范围时,是混合级反应;当底物浓度增加时,向零级反应过渡。某生化系学生为了研究嘌呤霉素在某项酶促反应中对反应速度与底物浓度之间关系的影响,设计了两个实验,一个实验中所使用的酶是经过嘌呤霉素处理的,而另一个实验所用的酶是未经嘌呤霉素处理的。所得实验数据见表8-5。试根据问题的背景和这些数据建立一个合适的数学模型,来反映这项酶促反应的速度与底物浓度以及嘌呤霉素处理与否之间的关系。

表8-5 嘌呤霉素实验中的反应速度与底物浓度数据

分析与假设

记酶促反应的速度为y ,底物浓度为x ,二者之间的关系写作(,)y f x β=,其中β为参数(β可为一向量)。由酶促反应的基本性质可知,当底物浓度很低时酶促反应是一级反应,此时反应速度大致与底物浓度成正比;而当底物浓度很大,渐近饱和时,反应速度将趋于一个固定值(即零级反应)。下面的两个简单模型具有这种性质:

Michaelis-Menten 模型

(,)y f x x

x

12β=β=

β+

指数增长模型

(,)(1)x y f x e 2-β1=β=β-

非线性模型的求解

首先作出给出的经过嘌呤霉素处理和未经处理的反应速度与底物浓度的散点图,可以看出,上述两个模型与实际数据得到的散点图是大致符合的。

我们将主要对前一模型即Michaelis-Menten 模型进行详细的分析。首先对经过嘌呤酶素处理的实验数据进行分析,在此基础上,再来讨论是否有更一般的模型来统一刻画处理前后的数据,进而揭示其中的联系。

我们用非线性回归的方法直接估计模型的参数12ββ,,模型的求解可利用MATLAB 统计工具箱中的命令进行,使用格式为:

[beta,R,J]=nlinfit(x,y,'model',beta0)

其中输入x 为自变量数据矩阵,每列一个变量;y 为因变量数据向量;model 为模型的M 文件名,M 函数形式为y=f (beta,x),beta 为待估计参数;beta0为给定的参数初值。输出beta 为参数估计值,R 为残差,J 为用于估计预测误差的Jacobi 矩阵。参数beta 的置信区间用命令 nlparci(beta,R,J)得到。

首先建立函数M 文件huaxue.m ,非线性模型参数估计的源程序如下: x=[0.02 0.02 0.06 0.06 0.11 0.11 0.22 0.22 0.56 0.56 1.10 1.10];

y=[76 47 97 107 123 139 159 152 191 201 207 200]; beta0=[195.8027 0.04841];

[beta,R,J]=nlinfit(x,y,'huaxue',beta0); betaci=nlparci(beta,R,J); beta,betaci

yy=beta(1)*x./(beta(2)+x); plot(x,y,'o',x,yy,'m+'),pause nlintool(x,y,'huaxue',beta) 得到的数值结果见表8-6。

Nlintool 用于给出一个交互式画面,可以得到因变量y 的预测值和预测区间,左下方的Export 可向工作区传送剩余标准差等数据。

从上面的结果可以知道,对经过嘌呤霉素处理的实验数据,在用Michaelis-Menten 模型进行回归分析时,最终反应速度为1β=212.6818,反应的半速度点(达到最终反应速度的一半时的底物浓度x 值)恰为2β=0.06412。

混合反应模型

由酶动力学知识我们知道,酶促反应的浓度依赖于底物浓度,并且可以假定,嘌呤霉素的处理会影响最终反应速度参数1β,而基本上不影响半速度参数2β.表8-5的数据也印证了这种看法。Michaelis-Menten 模型的形式可以分别描述经过嘌呤霉素处理和未处理的反应速度与底物浓度的关系(两个模型的参数β会不同),为了在同一个模型中考虑嘌呤霉素处理的影响,我们采用对未经嘌呤霉素处理的模型附加增量的方法,考察如下的混合反应模型:

11212221

(,)))y f x x x x x +(β=β=

(βγ+γ+

其中自变量

1

x 为底物浓度, 2

x 为一示性变量(0-1变量), 用来表示是否经嘌呤霉素处理,

2

x =1表示经过处理, 2

x =0表示未经处理;参数1

β是未处理的反应的最终反应速度,1

γ是经

处理后最终反应速度的增长值, 2β是未经处理的反应的半速度点, 2γ是经处理后反应的半速度点的增长值。

混合模型的求解和分析

为了给出初始迭代值,从实验数据我们注意到,未经处理的反应速度的最大实验值为

160,经过处理的最大实验值为207,于是可取参数初值00

11170,60βγ==;又从数据可大

致估计未经处理的半速度点约为0.05,经过处理的半速度点约为0.06,我们取

00

220.05,0.01βγ==。

建立函数M 文件model.m function yhat=model(beta0,x) a=beta0(1); b=beta0(2); c=beta0(3); d=beta0(4); x1=x(:,1); x2=x(:,2);

yhat=((a+c*x2).*x1)./(b+d*x2+x1); 建立M 文件meicu.m

x=[0.02 0.02 0.06 0.06 0.11 0.11 0.22 0.22 0.56 0.56 1.10 1.10 0.02 0.02 0.06 0.06 0.11 0.11 0.22 0.22 0.56 0.56 1.10 1.10; 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0]';

y=[76 47 97 107 123 139 159 152 191 201 207 200 67 51 84 86 98 115 131 124 144 158 160 170]';

beta0=[170 0.05 60 0.01];

[beta,R,J]=nlinfit(x,y,'model',beta0); betaci=nlparci(beta,R,J); beta,betaci a=beta(1); b=beta(2); c=beta(3); d=beta(4); x1=x(:,1); x2=x(:,2);

yy=((a+c*x2).*x1)./(b+d*x2+x1);

%yy=((beta(1,:)+beta(3,:)*x(2)).*x(1))./(beta(2,:)+beta(4,:)*x(2)+x(1)); plot(x1,y,'o',x1,yy,'+'),pause nlintool(x,y,'model',beta) 运行后即得如下表8-7结果

表8-7 混合模型参数的估计结果

从表8-7可以发现,2γ的置信区间包含零点,这表明参数2γ对因变量y 的影响并不显著,即:嘌呤霉素的作用不影响半速度参数。因此,可以考虑下面的模型:

21

1

()(,)x x y f x x 112β+γ=β=

β+

可以采用类似方法计算和分析,所得结果统计指标差不多,不过显然最后一个模型具有更为简洁的形式。

matlab多元线性回归模型

云南大学数学与统计学实验教学中心 实验报告 一、实验目的 1.熟悉MATLAB的运行环境. 2.学会初步建立数学模型的方法 3.运用回归分析方法来解决问题 二、实验内容 实验一:某公司出口换回成本分析 对经营同一类产品出口业务的公司进行抽样调查,被调查的13家公司,其出口换汇成本与商品流转费用率资料如下表。试分析两个变量之间的关系,并估计某家公司商品流转费用率是6.5%的出口换汇成本. 实验二:某建筑材料公司的销售量因素分析 下表数据是某建筑材料公司去年20个地区的销售量(Y,千方),推销开支、实际帐目数、同类商品

竞争数和地区销售潜力分别是影响建筑材料销售量的因素。1)试建立回归模型,且分析哪些是主要的影响因素。2)建立最优回归模型。 提示:建立一个多元线性回归模型。

三、实验环境 Windows 操作系统; MATLAB 7.0. 四、实验过程 实验一:运用回归分析在MATLAB 里实现 输入:x=[4.20 5.30 7.10 3.70 6.20 3.50 4.80 5.50 4.10 5.00 4.00 3.40 6.90]'; X=[ones(13,1) x]; Y=[1.40 1.20 1.00 1.90 1.30 2.40 1.40 1.60 2.00 1.00 1.60 1.80 1.40]'; plot(x,Y,'*'); [b,bint,r,rint,stats]=regress(Y,X,0.05); 输出: b = 2.6597 -0.2288 bint = 1.8873 3.4322 -0.3820 -0.0757 stats = 0.4958 10.8168 0.0072 0.0903 即==1,0?6597.2?ββ,-0.2288,0?β的置信区间为[1.8873 3.4322],1,?β的置信区间为[-0.3820 -0.0757]; 2r =0.4958, F=10.8168, p=0.0072 因P<0.05, 可知回归模型 y=2.6597-0.2288x 成立. 1 1.5 2 2.5 散点图 估计某家公司商品流转费用率是6.5%的出口换汇成本。将x=6.5代入回归模型中,得到 >> x=6.5; >> y=2.6597-0.2288*x y = 1.1725

matlab建立多元线性回归模型并进行显著性检验及预测问题

matlab建立多元线性回归模型并进行显着性检验及预测问题 例子; x=[143 145 146 147 149 150 153 154 155 156 157 158 159 160 162 164]'; X=[ones(16,1) x]; 增加一个常数项Y=[88 85 88 91 92 93 93 95 96 98 97 96 98 99 100 102]'; [b,bint,r,rint,stats]=regress(Y,X) 得结果:b = bint = stats = 即对应于b的置信区间分别为[,]、[,]; r2=, F=, p= p<, 可知回归模型y=+ 成立. 这个是一元的,如果是多元就增加X的行数! function [beta_hat,Y_hat,stats]=regress(X,Y,alpha) % 多元线性回归(Y=Xβ+ε)MATLAB代码 %? % 参数说明 % X:自变量矩阵,列为自变量,行为观测值 % Y:应变量矩阵,同X % alpha:置信度,[0 1]之间的任意数据 % beta_hat:回归系数 % Y_beata:回归目标值,使用Y-Y_hat来观测回归效果 % stats:结构体,具有如下字段 % =[fV,fH],F检验相关参数,检验线性回归方程是否显着 % fV:F分布值,越大越好,线性回归方程越显着 % fH:0或1,0不显着;1显着(好) % =[tH,tV,tW],T检验相关参数和区间估计,检验回归系数β是否与Y有显着线性关系 % tV:T分布值,beta_hat(i)绝对值越大,表示Xi对Y显着的线性作用% tH:0或1,0不显着;1显着 % tW:区间估计拒绝域,如果beta(i)在对应拒绝区间内,那么否认Xi对Y显着的线性作用 % =[T,U,Q,R],回归中使用的重要参数 % T:总离差平方和,且满足T=Q+U % U:回归离差平方和 % Q:残差平方和 % R∈[0 1]:复相关系数,表征回归离差占总离差的百分比,越大越好% 举例说明 % 比如要拟合y=a+b*log(x1)+c*exp(x2)+d*x1*x2,注意一定要将原来方程线化% x1=rand(10,1)*10; % x2=rand(10,1)*10; % Y=5+8*log(x1)+*exp(x2)+*x1.*x2+rand(10,1); % 以上随即生成一组测试数据 % X=[ones(10,1) log(x1) exp(x2) x1.*x2]; % 将原来的方表达式化成Y=Xβ,注意最前面的1不要丢了

多元回归分析matlab剖析

回归分析MATLAB 工具箱 一、多元线性回归 多元线性回归:p p x x y βββ+++=...110 1、确定回归系数的点估计值: 命令为:b=regress(Y , X ) ①b 表示???? ?? ????????=p b βββ?...??10 ②Y 表示????????????=n Y Y Y Y (2) 1 ③X 表示??? ??? ????? ???=np n n p p x x x x x x x x x X ...1......... .........1 (12) 1 22221 11211 2、求回归系数的点估计和区间估计、并检验回归模型: 命令为:[b, bint,r,rint,stats]=regress(Y ,X,alpha) ①bint 表示回归系数的区间估计. ②r 表示残差. ③rint 表示置信区间. ④stats 表示用于检验回归模型的统计量,有三个数值:相关系数r 2、F 值、与F 对应的概率p. 说明:相关系数2 r 越接近1,说明回归方程越显著;)1,(1-->-k n k F F α时拒绝0H ,F 越大,说明回归方程越显著;与F 对应的概率p α<时拒绝H 0,回归模型成立. ⑤alpha 表示显著性水平(缺省时为0.05) 3、画出残差及其置信区间. 命令为:rcoplot(r,rint) 例1.如下程序. 解:(1)输入数据. x=[143 145 146 147 149 150 153 154 155 156 157 158 159 160 162 164]'; X=[ones(16,1) x]; Y=[88 85 88 91 92 93 93 95 96 98 97 96 98 99 100 102]'; (2)回归分析及检验. [b,bint,r,rint,stats]=regress(Y ,X) b,bint,stats 得结果:b = bint =

Matlab回归分析

1、 考察温度x 对产量y 的影响,测得下列10组数据: 区间(置信度95%). x=[20:5:65]'; Y=[13.2 15.1 16.4 17.1 17.9 18.7 19.6 21.2 22.5 24.3]'; X=[ones(10,1) x]; plot(x,Y,'r*'); [b,bint,r,rint,stats]=regress(Y,X); b,bint,stats; rcoplot(r,rint) %残差分析,作残差图 结果: b = 9.1212 0.2230 bint = 8.0211 10.2214 0.1985 0.2476 stats = 0.9821 439.8311 0.0000 0.2333 即01 ??9.1212,0.2230ββ==;0?β的置信区间为[8.0211,10.2214]1?β的置信区间为[0.1985,0.2476]; 2r =0.9821 , F=439.831, p=0.0000 ,p<0.05, 可知回归模型 y=9.1212+0.2230x 成立. 将x=42带入得到18.4872.

从残差图可以看出,所有数据的残差离零点均较近,且残差的置信区间均包含零点,这说明回归模型y=9.1212+0.2230x能较好的符合原始数据。 2 某零件上有一段曲线,为了在程序控制机床上加工这一零件,需要求这段曲线的解析表达式,在曲线横坐标xi处测得纵坐标yi共11对数据如下: 求这段曲线的纵坐标y关于横坐标x的二次多项式回归方程。 t=0:2:20; s=[0.6 2.0 4.4 7.5 11.8 17.1 23.3 31.2 39.6 49.7 61.7]; T=[ones(11,1) ,t',(t.^2)']; [b,bint,r,rint,stats]=regress(s',T); b,stats; Y=polyconf(p,t,S) plot(t,s,'k+',t,Y,'r') %预测及作图 b = 1.0105 0.1971 0.1403

MATLAB---回归预测模型

MATLAB---回归预测模型 Matlab统计工具箱用命令regress实现多元线性回归,用的方法是最小二乘法,用法是: b=regress(Y,X) [b,bint,r,rint,stats]=regress(Y,X,alpha) Y,X为提供的X和Y数组,alpha为显著性水平(缺省时设定为0.05),b,bint 为回归系数估计值和它们的置信区间,r,rint为残差(向量)及其置信区间,stats是用于检验回归模型的统计量,有四个数值,第一个是R2,第二个是F,第三个是与F对应的概率 p ,p <α拒绝 H0,回归模型成立,第四个是残差的方差 s2 。 残差及其置信区间可以用 rcoplot(r,rint)画图。 例1合金的强度y与其中的碳含量x有比较密切的关系,今从生产中收集了一批数据如下表 1。 先画出散点图如下: x=0.1:0.01:0.18; y=[42,41.5,45.0,45.5,45.0,47.5,49.0,55.0,50.0]; plot(x,y,'+') 可知 y 与 x 大致上为线性关系。

设回归模型为 y =β 0 +β 1 x 用regress 和rcoplot 编程如下: clc,clear x1=[0.1:0.01:0.18]'; y=[42,41.5,45.0,45.5,45.0,47.5,49.0,55.0,50.0]'; x=[ones(9,1),x1]; [b,bint,r,rint,stats]=regress(y,x); b,bint,stats,rcoplot(r,rint) 得到 b =27.4722 137.5000 bint =18.6851 36.2594 75.7755 199.2245 stats =0.7985 27.7469 0.0012 4.0883 即β 0=27.4722 β 1 =137.5000 β0的置信区间是[18.6851,36.2594], β1的置信区间是[75.7755,199.2245]; R2= 0.7985 , F = 27.7469 , p = 0.0012 , s2 =4.0883 。 可知模型(41)成立。 观察命令 rcoplot(r,rint)所画的残差分布,除第 8 个数据外其余残差的置信区间均包含零点第8个点应视为异常点,

matlab与统计回归分析 (1)

一Matlab作方差分析 方差分析是分析试验(或观测)数据的一种统计方法。在工农业生产和科学研究中,经常要分析各种因素及因素之间的交互作用对研究对象某些指标值的影响。在方差分析中,把试验数据的总波动(总变差或总方差)分解为由所考虑因素引起的波动(各因素的变差)和随机因素引起的波动(误差的变差),然后通过分析比较这些变差来推断哪些因素对所考察指标的影响是显著的,哪些是不显著的。 【例1】(单因素方差分析)一位教师想要检查3种不同的教学方法的效果,为此随机地选取水平相当的15位学生。把他们分为3组,每组5人,每一组用一种方法教学,一段时间以后,这位教师给15位学生进行统考,成绩见下表1。问这3种教学方法的效果有没有显著差异。 表1 学生统考成绩表 方法成绩 甲75 62 71 58 73 乙71 85 68 92 90 丙73 79 60 75 81 Matlab中可用函数anova1(…)函数进行单因子方差分析。 调用格式:p=anova1(X) 含义:比较样本m×n的矩阵X中两列或多列数据的均值。其中,每一列表示一个具有m 个相互独立测量的独立样本。 返回:它返回X中所有样本取自同一总体(或者取自均值相等的不同总体)的零假设成立的概率p。

解释:若p值接近0(接近程度有解释这自己设定),则认为零假设可疑并认为至少有一个样本均值与其它样本均值存在显著差异。 Matlab程序: Score=[75 62 71 58 73;81 85 68 92 90;73 79 60 75 81]’; P=anova1(Score) 输出结果:方差分析表和箱形图 ANOVA Table Source SS df MS F Prob>F Columns 604.9333 2 302.4667 4.2561 0.040088 Error 852.8 12 71.0667 Total 1457.7333 14 由于p值小于0.05,拒绝零假设,认为3种教学方法存在显著差异。 例2(双因素方差分析)为了考察4种不同燃料与3种不同型号的推进器对火箭射程(单位:海里)的影响,做了12次试验,得数据如表2所示。 表2 燃料-推进器-射程数据表 推进器1 推进器2 推进器3 燃料1 58.2 56.2 65.3 燃料2 49.1 54.1 51.6 燃料3 60.1 70.9 39.2 燃料4 75.8 58.2 48.7 在Matlab中利用函数anova2函数进行双因素方差分析。 调用格式:p=anova2(X,reps)

Matlab多变量回归分析教程

本次教程的主要内容包含: 一、多元线性回归 2# 多元线性回归:regress 二、多项式回归 3# 一元多项式:polyfit或者polytool 多元二项式:rstool或者rsmdemo 三、非线性回归 4# 非线性回归:nlinfit 四、逐步回归 5# 逐步回归:stepwise 一、多元线性回归 多元线性回归: 1、b=regress(Y, X ) 确定回归系数的点估计值

2、[b, bint,r,rint,stats]=regress(Y,X,alpha)求回归系数的点估计和区间估计、并检验回归模型 ①bint表示回归系数的区间估计. ②r表示残差 ③rint表示置信区间 ④stats表示用于检验回归模型的统计量,有三个数值:相关系数r2、F值、与F对应的概率p 说明:相关系数r2越接近1,说明回归方程越显著;时拒绝H0,F越大,说明回归方程越显著;与F对应的概率p<α时拒绝H0 ⑤alpha表示显著性水平(缺省时为0.05) 3、rcoplot(r,rint)画出残差及其置信区间 具体参见下面的实例演示 4、实例演示,函数使用说明 (1)输入数据 1.>>x=[143 145 146 147 149 150 153 154 155 156 157 158 159 160 162 164]'; 2.>>X=[ones(16,1) x]; 3.>>Y=[88 85 88 91 92 93 93 95 96 98 97 96 98 99 100 102]'; 复制代码 (2)回归分析及检验 1. >> [b,bint,r,rint,stats]=regress(Y,X) 2. 3. b = 4. 5. -1 6.0730 6.0.7194 7. 8. 9.bint =

matlab中回归分析实例分析

1.研究科研人员的年工资与他的论文质量、工作年限、获得资助指标之间的关系.24位科研人员的调查数据(ex81.txt): 设误差ε~(0,σ 2 ), 建立回归方程; 假定某位人员的观测值 , 预测年工资及置信度为 95%的置信区间. 程序为:A=load('ex81.txt') Y=A(:,1) X=A(1:24,2:4) xx=[ones(24,1) X] b = regress(Y,X) Y1=xx(:,1:4)*b x=[1 5.1 20 7.2] s=sum(x*b) 调出Y 和X 后,运行可得: b = 17.8469 1.1031 0.3215 1.2889 010203(,,)(5.1,20,7.2)x x x =

x = 1.0000 5.1000 20.0000 7.2000 s = 39.1837 所以,回归方程为:Y= 17.8469+1.1031X1+0.3215X2+1.2889X3+ε 当 时,Y=39.1837 2、 54位肝病人术前数据与术后生存时间(ex82.txt,指标依次为凝血值,预后指数,酵素化验值,肝功能化验值,生存时间). (1) 若用线性回归模型拟合, 考察其各假设合理性; (2) 对生存是时间做对数变换,用线性回归模型拟合, 考察其各假设合理性; (3) 做变换 用线性回归模型拟合, 考察其各假设合理性; (4) 用变量的选择准则,选择最优回归方程 010203 (,,)(5.1,20,7.2)x x x =0.0710.07 Y Z -=

(5)用逐步回归法构建回归方程 程序为:A=load('ex82.txt') Y=A(:,5) X=A(1:54,1:4) xx=[ones(54,1) X] [b,bint,r,rint,stats]=regress(Y,xx) 运行结果为: b = -621.5976 33.1638 4.2719 4.1257 14.0916 bint = -751.8189 -491.3762 19.0621 47.2656 3.1397 5.4040 3.0985 5.1530 -11.0790 39.2622

Matlab实现多元回归实例

Matlab 实现多元回归实例 (一)一般多元回归 一般在生产实践和科学研究中,人们得到了参数(),,n x x x =???1和因变量y 的数据,需要求出关系式()y f x =,这时就可以用到回归分析的方法。如果只考虑 f 是线性函数的情形,当自变量只有一个时,即,(),,n x x x =???1中n =1时,称 为一元线性回归,当自变量有多个时,即,(),,n x x x =???1中n ≥2时,称为多元线性回归。 进行线性回归时,有4个基本假定: ① 因变量与自变量之间存在线性关系; ② 残差是独立的; ③ 残差满足方差奇性; ④ 残差满足正态分布。 在Matlab 软件包中有一个做一般多元回归分析的命令regeress ,调用格式如下: [b, bint, r, rint, stats] = regress(y,X,alpha) 或者 [b, bint, r, rint, stats] = regress(y,X) 此时,默认alpha = 0.05. 这里,y 是一个1n ?的列向量,X 是一个()1n m ?+的矩阵,其中第一列是全1向量(这一点对于回归来说很重要,这一个全1列向量对应回归方程的常数项),一般情况下,需要人工造一个全1列向量。回归方程具有如下形式: 011m m y x x λλλε=++???++ 其中,ε是残差。 在返回项[b,bint,r,rint,stats]中, ①01m b λλλ=???是回归方程的系数; ②int b 是一个2m ?矩阵,它的第i 行表示i λ的(1-alpha)置信区间; ③r 是1n ?的残差列向量; ④int r 是2n ?矩阵,它的第i 行表示第i 个残差i r 的(1-alpha)置信区间; 注释:残差与残差区间杠杆图,最好在0点线附近比较均匀的分布,而不呈现一定的规律性,如果是这样,就说明回归分析做得比较理想。 ⑤ 一般的,stast 返回4个值:2R 值、F_检验值、阈值f ,与显著性概率相关的p 值(如果这个p 值不存在,则,只输出前3项)。注释:

利用MATLAB进行回归分析及应用

利用MATLAB进行回归分析 一、实验目的: 1.了解回归分析的基本原理,掌握MATLAB实现的方法; 2. 练习用回归分析解决实际问题。 二、实验内容: 题目1 社会学家认为犯罪与收入低、失业及人口规模有关,对20个城市的犯罪率y(每10万人中犯罪的人数)与年收入低于5000美元家庭的百分比1x、失业率2x和人口总数3x(千人)进行了调查,结果如下表。 (1)若1x~3x中至多只许选择2个变量,最好的模型是什么? (2)包含3个自变量的模型比上面的模型好吗?确定最终模型。 (3)对最终模型观察残差,有无异常点,若有,剔除后如何。 理论分析与程序设计: 为了能够有一个较直观的认识,我们可以先分别作出犯罪率y与年收入低于5000美元家庭的百分比1x、失业率2x和人口总数 x(千人)之间关系的散点图,根据大致分布粗略估计各因素造 3 成的影响大小,再通过逐步回归法确定应该选择哪几个自变量作为模型。

编写程序如下: clc; clear all; y=[11.2 13.4 40.7 5.3 24.8 12.7 20.9 35.7 8.7 9.6 14.5 26.9 15.7 36.2 18.1 28.9 14.9 25.8 21.7 25.7]; %犯罪率(人/十万人) x1=[16.5 20.5 26.3 16.5 19.2 16.5 20.2 21.3 17.2 14.3 18.1 23.1 19.1 24.7 18.6 24.9 17.9 22.4 20.2 16.9]; %低收入家庭百分比 x2=[6.2 6.4 9.3 5.3 7.3 5.9 6.4 7.6 4.9 6.4 6.0 7.4 5.8 8.6 6.5 8.3 6.7 8.6 8.4 6.7]; %失业率 x3=[587 643 635 692 1248 643 1964 1531 713 749 7895 762 2793 741 625 854 716 921 595 3353]; %总人口数(千人) figure(1),plot(x1,y,'*'); figure(2),plot(x2,y,'*'); figure(3),plot(x3,y,'*'); X1=[x1',x2',x3']; stepwise(X1,y) 运行结果与结论:

应用回归分析 matlab程序自相关

4.13 表中是某软件公司月销售额数据,其中,x为总公司的月销售额(万元);y为某分公司的月销售额(万元)。 (1)用普通最小二乘法建立x和y的回归方程。 (2)用残差图及DW检验诊断序列的自相关性。 (3)用迭代法处理序列相关,并建立回归方程。 (4)用一阶差分法处理数据,并建立回归方程。 (5)比较以上各方法所建回归方程的优良性。 序号x y 序号x y 1 127.3 20.96 11 148.3 24.54 2 130.0 21.40 12 146.4 24.28 3 132.7 21.96 13 150.2 25.00 4 129.4 21.52 14 153.1 25.64 5 135.0 22.39 15 157.3 26.46 6 137.1 22.76 16 160. 7 26.98 7 141.1 23.48 17 164.2 27.52 8 142.8 23.66 18 165.6 27.78 9 145.5 24.10 19 168.7 28.24 10 145.3 24.01 20 172.0 28.78 (1)aa_size=size(aa,1) >> x=[ones(aa_size,1),aa(:,1)]; >> y=aa(:,2); >> b_est=inv(x'*x)*x'*y; b_est b_est = -1.4348 0.1762 (2) y_est=x*b_est; >> b1=y-y_est; >> plot(b1,'ro') p01=sum(b1(1:(aa_size-1)).*b1(2:(aa_size))); >> p02=sqrt(sum(b1(1:(aa_size-1)).^2)*sum(b1(2:aa_size).^2)); >> p=p01/p02 DW=2*(1-p) DW = 0.6793

利用Matlab进行线性回归分析

利用Matlab进行线性回归分析 回归分析是处理两个及两个以上变量间线性依存关系的统计方法。可以通过软件Matlab实现。 1.利用Matlab软件实现 在Matlab中,可以直接调用命令实现回归分析, (1)[b,bint,r,rint,stats]=regress(y,x),其中b是回归方程中的参数估计值,bint是b的置信区间,r和rint分别表示残差及残差对应的置信区间。stats包含三个数字,分别是相关系数,F统计量及对应的概率p值。 (2)recplot(r,rint)作残差分析图。 (3)rstool(x,y)一种交互式方式的句柄命令。 以下通过具体的例子来说明。 例现有多个样本的因变量和自变量的数据,下面我们利用Matlab,通过回归分析建立两者之间的回归方程。 % 一元回归分析 x=[1097 1284 1502 1394 1303 1555 1917 2051 2111 2286 2311 2003 2435 2625 2948 3, 55 3372];%自变量序列数据 y=[698 872 988 807 738 1025 1316 1539 1561 1765 1762 1960 1902 2013 2446 2736 2825];%因变量序列数据 X=[ones(size(x')),x'],pause [b,bint,r,rint,stats]=regress(y',X,0.05),pause%调用一元回归分析函数 rcoplot(r,rint)%画出在置信度区间下误差分布。

% 多元回归分析 % 输入各种自变量数据 x1=[5.5 2.5 8 3 3 2.9 8 9 4 6.5 5.5 5 6 5 3.5 8 6 4 7.5 7]'; x2=[31 55 67 50 38 71 30 56 42 73 60 44 50 39 55 7040 50 62 59]'; x3=[10 8 12 7 8 12 12 5 8 5 11 12 6 10 10 6 11 11 9 9]'; x4=[8 6 9 16 15 17 8 10 4 16 7 12 6 4 4 14 6 8 13 11]'; %输入因变量数据 y=[79.3 200.1 163.1 200.1 146.0 177.7 30.9 291.9 160 339.4 159.6 86.3 237.5 107.2 155 201.4 100.2 135.8 223.3 195]'; X=[ones(size(x1)),x1,x2,x3,x4]; [b,bint,r,rint,stats]=regress(y,X)%回归分析 Q=r'*r sigma=Q/18 rcoplot(r,rint); %逐步回归 X1=[x1,x2,x3,x4]; stepwise(X1,y,[1,2,3])%逐步回归 % X2=[ones(size(x1)),x2,x3]; % X3=[ones(size(x1)),x1,x2,x3]; % X4=[ones(size(x1)),x2,x3,x4]; % [b1,b1int,r1,r1int,stats1]=regress(y,X2) % [b2,b2int,r2,r2int,stats2]=regress(y,X3); % [b3,b3int,r3,r3int,stats3]=regress(y,X4);

matlab回归分析方法

第八章 回归分析方法 当人们对研究对象的内在特性和各因素间的关系有比较充分的认识时,一般用机理分析方法建立数学模型。如果由于客观事物内部规律的复杂性及人们认识程度的限制,无法分析实际对象内在的因果关系,建立合乎机理规律的数学模型,那么通常的办法是搜集大量数据,基于对数据的统计分析去建立模型。本章讨论其中用途非常广泛的一类模型——统计回归模型。回归模型常用来解决预测、控制、生产工艺优化等问题。 变量之间的关系可以分为两类:一类叫确定性关系,也叫函数关系,其特征是:一个变量随着其它变量的确定而确定。另一类关系叫相关关系,变量之间的关系很难用一种精确的方法表示出来。例如,通常人的年龄越大血压越高,但人的年龄和血压之间没有确定的数量关系,人的年龄和血压之间的关系就是相关关系。回归分析就是处理变量之间的相关关系的一种数学方法。其解决问题的大致方法、步骤如下: (1)收集一组包含因变量和自变量的数据; (2)选定因变量和自变量之间的模型,即一个数学式子,利用数据按照最小二乘准则计算模型中的系数; (3)利用统计分析方法对不同的模型进行比较,找出与数据拟合得最好的模型; (4)判断得到的模型是否适合于这组数据; (5)利用模型对因变量作出预测或解释。 应用统计分析特别是多元统计分析方法一般都要处理大量数据,工作量非常大,所以在计算机普及以前,这些方法大都是停留在理论研究上。运用一般计算语言编程也要占用大量时间,而对于经济管理及社会学等对高级编程语言了解不深的人来说要应用这些统计方法更是不可能。MA TLAB 等软件的开发和普及大大减少了对计算机编程的要求,使数据分析方法的广泛应用成为可能。MATLAB 统计工具箱几乎包括了数理统计方面主要的概念、理论、方法和算法。运用MA TLAB 统计工具箱,我们可以十分方便地在计算机上进行计算,从而进一步加深理解,同时,其强大的图形功能使得概念、过程和结果可以直观地展现在我们面前。本章内容通常先介绍有关回归分析的数学原理,主要说明建模过程中要做的工作及理由,如模型的假设检验、参数估计等,为了把主要精力集中在应用上,我们略去详细而繁杂的理论。在此基础上再介绍在建模过程中如何有效地使用MA TLAB 软件。没有学过这部分数学知识的读者可以不深究其数学原理,只要知道回归分析的目的,按照相应方法通过软件显示的图形或计算所得结果表示什么意思,那么,仍然可以学到用回归模型解决实际问题的基本方法。包括:一元线性回归、多元线性回归、非线性回归、逐步回归等方法以及如何利用MATLAB 软件建立初步的数学模型,如何透过输出结果对模型进行分析和改进,回归模型的应用等。 8.1 一元线性回归分析 回归模型可分为线性回归模型和非线性回归模型。非线性回归模型是回归函数关于未知参数具有非线性结构的回归模型。某些非线性回归模型可以化为线性回归模型处理;如果知道函数形式只是要确定其中的参数则是拟合问题,可以使用MATLAB 软件的curvefit 命令或nlinfit 命令拟合得到参数的估计并进行统计分析。本节主要考察线性回归模型。 8.1.1 一元线性回归模型的建立及其MATLAB 实现 01y x ββε=++ 2~(0,)N εσ 其中01ββ,是待定系数,对于不同的,x y 是相互独立的随机变量。

matlab多元线性回归模型

matlab多元线性回归模型

云南大学数学与统计学实验教学中心 实验报告 一、实验目的 1.熟悉MATLAB的运行环境. 2.学会初步建立数学模型的方法 3.运用回归分析方法来解决问题 二、实验内容 实验一:某公司出口换回成本分析 对经营同一类产品出口业务的公司进行抽样调查,被调查的13家公司,其出口换汇成本与商品流转费用率资料如下表。试分析两个变量之间的关系,并估计某家公司商品流转费用率是6.5%的出口换汇成本.

实验二:某建筑材料公司的销售量因素分析 下表数据是某建筑材料公司去年20个地区的销售量(Y,千方),推销开支、实际帐目数、同类商品竞争数和地区销售潜力分别是影响建筑材料销售量的因素。1)试建立回归模型,且分析哪些是主要的影响因素。2)建立最优回归模型。

提示:建立一个多元线性回归模型。 三、实验环境 Windows操作系统; MATLAB 7.0. 四、实验过程 实验一:运用回归分析在MATLAB里实现 输入:x=[4.20 5.30 7.10 3.70 6.20 3.50 4.80 5.50 4.10 5.00 4.00 3.40 6.90]'; X=[ones(13,1) x]; Y=[1.40 1.20 1.00 1.90 1.30 2.40 1.40 1.60 2.00 1.00 1.60 1.80 1.40]'; plot(x,Y,'*'); [b,bint,r,rint,stats]=regress(Y,X,0.05); 输出: b = 2.6597 -0.2288 bint = 1.8873 3.4322 -0.3820 -0.0757 stats = 0.4958 10.8168 0.0072

利用Matlab进行线性回归分析

利用Matlab 进行线性回归分析 回归分析是处理两个及两个以上变量间线性依存关系的统计方法。可以通过软件Matlab 实现。 1.利用Matlab 软件实现 在Matlab 中,可以直接调用命令实现回归分析, (1)[b,bint,r,rint,stats]=regress(y,x),其中 b 是回归方程中的参数估计值,bint 是b的置信区间,r和rint分别表示残差及残差对应的置信区间。stats包含三个数字,分别是相关系数,F统计量及对应的概率p值。 (2)recplot(r,rint)作残差分析图。 (3)rstool(x,y)一种交互式方式的句柄命令。 以下通过具体的例子来说明。 例现有多个样本的因变量和自变量的数据,下面我们利用Matlab,通过回归分析建立两者之间的回归方程。 % 一元回归分析 x=[1097 1284 1502 1394 1303 1555 1917 2051 2111 2286 2311 2003 2435 2625 2948 3, 55 3372];%自变量序列数据 y=[698 872 988 807 738 1025 1316 1539 1561 1765 1762 1960 1902 2013 2446 2736 2825];%因变量序列数据 X=[ones(size(x')),x'],pause [b,bint,r,rint,stats]=regress(y',X,,pause% 调用一元回归分析函数 rcoplot(r,rint)% 画出在置信度区间下误差分布。

% 多元回归分析 % 输入各种自变量数据 x1=[ 8 3 3 8 9 4 5 6 5 8 6 4 7]'; x2=[31 55 67 50 38 71 30 56 42 73 60 44 50 39 55 70 40 50 62 59]'; x3=[10 8 12 7 8 12 12 5 8 5 11 12 6 10 10 6 11 11 9 9]'; x4=[8 6 9 16 15 17 8 10 4 16 7 12 6 4 4 14 6 8 13 11]'; %输入因变量数据y=[ 160 155 195]'; X=[ones(size(x1)),x1,x2,x3,x4]; [b,bint,r,rint,stats]=regress(y,X)% 回归分析 Q=r'*r sigma=Q/18 rcoplot(r,rint); %逐步回归 X1=[x1,x2,x3,x4]; stepwise(X1,y,[1,2,3])% 逐步回归 % X2=[ones(size(x1)),x2,x3]; % X3=[ones(size(x1)),x1,x2,x3]; % X4=[ones(size(x1)),x2,x3,x4]; % [b1,b1int,r1,r1int,stats1]=regress(y,X2) % [b2,b2int,r2,r2int,stats2]=regress(y,X3); % [b3,b3int,r3,r3int,stats3]=regress(y,X4);

应用MATLAB进行非线性回归分析

应用MATLAB进行非线性回归分析 摘要 早在十九世纪,英国生物学家兼统计学家高尔顿在研究父与子身高的遗传问题时,发现子代的平均高度又向中心回归大的意思,使得一段时间内人的身高相对稳定。之后回归分析的思想渗透到了数理统计的其他分支中。随着计算机的发展,各种统计软件包的出现,回归分析的应用就越来越广泛。回归分析处理的是变量与变量间的关系。有时,回归函数不是自变量的线性函数,但通过变换可以将之化为线性函数,从而利用一元线性回归对其进行分析,这样的问题是非线性回归问题。下面的第一题:炼钢厂出钢水时用的钢包,在使用过程中由于钢水及炉渣对耐火材料的侵蚀,使其容积不断增大。要找出钢包的容积用盛满钢水时的质量与相应的实验次数的定量关系表达式,就要用到一元非线性回归分析方法。首先我们要对数据进行分析,描出数据的散点图,判断两个变量之间可能的函数关系,对题中的非线性函数,参数估计是最常用的“线性化方法”,即通过某种变换,将方程化为一元线性方程的形式,接着我们就要对得到的一些曲线回归方程进行选择,找出到底哪一个才是更好一点的。此时我们通常可采用两个指标进行选择,第一个是决定系数,第二个是剩余标准差。进而就得到了我们想要的定量关系表达式。第二题:给出了某地区1971—2000年的人口数据,对该地区的人口变化进行曲线拟合。也用到了一元非线性回归的方法。首先我们也要对数据进行分析,描出数据的散点图,然后用MATLAB编程进行回归分析拟合计算输出利用Logistic模型拟合曲线。 关键词:参数估计,Logistic模型,MATLAB 正文 一、一元非线性回归分析的求解思路:

?求解函数类型并检验。 ?求解未知参数。可化曲线回归为直线回归,用最小二乘法求解;可化曲线回归为多项式回归。 二、回归曲线函数类型的选取和检验 1、直接判断法 2、作图观察法,与典型曲线比较,确定其属于何种类型,然后检验。 3、直接检验法(适应于待求参数不多的情况) 4、表差法(适应于多想式回归,含有常数项多于两个的情况) 三、化曲线回归为直线回归问题 用直线检验法或表差法检验的曲线回归方程都可以通过变量代换转化为直线回归方程,利用线性回归分析方法可求得相应的参数估计值。 题目: 例 8.5.1 炼钢厂出钢水时用的钢包,在使用过程中由于钢水及炉渣对耐火材料的浸蚀,其容积不断增大。现在钢包的容积用盛满钢水时的重量y (kg)表示,相应的试验次数用x表示。数据见表8.5.1,要找出y与x的定量关系表达式。 表8.5.1 钢包的重量y与试验次数x数据

Matlab回归分析程序

一、多元线性回归 p p x x y βββ+++=...110,对于一元线性回归,取p=1。 例一: x=[143 145 146 147 149 150 153 154 155 156 157 158 159 160 162 164]'; X=[ones(16,1) x]; Y=[88 85 88 91 92 93 93 95 96 98 97 96 98 99 100 102]'; [b,bint,r,rint,stats]=regress(Y,X) b,bint,stats rcoplot(r,rint) z=b(1)+b(2)*x plot(x,X,'k+',x,z,'r') %画回归直线 二、多项式回归 一元多项式回归 1121...+-++++=m m m m a x a x a x a y 例二: t=1/30:1/30:14/30; 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]; [p,S]=polyfit(t,s,2) 预测及作图 Y=polyconf(p,t,S) plot(t,s,'k+',t,Y,'r') 该模型亦可化为多元线性回归: t=1/30:1/30:14/30; 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]; T=[ones(14,1) t' (t.^2)']; [b,bint,r,rint,stats]=regress(s',T); b,stats

相关文档
相关文档 最新文档