这个例子显示了如何适应多项式高达第六度使用曲线拟合工具箱™一些普查数据。它也显示了如何适应一个长期的指数方程,并比较这对多项式模型。
步骤说明如何:
使用不同的模型库加载数据,并创建适合。
通过比较图形拟合结果,通过比较数值拟合结果包括拟合系数和拟合优度统计量来搜索最佳拟合。
用于该示例的数据是文件census.mat
。
加载人口调查
工作区包含两个新变量:
cdate
是一个列向量,以10年为单位,包含1790到1990年。
流行
是与对应于年在美国人口数字的列向量cdate
。
谁是cdate流行
名称大小字节类属性cdate 21x1 168双pop 21x1 168双
情节(cdate、流行,“o”)
使用适合
功能,以适应多项式到数据。您指定的二次或二次多项式,以字符串“poly2”
。从第一输出适合
是多项式,并且所述第二输出,GOF
包含拟合统计,你会在后面的步骤检查的善良。
[population2, gof] =适合(cdate、流行、“poly2”);
要绘制拟合图,使用情节
功能。在左上角添加一个传奇。
情节(population2、cdate、流行);传奇(“位置”,'西北');
为了适应不同程度的多项式,改变fittype串,例如,对于一个立方体或三次多项式使用'POLY3'
。输入的尺度,cdate
,非常大,因此通过对数据进行定心和缩放,可以获得更好的结果。要做到这一点,使用“正常化”
选择。
population3 =拟合(CDATE,流行,'POLY3',“正常化”,'上');population4 =拟合(CDATE,流行,“聚4-”,“正常化”,'上');population5 =拟合(CDATE,流行,'poly5',“正常化”,'上');population6 =适合(cdate、流行、“poly6”,“正常化”,'上');
人口增长的一个简单模型告诉我们,指数方程应该很好地符合人口普查数据。拟合单项指数模型,使用“exp1”
作为fittype。
populationExp =适合(cdate、流行、“exp1”);
一次绘制所有匹配,并在绘图的左上角添加一个有意义的图例。
保持在图(population3,'B');情节(population4‘g’);图(population5,“米”);情节(population6“b——”);情节(populationExp“r——”);保持从传奇('CDATE v弹出',“poly2”,'POLY3',“聚4-”,'poly5',“poly6”,“exp1”,...“位置”,'西北');
若要绘制残差,请指定“残差”
作为情节类型情节
功能。
情节(population2 cdate、流行、“残差”);
为多项式方程的拟合和残留物都是相似的,因此很难选择最好的一个。
如果残差显示出一种系统模式,这是一个明显的迹象,表明模型与数据不匹配。
图(populationExp,CDATE,流行,“残差”);
单项指数方程的拟合和残差表明它是一个较差的拟合。因此,这是一个糟糕的选择,你可以把指数拟合从候选的最佳拟合中移除。
检查拟合的行为直到2050年拟合普查数据的目的是来推断预测未来人口值的最佳选择。
默认情况下,拟合是在数据范围内绘制的。要在不同的范围内绘制拟合,请在绘制拟合之前设置坐标轴的x限值。例如,将x值的上限设为2050年,就可以从拟合中推断出相应的值。
情节(cdate、流行,“o”);XLIM([1900年,2050]);保持在情节(population6);保持从
检查的情节。第六度多项式拟合超出数据范围的行为,使其成为外插一个糟糕的选择,你可以拒绝此契合。
要绘制预测区间,使用'predobs'
或'predfun'
随着剧情的类型。例如,看到了五阶多项式的一个新的观察长达2050年的预测范围:
情节(cdate、流行,“o”);xlim((1900、2050))在图(population5,'predobs');保持从
绘制到2050年的三次多项式预测区间:
情节(cdate、流行,“o”);xlim((1900、2050))在图(population3,'predobs')举行从
的结构体GOF
的拟合优度统计信息“poly2”
健康。当您创建“poly2”
符合适合
函数在前面的步骤中,指定了GOF
输出参数。
GOF
GOF =结构体字段:上证指数:159.0293 rsquare: 0.9987 dfe: 18 adjrsquare: 0.9986 rmse: 2.9724
检查由于错误(SSE)和调整后的R平方统计平方来帮助总和确定最合适的。所述SSE统计是拟合的最小二乘误差,用一个值更接近零指示的更好配合。调整后的R平方统计一般是当你添加额外的系数到模型的拟合质量的最佳指标。
大上证所“exp1”
表示拟合度较差,这是您通过检查拟合度和残差已经确定的。最小的SSE值与“poly6”
。但是,这种拟合超出了数据范围,这使得它不适合进行外推,所以通过检查具有新的轴限制的图,您已经拒绝了这种拟合。
下一个最优SSE值与五次多项式拟合有关,'poly5'
,表明它可能是最合适的。然而,其余多项式拟合的SSE和调整r平方值都非常接近。你应该选择哪一个?
通过检查剩余拟合的系数和置信界来解决最佳拟合问题:五次多项式和二次多项式。
检查population2
和population5
通过显示模型,拟合系数,并为安装系数的置信区间:
population2
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)
population5
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 = confint(population5)
ci =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 * X ...
)以查看每个系数的模型项。注意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%置信区间,使用predint
方法:
ci = predint (population2 cdateFuture, 0.95,“观察”)
ci =3×2266.9185 282.3257 293.5673 310.0807 321.3979 339.2702
绘制预测的未来人口,置信区间,对适应和数据。
情节(cdate、流行,“o”);XLIM([1900,2040])保持在h = errorbar(cdateFuture,popFuture,popFuture-ci(:,1),ci(:,2)-popFuture,'');保持从传奇('CDATE v弹出',“poly2”,“预测”,...“位置”,'西北')
有关更多信息,请参见多项式模型。