多元回归程序MATLAB程序_精品文档.doc

上传人:b****2 文档编号:1520330 上传时间:2022-10-22 格式:DOC 页数:17 大小:208.50KB
下载 相关 举报
多元回归程序MATLAB程序_精品文档.doc_第1页
第1页 / 共17页
多元回归程序MATLAB程序_精品文档.doc_第2页
第2页 / 共17页
多元回归程序MATLAB程序_精品文档.doc_第3页
第3页 / 共17页
多元回归程序MATLAB程序_精品文档.doc_第4页
第4页 / 共17页
多元回归程序MATLAB程序_精品文档.doc_第5页
第5页 / 共17页
点击查看更多>>
下载资源
资源描述

多元回归程序MATLAB程序_精品文档.doc

《多元回归程序MATLAB程序_精品文档.doc》由会员分享,可在线阅读,更多相关《多元回归程序MATLAB程序_精品文档.doc(17页珍藏版)》请在冰豆网上搜索。

多元回归程序MATLAB程序_精品文档.doc

matlab回归(拟合)总结

前言

1、学三条命令

polyfit(x,y,n)---拟合成一元幂函数(一元多次)

regress(y,x)----可以多元,

nlinfit(x,y,’fun’,beta0)(可用于任何类型的函数,任意多元函数,应用范围最广,最万能的)

2、同一个问题,这三条命令都可以使用,但结果肯定是不同的,因为拟合的近似结果,没有唯一的标准的答案。

相当于咨询多个专家。

3、回归的操作步骤:

根据图形(实际点),选配一条恰当的函数形式(类型)---需要数学理论与基础和经验。

(并写出该函数表达式的一般形式,含待定系数)------选用某条回归命令求出所有的待定系数。

所以可以说,回归就是求待定系数的过程(需确定函数的形式)

一、多元回归分析

对于多元线性回归模型(其实可以是非线性,它通用性极高):

设变量的n组观测值为

记,,则的估计值为排列方式与线性代数中的线性方程组相同(),拟合成多元函数---regress

使用格式:

左边用b=[b,bint,r,rint,stats]右边用=regress(y,x)或regress(y,x,alpha)

---命令中是先y后x,

---须构造好矩阵x(x中的每列与目标函数的一项对应)

---并且x要在最前面额外添加全1列/对应于常数项

---y必须是列向量

---结果是从常数项开始---与polyfit的不同。

其中:

b为回归系数,

的估计值(第一个为常数项),

bint为回归系数的区间估计,

r:

残差,

rint:

残差的置信区间,

stats:

用于检验回归模型的统计量,有四个数值:

相关系数r2、F值、与F对应的概率p和残差的方差(前两个越大越好,后两个越小越好),

alpha:

显著性水平(缺省时为0.05,即置信水平为95%),(alpha不影响b,只影响bint(区间估计)。

它越小,即置信度越高,则bint范围越大。

显著水平越高,则区间就越小)(返回五个结果)---

如有n个自变量-有误(n个待定系数),则b中就有n+1个系数(含常数项,---第一项为常数项)(b---b的范围/置信区间---残差r---r的置信区间rint-----点估计----区间估计

如果的置信区间(bint的第行)不包含0,则在显著水平为时拒绝的假设,认为变量是显著的.*******(而rint残差的区间应包含0则更好)。

b,y等均为列向量,x为矩阵(表示了一组实际的数据)必须在x第一列添加一个全1列。

----对应于常数项。

相关系数r2越接近1,说明回归方程越显著;(r2越大越接近1越好)F越大,说明回归方程越显著;(F越大越好)与F对应的概率p越小越好,一定要P

乘余(残差)标准差(RMSE)越小越好(此处是残差的方差,还没有开方)(前两个越大越好,后两个越小越好)

重点:

regress(y,x)重点与难点是如何加工处理矩阵x。

y是函数值,一定是只有一列。

也即目标函数的形式是由矩阵X来确定

如s=a+b*x1+c*x2+d*x3+e*x1^2+f*x2*x3+g*x1^2,

一定有一个常数项,且必须放在最前面(即x的第一列为全1列)

X中的每一列对应于目标函数中的一项(目标函数有多少项则x中就有多少列)

X=[ones,x1,x2,x3,x1.^2,x2.*x3,x1.ˆ2](剔除待定系数的形式)

regress:

y/x顺序,矩阵X需要加工处理

nlinfit:

x/y顺序,X/Y就是原始的数据,不要做任何的加工。

(即regress靠矩阵X来确定目标函数的类型形式(所以X很复杂,要作很多处理)而nlinfit是靠程序来确定目标函数的类型形式(所以X就是原始数据,不要做任何处理)

例1

测16名成年女子的身高与腿长所得数据如下:

身高

143

145

146

147

149

150

153

154

155

156

157

158

159

160

162

164

腿长

88

85

88

91

92

93

93

95

96

98

97

96

98

99

100

102

配成y=a+b*x形式

x=[143145146147149150153154155156157158159160162164]';

y=[8885889192939395969897969899100102]';

plot(x,y,'r+')

z=x;

x=[ones(16,1),x];----常数项

[b,bint,r,rint,stats]=regress(y,x);---处结果与polyfit(x,y,1)相同

b,bint,stats

得结果:

b=bint=

-16.0730-33.70711.5612------每一行为一个区间

0.71940.60470.8340

stats=0.9282180.95310.0000

即;的置信区间为[-33.7017,1.5612],的置信区间为[0.6047,0.834];r2=0.9282,F=180.9531,p=0.0。

p<0.05,可知回归模型y=-16.073+0.7194x成立.

[b,bint,r,rint,stats]=regress(Y,X,0.05);-----结果相同

[b,bint,r,rint,stats]=regress(Y,X,0.03);

polyfit(x,y,1)-----当为一元时(也只有一组数),则结果与regress是相同的,只是

命令中x,y要交换顺序,结果的系数排列顺序完全相反,x中不需要全1列。

ans=0.7194-16.0730--此题也可用polyfit求解,杀鸡用牛刀,脖子被切断。

3、残差分析,作残差图:

rcoplot(r,rint)

从残差图可以看出,除第二个数据外,其余数据的残差离零点均较近,且残差的置信区间均包含零点,这说明回归模型y=-16.073+0.7194x能较好的符合原始数据,而第二个数据可视为异常点(而剔除)

4、预测及作图:

plot(x,y,'r+')

holdon

a=140:

165;

b=b

(1)+b

(2)*a;

plot(a,b,'g')

例2

观测物体降落的距离s与时间t的关系,得到数据如下表,求s关于t的回归方程

t(s)

1/30

2/30

3/30

4/30

5/30

6/30

7/30

s(cm)

11.86

15.67

20.60

26.69

33.71

41.93

51.13

t(s)

8/30

9/30

10/30

11/30

12/30

13/30

14/30

s(cm)

61.49

72.90

85.44

99.08

113.77

129.54

146.48

法一:

直接作二次多项式回归

t=1/30:

1/30:

14/30;

s=[11.8615.6720.6026.6933.7141.9351.1361.4972.9085.4499.08113.77129.54146.48];

[p,S]=polyfit(t,s,2)

p=489.294665.88969.1329

得回归模型为:

方法二----化为多元线性回归:

t=1/30:

1/30:

14/30;

s=[11.8615.6720.6026.6933.7141.9351.1361.4972.9085.4499.08113.77129.54146.48];

T=[ones(14,1),t',(t.^2)']%?

是否可行?

等验证...----因为有三个待定系数,所以有三列,始于常数项

[b,bint,r,rint,stats]=regress(s',T);

b,stats

b=9.1329

65.8896

489.2946

stats=1.0e+007*

0.00001.037800.0000

得回归模型为:

%结果与方法1相同

polyfit------一元多次

regress----多元一次---其实通过技巧也可以多元多次

regress最通用的,万能的,表面上是多元一次,其实可以变为多元多次且任意函数,如x有n列(不含全1列),则表达式中就有n+1列(第一个为常数项,其他每项与x的列序相对应)。

例3

设某商品的需求量与消费者的平均收入、商品价格的统计数据如下,建立回归模型,预测平均收入为1000、价格为6时的商品需求量.

需求量

100

75

80

70

50

65

90

100

110

60

收入

1000

600

1200

500

300

400

1300

1100

1300

300

价格

5

7

6

6

8

7

5

4

3

9

选择纯二次模型,即

----用户可以任意设计函数

x1=[10006001200500300400130011001300300];

x2=[5766875439];

y=[10075807050659010011060]';

X=[ones(10,1)x1'x2'(x1.^2)'(x2.^2)'];%10指有10组数据,x1'x2'(x1.^2)'(x2.^2)'时方程的自变量

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

b,stats

b=

110.5313

0.1464

-26.5709

-0.0001

1.8475

stats=0.970240.66560.000520.5771

故回归模型为:

剩余标准差为4.5362,说明此回归模型的显著性较好.

三、非线性回归(拟合)

使用格式:

beta=nlinfit(x,y,‘程序名’,beta0)

[beta,r,J]=nlinfit(X,y,fun,beta0)

X给定的自变量数据,

Y给定的因变量数据,

fun要拟合的函数模型(句柄函数或者内联函数形式),

beta0函数模型中待定系数估计初值(即程序的初始实参)

beta返回拟合后的待定系数

其中beta为估计出的回归系数;r为残差;J为Jacobian矩阵

输入数据x、y分别为n*m矩阵和n维列向量,对一元非线性回归,x为n维列向量。

可以拟合成任意函数。

最通用的,万能的命令

x,y顺序,x不需要任何加工,直接用原始数据。

---所编的程序一定是两个形参(待定系数/向量,自变量/矩阵:

每一列为一个自变量)

结果要看残差的大小和是否有警告信息,如有警告则换一个b0初始向量再重新计算。

本程序中也可能要用.*./.^如结果中有警告信息,则必须多次换初值来试算.

难点是编程序与初值

存在的问题:

不同的beta0,则会产生不同的结果,如何给待定系数的初值以及如何分析结果

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 求职职场 > 笔试

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1