主要内容

多项式曲线拟合

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

这些步骤显示了如何:

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

  • 通过比较图形拟合结果,以及比较数值拟合结果(包括拟合系数和拟合优度统计量)来寻找最佳拟合结果。

加载并绘制数据

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

负载人口普查

工作区包含两个新变量:

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

  • 流行列向量是美国人口数据对应的年份吗cdate

cdate流行
名称大小字节类属性cdate 21x1 168 double pop 21x1 168 double
绘图(cdate、pop、,“o”

图中包含一个axes对象。axes对象包含一个line类型的对象。

创建并绘制二次曲线

使用适合函数来拟合多项式到数据。你指定一个二次多项式,用“poly2”.的第一个输出适合是多项式,第二个输出,gof,包含您将在后面的步骤中检查的拟合优度统计数据。

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

要绘制拟合,请使用情节函数。在左上角添加一个图例。

情节(population2、cdate、流行);传奇(“位置”“西北”);

图中包含一个轴对象。轴对象包含两个类型为line的对象。这些对象代表数据、拟合曲线。

创建和绘制多项式的选择

若要拟合不同程度的多项式,请改变拟合类型,例如三次或三次多项式“poly3”.投入的规模,cdate,非常大,因此可以通过居中和缩放数据来获得更好的结果。为此,请使用“正常化”选择。

population3 =适合(cdate、流行、“poly3”“正常化”“上”);population4 =适合(cdate、流行、“poly4”“正常化”“上”);population5 =适合(cdate、流行、“poly5”“正常化”“上”);人口6=适合(cdate、pop、,“poly6”“正常化”“上”);

一个简单的人口增长模型告诉我们,指数方程应该很好地拟合人口普查数据“exp1”fittype。

populationExp =适合(cdate、流行、“exp1”);

一次绘制所有适合的情节,并在情节的左上角添加一个有意义的传奇。

持有情节(population3“b”);绘图(人口4,“g”); 地块(人口5,“米”);绘图(人口6,“b——”);情节(populationExp“r——”);持有传奇(“cdate v流行”“poly2”“poly3”“poly4”“poly5”“poly6”“exp1”...“位置”“西北”);

图中包含一个轴对象。axis对象包含7个类型为line的对象。这些对象代表cdate v pop, poly2, poly3, poly4, poly5, poly6, exp1。

绘制残差以评估拟合

要绘制残差,请指定“残差”的情节类型情节函数。

情节(population2 cdate、流行、“残差”);

图中包含一个轴对象。轴对象包含两个类型为line的对象。这些对象表示数据,零线。

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

如果残差显示系统模式,则表明模型与数据拟合较差。

情节(populationExp cdate、流行、“残差”);

图中包含一个轴对象。轴对象包含两个类型为line的对象。这些对象表示数据,零线。

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

检查超出数据范围的拟合

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

默认情况下,将在数据范围内绘制拟合。若要在不同范围内绘制拟合,请在绘制拟合之前设置轴的x限制。例如,若要查看从拟合推断的值,请将x限制上限设置为2050。

绘图(cdate、pop、,“o”);xlim((1900、2050));持有绘图(填充6);保持

图形包含一个轴对象。轴对象包含2个线型对象。此对象表示拟合曲线。

检查情节。超出数据范围的六次多项式拟合的行为使它成为一个糟糕的外推选择,你可以拒绝这种拟合。

情节的预测区间

要绘制预测间隔,请使用“predobs”“predfun”作为情节类型。例如,要查看到2050年的新观测的五次多项式的预测边界:

绘图(cdate、pop、,“o”);xlim([19002050])保持地块(人口5,“predobs”);持有

图中包含一个轴对象。轴对象包含4个类型为line的对象。这些对象代表拟合曲线、预测边界。

截至2050年的三次多项式的绘图预测间隔:

绘图(cdate、pop、,“o”);xlim([19002050])保持情节(population3“predobs”)举行

图中包含一个轴对象。轴对象包含4个类型为line的对象。这些对象代表拟合曲线、预测边界。

检查拟合优度统计

的结构体gof显示对象的拟合优度统计信息“poly2”健康。当您创建“poly2”符合适合函数在前面的步骤中,您指定了gof输出参数。

gof
gof =带字段的结构:sse:159.0293平方米:0.9987 dfe:18调整平方米:0.9986 rmse:2.9724

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

为大盘上交所“exp1”表示拟合不良,已通过检查拟合和残差确定。最低SSE值与“poly6”.然而,这种拟合超出了数据范围的行为使其成为一个糟糕的外推选择,因此您已经通过检查带有新轴限制的图来拒绝这种拟合。

次优SSE值与五次多项式拟合相关,“poly5”,暗示这可能是最合适的。然而,剩余多项式拟合的SSE和调整后的r平方值都非常接近。你应该选择哪一个?

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

通过检查其余拟合(五次多项式和二次多项式)的系数和置信边界来解决最佳拟合问题。

检查population2population5通过显示模型、拟合系数和拟合系数的置信界限:

population2
系数(95%置信限):p1 = 0.006541 (0.006124, 0.006958) p2 = -23.51 (-25.09, -21.93) p3 = 2.113e+04 (1.964e+04, 2.262 2e+04)
population5
population5=线性模型Poly5:population5(x)=p1*x^5+p2*x^4+p3*x^3+p4*x^2+p5*x+p6,其中x通过平均值1890和标准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.59,51.95)

您还可以通过使用证实

ci = confint (population5)
词=2×6-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 *……)来查看每个系数的模型项。请注意,p2p2*x术语“poly2”p2*x^4术语“poly5”.不要直接比较标准化系数和非标准化系数。

边界在边界上过零p1p2,p3五次多项式的系数。这意味着你不能确定这些系数不等于零。如果高阶模型项的系数可能为零,则对拟合没有帮助,这表明该模型对人口普查数据拟合过度。

对于每个标准化多项式方程,与常数项、线性项和二次项相关的拟合系数几乎相同。但是,随着多项式次数的增加,与高次项相关的系数边界将超过零,这表明过度拟合。

但是,小的置信限不会超过零p1p2,p3对于二次拟合,表明拟合系数已知相当准确。

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

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

现在您已经选择了最合适的,population2,为了推断此普查数据,请评估一些新查询点的拟合度:

cdateFuture =(2000:10:2020)。';popFuture = population2 (cdateFuture)
popFuture =3×1274.6221 301.8240 330.3341

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

ci=预测(人口2,CDATE未来,0.95,“观察”
词=3×2266.9185 282.3257 293.5673 310.0807 321.3979 339.2702

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

绘图(cdate、pop、,“o”);xlim((1900、2040))plot(population2)h=errorbar(cdateFuture,popFuture,popFuture ci(:,1),ci(:,2)-popFuture,“。”);持有传奇(“cdate v流行”“poly2”“预测”...“位置”“西北”

图中包含一个Axis对象。Axis对象包含3个line、errorbar类型的对象。这些对象表示cdate v pop、poly2和prediction。

有关详细信息,请参阅多项式模型