这个示例展示了如何使用曲线拟合工具箱™将多项式拟合到六度以下的一些普查数据。它还展示了如何拟合一个单项指数方程,并将其与多项式模型进行比较。
这些步骤显示了如何:
使用不同的库模型加载数据并创建适合的版本。
通过比较图形拟合结果,以及比较数值拟合结果(包括拟合系数和拟合优度统计量)来寻找最佳拟合结果。
本示例的数据是文件census.mat
.
负载人口普查
工作区包含两个新变量:
cdate
是以10年为增量包含1790年至1990年的列向量。
流行
列向量是美国人口数据对应的年份吗cdate
.
谁cdate流行
名称大小字节类属性cdate 21x1 168 double pop 21x1 168 double
绘图(cdate、pop、,“o”)
使用适合
函数来拟合多项式到数据。你指定一个二次多项式,用“poly2”
.的第一个输出适合
是多项式,第二个输出,gof
,包含您将在后面的步骤中检查的拟合优度统计数据。
[population2,gof]=fit(cdate,pop,“poly2”);
要绘制拟合,请使用情节
函数。在左上角添加一个图例。
情节(population2、cdate、流行);传奇(“位置”,“西北”);
若要拟合不同程度的多项式,请改变拟合类型,例如三次或三次多项式“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”,...“位置”,“西北”);
要绘制残差,请指定“残差”
的情节类型情节
函数。
情节(population2 cdate、流行、“残差”);
多项式方程的拟合和残差都是相似的,因此很难选择最好的。
如果残差显示系统模式,则表明模型与数据拟合较差。
情节(populationExp cdate、流行、“残差”);
单项指数方程的拟合和残差表明它是一个较差的整体拟合。因此,这是一个糟糕的选择,你可以从最佳拟合的候选中去除指数拟合。
检查到2050年的行为。拟合人口普查数据的目的是外推最佳拟合来预测未来的人口价值。
默认情况下,将在数据范围内绘制拟合。若要在不同范围内绘制拟合,请在绘制拟合之前设置轴的x限制。例如,若要查看从拟合推断的值,请将x限制上限设置为2050。
绘图(cdate、pop、,“o”);xlim((1900、2050));持有在绘图(填充6);保持关
检查情节。超出数据范围的六次多项式拟合的行为使它成为一个糟糕的外推选择,你可以拒绝这种拟合。
要绘制预测间隔,请使用“predobs”
或“predfun”
作为情节类型。例如,要查看到2050年的新观测的五次多项式的预测边界:
绘图(cdate、pop、,“o”);xlim([19002050])保持在地块(人口5,“predobs”);持有关
截至2050年的三次多项式的绘图预测间隔:
绘图(cdate、pop、,“o”);xlim([19002050])保持在情节(population3“predobs”)举行关
的结构体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平方值都非常接近。你应该选择哪一个?
通过检查其余拟合(五次多项式和二次多项式)的系数和置信边界来解决最佳拟合问题。
检查population2
和population5
通过显示模型、拟合系数和拟合系数的置信界限:
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 *……
)来查看每个系数的模型项。请注意,p2
指p2*x
术语“poly2”
和p2*x^4
术语“poly5”
.不要直接比较标准化系数和非标准化系数。
边界在边界上过零p1
,p2
,p3
五次多项式的系数。这意味着你不能确定这些系数不等于零。如果高阶模型项的系数可能为零,则对拟合没有帮助,这表明该模型对人口普查数据拟合过度。
对于每个标准化多项式方程,与常数项、线性项和二次项相关的拟合系数几乎相同。但是,随着多项式次数的增加,与高次项相关的系数边界将超过零,这表明过度拟合。
但是,小的置信限不会超过零p1
,p2
,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”,“预测”,...“位置”,“西北”)
有关详细信息,请参阅多项式模型.