文档

多项式曲线拟合

此示例演示如何使用曲线拟合工具箱将多项式拟合到某些普查数据的六次方™. 它还展示了如何拟合单项指数方程,并将其与多项式模型进行比较。

步骤显示如何:

  • 加载数据并使用不同的库模型创建拟合。

  • 通过比较图形拟合结果来搜索最合适,并通过比较数值拟合结果,包括拟合系数和拟合统计的良好。

加载并绘制数据

本例中的数据是文件census.mat

负载人口普查

工作区包含两个新变量:

  • cdate列向量,以10年为单位包含1790年至1990年。

  • 流行音乐是一个列向量,其中包含与年相对应的美国人口数字cdate

cdate流行音乐绘图(cdate、pop、,'o')
Name Size Bytes Class Attributes cdate 21x1 168 double pop 21x1 168 double

创建并绘制二次曲线

使用适合函数来拟合一个多项式到数据。你用字符串指定一个二次或二次多项式“poly2”。从适合是多项式,第二个输出,戈夫,包含拟合优度统计信息,您将在后面的步骤中进行检查。

[population2,gof]=fit(cdate,pop,“poly2”);

要画出合适的曲线,使用情节方法。

绘图(人口2、cdate、pop);%将图例移动到左上角。传奇('地点',“西北”);

创建并绘制选定的多项式

要拟合不同阶数的多项式,请更改fittype字符串,例如,用于三次多项式或三次多项式“poly3”.输入的规模,cdate,是相当大的,因此可以通过对数据进行居中和缩放来获得更好的结果。要做到这一点,使用“正常化”选项。

= fit(cdate, pop,)“poly3”,“正常化”,“开”);人口4 =适合(Cdate,Pop,‘poly4’,“正常化”,“开”);人口5 =适合(Cdate,Pop,“poly5”,“正常化”,“开”); 人口6=适合(cdate、pop、,“poly6”,“正常化”,“开”);

一个简单的人口增长模型告诉我们,指数方程应该能很好地拟合人口普查数据。要拟合一个单项指数模型,使用“exp1”作为合适的类型。

populationExp=fit(cdate、pop、,“exp1”);

立即绘制所有适合,并在情节的左上角添加有意义的图例。

持有图(人口3,“b”);情节(population4‘g’);绘图(人口5,“米”);绘图(人口6,'B--');plot(populationExp,“r——”);持有传奇(“cdate v pop”,“poly2”,“poly3”,‘poly4’,“poly5”,“poly6”,“exp1”,...'地点',“西北”);

绘制残差以评估拟合

要绘制残差,请指定“残差”作为中的打印类型情节方法。

情节(人口2,Cdate,Pop,“残差”);

多项式方程的拟合和残差都是相似的,因此很难选择最佳的。

如果残差显示出系统模式,这是一个明确的信号,表明模型与数据的拟合很差。

plot(populationExp, cdate, pop,“残差”);

单项指数方程的拟合和残差表明它是一个较差的整体拟合。因此,这是一个糟糕的选择,你可以从最佳拟合的候选中去除指数拟合。

检查超出数据范围的适合度

检查截至2050年的拟合行为。拟合人口普查数据的目的是推断预测未来人口值的最佳拟合。

默认情况下,拟合是在数据范围内绘制的。要在不同范围内绘制拟合图,在绘制拟合图之前设置坐标轴的x极限。例如,要查看从适合度推断出的值,可以将x上限设置为2050。

绘图(cdate、pop、,'o');Xlim ([1900, 2050]);持有情节(population6);持有

检查绘图。超出数据范围的六次多项式拟合的行为使其成为外推的糟糕选择,您可以拒绝此拟合。

图预测区间

要绘制预测区间,使用“先兆”或者“predfun”作为绘图类型。例如,要查看2050年前新观测值的五次多项式预测范围:

绘图(cdate、pop、,'o');XLIM([1900,2050])举行地块(人口5,“先兆”);持有

到2050年的三次多项式的Plot预测区间:

绘图(cdate、pop、,'o');XLIM([1900,2050])举行图(人口3,“先兆”)举行

检验拟合优度统计

结构戈夫显示对象的拟合优度统计信息“poly2”合身。当你创造的时候“poly2”符合适合函数中指定的戈夫输出参数。

戈夫
gof=带字段的结构:sse:159.0293 rsquare:0.9987 dfe:18 adjrsquare:0.9986 rmse:2.9724

检查误差引起的平方和(SSE)和调整后的R平方统计量,以帮助确定最佳拟合。SSE统计量是拟合的最小二乘误差,接近零的值表示更好的拟合。调整后的R平方统计量通常是向模型添加额外系数时拟合质量的最佳指标。

大型苏格兰和南方能源公司“exp1”表明它是一个差拟合,这是您已经通过检查拟合和残差确定的。最低的SSE值与“poly6”.但是,这种适合超出数据范围的行为使其成为外推的差,因此您已经通过检查新轴限制来拒绝这种拟合。

下一个最好的SSE值与五次多项式拟合有关,“poly5”,建议它可能是最合适的。然而,剩余多项式适合的SSE和调整后的R平方值彼此非常接近。你应该选择哪一个?

比较系数和置信限,以确定最佳拟合

通过检验剩余拟合的系数和置信界限来解决最佳拟合问题:五次多项式和二次多项式。

检查人口2人口5通过显示模型、拟合系数和拟合系数的置信限:

人口2
population2=线性模型Poly2:population2(x)=p1*x^2+p2*x+p3系数(具有95%置信限):p1=0.006541(0.006124,0.006958)p2=-23.51(-25.09,-21.93)p3=2.113e+04(1.964e+04,2.262e+04)
人口5
population5 =线性模型Poly5: population5 (x) = p1 * x ^ 5 + p2 * x ^ 4 + p3 * x ^ 3 + p4 * x ^ 2 + p5 * x + p6 x是由平均1890和std 62.05归一化系数(95%置信界限):p1 = 0.5877 (-2.305, 3.48) p2 = 0.7047 (-1.684, 3.094) p3 = -0.9193 (-10.19, 8.356) p4 = 23.47 (17.42, 29.52) p5 = 74.97 (68.37, 81.57) p6 = 62.23 (59.51, 64.95)

您还可以使用confint:

CI =捏(人口5)
Ci = -2.3046 -1.6841 -10.1943 17.4213 68.3655 59.5102 3.4801 3.0936 8.3558 29.5199 81.5696 64.9469

系数的置信界限决定了它们的准确性。检查拟合方程(例如:f(x)=p1*x+p2*x。。。)查看每个系数的模型项。注意p2指的是p2*x任期“poly2”p2 * x ^ 4任期“poly5”.不要将归一化系数直接与非归一化系数进行比较。

边界越过0p1,p2,p3五次多项式的系数。这意味着您无法确定这些系数是否与零不同。如果高阶模型项的系数可能为零,则它们无助于拟合,这表明此模型与人口普查数据拟合过度。

与常数、线性和二次项相关的拟合系数对于每个归一化多项式方程几乎相同。然而,随着多项式次数的增加,与高次项相关的系数界限越过零,这表明过拟合。

然而,小的置信界限并没有越过零p1,p2,p3对于二次拟合,表明拟合系数已知相当准确。

因此,在检查图形和数值拟合结果后,应选择二次曲线人口2最适合推算人口普查数据。

评估新查询点处的最佳匹配

现在你选择了最合适的,人口2,为了推断人口普查数据,评估对一些新查询点的适合度:

cdateFuture =(2000:10:2020)。';popFuture = population2(cdateFuture)
popFuture=274.6221 301.8240 330.3341

要计算未来人口预测的95%置信限,请使用predint方法:

ci = predint(population2, cdateFuture, 0.95,)“观察”)
ci=266.9185282.3257293.5673310.0807321.3979339.2702

根据拟合和数据,用置信区间绘制预测的未来人口。

绘图(cdate、pop、,'o');xlim([1900,2040])保持/ / / / / / / / / / / / / / / / / / /'.');持有传奇(“cdate v pop”,“poly2”,“预测”,...'地点',“西北”)

要了解更多信息,请参阅多项式模型

这个话题有用吗?