(完整版)数据拟合——线性回归

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

数据拟合——线性回归法

【概述】

MATLAB支持用户对数据用线性回归方法linear regression建立模型。模型是指自变量和因变量之间的关系。线性回归方法建立的模型的系数是线性的。最常用的线性回归方法是最小二乘拟合,可进行线性拟合和多项式拟合。

1.线性相关性分析Linear Correlation Analysis

在对两组测量数据建立关系模型前,最好对这些数据之间的关系作一个判断——相关性分析,看二者是否真的存在线性关系。

这里,我们只介绍相关性系数①Correlation coefficient的计算。简单的说,相关性系数是绝对值在0-1之间的数,其绝对值越接近1,表明数据之间存在线性关系的可能性越大。反之,数据越接近0,表明数据之间不太可能存在线性关系。

✧MATLAB语法:R = corrcoef(x,y)

计算数据x和y的相关系数矩阵R

示例1:

x = [1 2 3 4 5 6 7 8 9 10];

y = [1 4 9 16 25 36 49 64 81 100];

R = corrceof(x,y)

R =

1.0000 0.9746 此数据表明两组数据具有很强的线性关系

0.9746 1.0000

示例2:

x = [1 2 3 4 5 6 7 8 9 10];

y = [0.8415 0.9093 0.1411 -0.7568 -0.9589 -0.2794 0.6570 0.9894 0.4121 -0.5440];

R = corrceof(x,y)

R =

1.0000 -0.1705 此数据表明两组数据不存在线性关系

-0.1705 1.0000

2.评价数据拟合的优劣——残差计算

残差被定义为实际测量数据与利用模型拟合(预测)的数据之差。合适的模型计算的残差应该接近独立的随机误差。如果计算得到的残差具有某种特殊的模式,那么模型就不合适。

3.利用MATLAB函数进行数据拟合

⏹多项式模型

MATLAB提供了2个用于多项式拟合的函数polyfit和polyval。

✧MATLAB语法:p = polyfit(x,y,n)

通过对数据x和y进行n阶多项式②拟合(基于最小二乘法),计算n阶多项式系数p

✧MATLAB语法:y = polyval(p,x)

计算以p为系数的多项式,在x处的函数值y

示例3:

t = [0 0.3 0.8 1.1 1.6 2.3];

y = [0.6 0.67 1.01 1.35 1.47 1.25];

plot(t,y,'o')

用二阶多项式进行拟合

p=polyfit(t,y,2)

p =

-0.2942 1.0231t 0.4981

查看拟合的效果:1.绘制多项式曲线

t2 = 0:0.1:2.8;

y2=polyval(p,t2); plot(t,y,'o',t2,y2)

查看拟合的效果:2.计算残差

y2=polyval(p,t);

res=y-y2; plot(t,res,'+')

分析:可以看出,此题用二阶多项式拟合的效果不好,可以通过采用更高阶的多项式拟合来获得

更好的效果。但要注意,对于实际的问题进行建模时,阶次的选择应符合物理意义。

{课堂练习}对本题数据进行5阶多项式拟合,计算残差,绘制相应的波形。

具有非多项式项的线性模型

例如012t t

y a a e a te --=++,函数与系数是线性的,但与自变量不是线性关系。可以通过构造

一组方程来解决系数的求解问题。

示例4:

% 以列向量形式输入t 和y

t = [0 0.3 0.8 1.1 1.6 2.3]';

y = [0.6 0.67 1.01 1.35 1.47 1.25]';

% 构造矩阵

X = [ones(size(t)) exp(-t) t.*exp(-t)];

% 计算系数

a = X\y

a =

1.3983

- 0.8860

0.3085

线性关系为 1.39830.8860.3085t t

y e te --=-+

查看拟合的效果:绘制多项式曲线

T = (0:0.1:2.5)';

Y = [ones(size(T)) exp(-T) T.*exp(-T)]*a;

plot(T,Y ,'-',t,y,'o'), grid on

多元回归

当自变量不止一个时,如01122y a a x a x =++。

示例5:

x1 = [.2 .5 .6 .8 1.0 1.1]';

x2 = [.1 .3 .4 .9 1.1 1.4]';

y = [.17 .26 .28 .23 .27 .24]';

X = [ones(size(x1)) x1 x2];

a = X\y

a =

0.1018

0.4844

-0.2847

验证模型,计算最大残差的绝对值

Y = X*a;

MaxErr = max(abs(Y - y))

MaxErr =

0.0038

此数据远小于y 数据,说明此模式较好。

4.利用图形工具——MATLAB Basic Fitting

以图形用户界面提供方便、强大的数据拟合工具,提供以下功能:

✓提供样条插值模型、保型插值模型和多项式模型;

✓绘制原始数据、拟合数据,残差图形;

✓计算模型的相关性系数和范数;

✓利用数据模型插值或外推数据;

✓在工作区保存拟合以及计算结果;

✓生成m文件以供拟合新数据。

当需要拟合的数据量很大时,最好先对数据进行排序。对数据x,y进行排序可利用以下命令实现:[x_sorted, i] = sort(x); y_sorted = y(i); 排序后的数据为x_sorted和y_sorted。

MATLAB Basic Fitting位于图形窗口的tool菜单中。

示例6:

导入已有的数据,并作图

load census

plot(cdate,pop,'ro') %cdate和pop③

在图形窗口的菜单中选择Tools > Basic Fitting

相关文档
最新文档