主要内容

编程拟合

MATLAB多项式模型的函数

两个MATLAB®函数可以用多项式对数据建模。

多项式拟合函数

函数

描述

polyfit

polyfit (x, y, n)求多项式的系数p (x)的程度n适合的y数据通过最小化数据与模型偏差的平方和(最小二乘拟合)。

polyval

polyval (p, x)返回次多项式的值n这是由polyfit,评估x

如果您试图对一个物理情况建模,那么考虑特定顺序的模型在您的情况中是否有意义总是很重要的。

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

这个例子展示了如何用包含非多项式项的线性模型拟合数据。

当多项式函数不能生成令人满意的数据模型时,可以尝试使用具有非多项式项的线性模型。例如,考虑下面的函数,它的参数是线性的 一个 0 一个 1 , 一个 2 ,但非线性 t 数据:

y 一个 0 + 一个 1 e - t + 一个 2 t e - t

你可以计算未知系数 一个 0 一个 1 , 一个 2 通过构造并求解一组联立方程和求解参数。下面的语法通过形成一个设计矩阵,其中每一列表示一个用于预测响应的变量(模型中的一个项),每一行对应于对这些变量的一次观察。

输入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)];

系数计算模型。

y = X \
一个=3×11.3983 -0.8860 0.3085

因此,数据的模型由

y 1 3. 9 8 3. - 0 8 8 6 0 e - t + 0 3. 0 8 5 t e - t

现在,以规则间隔的点对模型进行评估,并用原始数据绘制模型。

T =(0:0.1:2.5)”;Y = [ones(size(T)) exp(-T) T *exp(-T)]*a;情节(T Y“- - -”、t、y,“o”)、网格标题(“模型与原始数据图”

图中包含一个axes对象。标题为Plot of Model和Original Data的axis对象包含两个类型为line的对象。

多元回归

这个例子展示了如何使用多元回归来对具有多个预测变量函数的数据建模。

当y是一个多于一个预测变量的函数时,表示变量之间关系的矩阵方程必须展开以容纳额外的数据。这就是所谓的多元回归

衡量一个量 y 的几个值 x 1 而且 x 2 .将这些值存储在向量中x1x2,y,分别。

x1 =[。2.5.6.81.01.1]'; x2 = [.1 .3 .4 .9 1.1 1.4]'; y = [.17 .26 .28 .23 .27 .24]';

这个数据的模型是这样的

y 一个 0 + 一个 1 x 1 + 一个 2 x 2

多元回归求解未知系数 一个 0 一个 1 , 一个 2 通过最小化模型数据偏差的平方和(最小二乘拟合)。

通过形成设计矩阵来构造和求解联立方程组,X

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

使用反斜杠运算符求解参数。

y = X \
一个=3×10.1018 0.4844 -0.2847

数据的最小二乘拟合模型为

y 0 1 0 1 8 + 0 4 8 4 4 x 1 - 0 2 8 4 7 x 2

为了验证模型,请找出数据偏离模型的绝对值的最大值。

Y = X *;max(abs(Y - Y))
MaxErr = 0.0038

这个值比任何数据值都要小得多,这表明该模型准确地跟踪了数据。

编程拟合

这个例子展示了如何使用MATLAB函数:

加载抽样普查数据census.mat其中包括1790年至1990年的美国人口数据。

负载人口普查

这将向MATLAB工作区添加以下两个变量。

  • cdate是一个列向量,包含1790年至1990年,以10为增量。

  • 流行是一个列向量,其中美国人口数字对应于cdate

图数据。

情节(cdate、流行,“罗”)标题(“1790年至1990年的美国人口”

图中包含一个axes对象。标题为U.S. Population from 1790 to 1990的axes对象包含一个类型为line的对象。

该图显示了一个很强的模式,这表明变量之间有很高的相关性。

计算相关系数

在示例的这一部分中,您将确定变量之间的统计相关性cdate而且流行验证数据建模。有关相关系数的更多信息,请参见线性相关

计算相关系数矩阵。

corrcoef (cdate、流行)
ans =2×21.000 0.9597 0.9597 1.000

对角矩阵元素代表每个变量与自身的完美相关,等于1。非对角线元素非常接近于1,表明变量之间有很强的统计相关性cdate而且流行

拟合数据的多项式

示例的这一部分应用polyfit而且polyvalMATLAB函数对数据进行建模。

计算合适的参数。

[p,错误]= polyfit (cdate流行2);

评估健康。

pop_fit = polyval (p cdate错误);

绘制数据和拟合图。

情节(cdate pop_fit,“- - -”cdate流行,“+”);标题(“1790年至1990年的美国人口”)传说(“多项式模型”“数据”“位置”“西北”);包含(“人口普查年”);ylabel (“人口(百万)”);

图中包含一个axes对象。标题为U.S. Population from 1790 to 1990的axes对象包含两个类型为line的对象。这些对象代表多项式模型、数据。

图表明,二次多项式拟合为数据提供了很好的近似。

计算此匹配的残差。

Res = pop - pop_fit;人物,情节(cdate res,“+”)标题(二次多项式模型的残差

图中包含一个axes对象。具有二次多项式模型标题残差的axis对象包含一个类型为line的对象。

注意,残差图显示了一种模式,这表明二级多项式可能不适合对该数据建模。

绘制并计算置信界限

置信区间是预测反应的置信区间。间隔的宽度表示拟合的确定程度。

应用示例的这一部分polyfit而且polyval人口普查用于生成二阶多项式模型置信界限的样本数据。

以下代码使用的间隔为 ± 2 Δ ,对应于大样本的95%置信区间。

评估拟合和预测误差估计(delta)。

[pop_fitδ]= polyval (p cdate错误);

绘制数据、拟合和置信界限。

情节(cdate、流行,“+”...cdate pop_fit,“g -”...cdate、pop_fit + 2 *δ“:”...cdate、pop_fit-2 *δ“:”);包含(“人口普查年”);ylabel (“人口(百万)”);标题(“带置信度的二次多项式拟合”网格)

图中包含一个axes对象。标题为“二次多项式拟合置信边界”的axis对象包含4个类型为line的对象。

95%区间表示有95%的可能性,新的观察结果将处于该范围内。

Baidu
map