数据回归分析和拟合的Matlab实现Word文档下载推荐.docx

上传人:b****7 文档编号:22407153 上传时间:2023-02-03 格式:DOCX 页数:16 大小:21.71KB
下载 相关 举报
数据回归分析和拟合的Matlab实现Word文档下载推荐.docx_第1页
第1页 / 共16页
数据回归分析和拟合的Matlab实现Word文档下载推荐.docx_第2页
第2页 / 共16页
数据回归分析和拟合的Matlab实现Word文档下载推荐.docx_第3页
第3页 / 共16页
数据回归分析和拟合的Matlab实现Word文档下载推荐.docx_第4页
第4页 / 共16页
数据回归分析和拟合的Matlab实现Word文档下载推荐.docx_第5页
第5页 / 共16页
点击查看更多>>
下载资源
资源描述

数据回归分析和拟合的Matlab实现Word文档下载推荐.docx

《数据回归分析和拟合的Matlab实现Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《数据回归分析和拟合的Matlab实现Word文档下载推荐.docx(16页珍藏版)》请在冰豆网上搜索。

数据回归分析和拟合的Matlab实现Word文档下载推荐.docx

b=

-16.0730

0.7194

bint=

-33.7071 

1.5612

0.6047 

0.8340

r=

1.2056

-3.2331

-0.9524

1.3282

0.8895

1.1702

-0.9879

0.2927

0.5734

1.8540

0.1347

-1.5847

-0.3040

-0.0234

-0.4621

0.0992

rint=

-1.2407 

3.6520

-5.0622 

-1.4040

-3.5894 

1.6845

-1.2895 

3.9459

-1.8519 

3.6309

-1.5552 

3.8955

-3.7713 

1.7955

-2.5473 

3.1328

-2.2471 

3.3939

-0.7540 

4.4621

-2.6814 

2.9508

-4.2188 

1.0494

-3.0710 

2.4630

-2.7661 

2.7193

-3.1133 

2.1892

-2.4640 

2.6624

stats=

0.9282 

180.9531 

0.0000 

1.7437

运行结果解读如下

参数回归结果为,对应的置信区间分别为[-33.7017,1.5612]和[0.6047,0.834]

r2=0.9282(越接近于1,回归效果越显著),F=180.9531,p=0.0000,由p<

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

(3)残差分析作残差图

rcoplot(r,rint)

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

(4)预测及作图

z=b

(1)+b

(2)*x

plot(x,Y,'

k+'

x,z,'

r'

x=[10971284150213941303155519172051211122862311200324352625294831553372];

%因变量时间序列数据

y=[698872988807738102513161539156117651762196019022013244627362825];

%自变量时间序列数据

X=[ones(size(x'

)),x'

];

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

X,0.05);

%调用一元回归分析函数

rcoplot(r,rint)%画出在置信度区间下误差分布.

[bbintrrints]=regress(y,x,alpha);

%y=[....]'

%x=[ones(n,1)x1x2x3....xn];

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

这是regress最完整的用法,其中y为要拟合的因变量

X为对应于你要求的系数的系数矩阵

alpha为显著水平

输出的b是你要求的系数组成的矩阵

bint是置信区间

r是用来诊断奇异点的

stats会返回四个变量

theR2statistic,相关系数

theFstatisticanditsp-value,F检验及p值

andanestimateoftheerrorvariance.误差方差估计

二、多项式回归

一元多项式回归

1、一元多项式回归函数 

(1)[p,S]=polyfit(x,y,m) 

确定多项式系数的MATLAB命令

x=(x1,x2,…,xn),y=(y1,y2,…,yn);

p=(a1,a2,…,am+1)是多项式y=a1xm+a2xm-1+…+amx+am+1的系数;

S是一个矩阵,用来估计预测误差

(2)polytool(x,y,m) 

调用多项式回归GUI界面,参数意义同polyfit

2、预测和预测误差估计

(1)Y=polyval(p,x) 

求polyfit所得的回归多项式在x处的预测值Y

(2)[Y,DELTA]=polyconf(p,x,S,alpha) 

求polyfit所得的回归多项式在x处的预测值Y及预测值的显著性为1-alpha的置信区间Y±

DELTA,alpha缺省时为0.5

3、实例演示说明

观测物体降落的距离s与时间t的关系,得到数据如下表,求s的表达式(即回归方程s=a+bt+ct2)

t(s)1/302/303/304/305/306/307/30

s(cm)11.8615.6720.6026.6933.7141.9351.13

t(s)8/309/3010/3011/3012/3013/3014/30

s(cm)61.4972.9085.4499.08113.77129.54146.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.2946 

65.8896 

9.1329

S=

R:

[3x3double]

df:

11

normr:

0.1157

故回归模型为

解法二:

化为多元线性回

T=[ones(14,1)t'

(t.^2)'

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

T)

65.8896

489.2946

9.0614 

9.2044

65.2316 

66.5476

488.0146 

490.5747

-0.0129

-0.0302

-0.0148

0.0732

0.0040

0.0474

-0.0165

-0.0078

-0.0363

-0.0222

0.0046

-0.0059

-0.0237

0.0411

-0.0697 

0.0439

-0.0956 

0.0352

-0.0876 

0.0580

0.0182 

0.1283

-0.0709 

0.0789

-0.0192 

0.1139

-0.0894 

0.0563

-0.0813 

0.0658

-0.1062 

0.0335

-0.0955 

0.0511

-0.0704 

0.0796

-0.0793 

0.0675

-0.0904 

0.0429

-0.0088 

0.0910

1.0e+007*

1.0378 

0.0000

故回归模型为:

预测及作图

Y=polyconf(p,t,S);

plot(t,s,'

t,Y,'

多元二项式回归

1、多元二项式回归Matlab命令

rstool(x,y,'

model'

alpha) 

输入参数说明:

x:

n*m矩阵;

Y:

n维列向量;

alpha:

显著性水平(缺省时为0.05);

mode:

由下列4个模型中选择1个(用字符串输入,缺省时为线性模型)

2、实例演示说明

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

需求量10075807050659010011060

收入1000600 

1200500300400130011001300300

价格5766875439

选择纯二次模型

%直接用多元二项式回归如下

x1=[10006001200500300400130011001300300];

x2=[5766875439];

y=[10075807050659010011060]'

x=[x1'

x2'

purequadratic'

在x1对应的文本框中输入1000,X2中输入6,敲回车键,此时图形和相关数据会自动更新

此时在GUI左边的“PredictedY1”下方的数据变为88.47981,表示平均收入为1000、价格为6时商品需求量为88.4791

点击左下角的Export按钮,将会导出回归的相关参数beta、rmse和residuals到工作空间(workspace)

在Export按钮下面可以选择回归类型

在Matlab命令窗口中输入

beta,rmse

将得到如下结果

beta=

110.5313

0.1464

-26.5709

-0.0001

1.8475

rmse=

4.5362

故回归模型为

将上面饿模型转换为多元线性回归

X=[ones(10,1)x1'

(x1.^2)'

(x2.^2)'

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

b,stats

110.5313

-26.5709

-0.0001

0.9702 

40.6656 

0.0005 

20.5771

三、非线性回归

1、非线性回归

[beta,r,J]=nlinfit(x,y,'

modelfun'

beta0) 

非线性回归系数的命令

nlintool(x,y,'

beta0,alpha) 

非线性回归GUI界面

参数说明

beta:

估计出的回归系数;

r:

残差;

J:

Jacobian矩阵;

x,y:

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

modelfun:

M函数、匿名函数或inline函数,定义的非线性回归函数;

beta0:

回归系数的初值;

[Y,DELTA]=nlpredci('

x,beta,r,J)

获取x处的预测值Y及预测值的显著性为1-alpha的置信区间Y±

DELTA

解:

(1)对将要拟合的非线性模型,建立M函数如下

functionyhat=modelfun(beta,x)

%beta是需要回归的参数

%x是提供的数据

yhat=beta

(1)*exp(beta

(2)./x);

(2)输入数据

x=2:

16;

y=[6.428.209.589.59.7109.939.9910.4910.5910.6010.8010.6010.9010.76];

beta0=[82]'

(3)求回归系数

[beta,r,J]=nlinfit(x'

y'

@modelfun,beta0);

beta

11.6036

-1.0641

即得回归模型为

(4)预测及作图

[YY,delta]=nlpredci('

x'

beta,r,J);

plot(x,y,'

x,YY,'

四、逐步回归

1、逐步回归的命令

stepwise(x,y,inmodel,alpha) 

根据数据进行分步回归

stepwise 

直接调出分步回归GUI界面

输入参数说明

自变量数据,阶矩阵;

y:

因变量数据,阶矩阵;

inmodel:

矩阵的列数的指标,给出初始模型中包括的子集(缺省时设定为全部自变量);

显著性水平(缺省时为0.5);

2、实例演示分析

水泥凝固时放出的热量y与水泥中4种化学成分x1、x2、x3、x4有关,今测得一组数据如下,试用逐步回归法确定一个线性模型

序号 

10 

11 

12 

13

x1 

21 

10

x2 

26 

29 

56 

31 

52 

55 

71 

54 

47 

40 

66 

68

x3 

15 

17 

22 

18 

23 

8

x4 

60 

20 

33 

44 

34 

12

78.5 

74.3 

104.3 

87.6 

95.9 

109.2 

102.7 

72.5 

93.1 

115.9 

83.8 

113.3 

109.4

(1)数据输入

x1=[7111117113122111110]'

x2=[26295631525571315447406668]'

x3=[615886917221842398]'

x4=[6052204733226442226341212]'

y=[78.574.3104.387.695.9109.2102.772.593.1115.983.8113.3109.4]'

x=[x1x2x3x4];

(2)逐步回归

①先在初始模型中取全部自变量

stepwise(x,y)

Matlab问题!

逐步多元非线性回归以及求极值问题

悬赏分:

55-解决时间:

2008-10-817:

31

1.013.01.50.330

1.419.03.00.366

1.825.01.00.294

2.210.02.50.476

2.616.00.50.209

3.022.02.00.451

3.428.03.50.482

这是文献上的一组均匀试验的设计和结果。

从左至右:

自变量x1,x2,x3;

因变量y;

试验次数7次。

请问能否用Matlab进行多元非线性的回归?

(二次多项式)可能的模型y=a+b1*x1+b2*x2+b3*x3+b4*x1*x2+b5*x1*x3+b6*x2*x3+b7*x1^2+b8*x2^2+b9*x3^2;

最好可以用逐步回归技术或其他技术剔除一些影响小的变量或项。

请给出具体的方法。

谢谢。

其实最终的目的是找出极大值点和极大值(优化),所以,除了用上述多元非线性回归方法外,如有其他方法如用人工神经网络结合遗传算法、SNTO(序贯优化方法)等进行有效处理的,也可,并烦请给出具体命令、方法。

多谢!

%%引言

%%你的变量是10个,而方程只有7个,做的效果可能会比较差

%%神经网络等我没接触过

%%下面只弄那个多项式

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

%%%%第一步

data=[1.013.01.50.330;

1.419.03.00.366;

1.825.01.00.294;

2.210.02.50.476;

2.616.00.50.209;

3.022.02.00.451;

3.428.03.50.482];

x1=data(:

1);

x2=data(:

2);

x3=data(:

3);

y=data(:

4);

mat=[ones(size(x1)),x1,x2,x3,x1.*x2,x1.*x3,x2.*x3,x1.^2,x2.^2,x3.^2];

%下面的A就是我们要的常数,分别对应于a,b1,b2,b3,b4,b5,b6,b7,b8,b9

A=mat\y

%%%%%%%%%第一步结束

%%%%%%%%得到的结果是:

A=

0

0.0149

0.1844

-0.0024

0.0510

-0.0002

-0.0448

发现第一个,第二个以及第8个等于0。

先去掉这三个。

即a,b1,b7=0

%%%%第二步。

去掉上述三项再次拟合

%%你好好比较一下两步之间的mat矩阵的构造就知道怎么弄了。

mat=[x2,x3,x1.*x2,x1.*x3,x2.*x3,x2.^2,x3.^2];

%去掉a,b1,b7对应的项

%下面的A就是我们要的常数,分别对应于b2,b3,b4,b5,b6,b8,b9

%%%%%%%%%第二步结束

得到的结果是:

上述几项,你觉得哪一项可以去掉,你仿上面第二步。

就可以了。

祝你成功。

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

当前位置:首页 > PPT模板 > 简洁抽象

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

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