评估曲线拟合
此示例说明如何使用曲线拟合。
加载数据并拟合多项式曲线
load census curvefit = fit(cdate,pop,'poly3','normalize','on')
curvefit = Linear model Poly3: curvefit(x) = p1*x^3 + p2*x^2 + p3*x + p4 where x is normalized by mean 1890 and std 62.05 Coefficients (with 95% confidence bounds): p1 = 0.921 (-0.9743, 2.816) p2 = 25.18 (23.57, 26.79) p3 = 73.86 (70.33, 77.39) p4 = 61.74 (59.69, 63.8)
输出显示拟合的模型方程、拟合的系数以及拟合系数的置信边界。
绘制拟合、数据、残差和预测边界
plot(curvefit,cdate,pop)
绘制残差拟合图。
plot(curvefit,cdate,pop,'Residuals')
绘制拟合的预测边界。
plot(curvefit,cdate,pop,'predfunc')
评估指定点处的拟合
使用以下格式通过指定 x
的一个值来计算特定点处的拟合:y = fittedmodel(x)
。
curvefit(1991)
ans = 252.6690
评估多个点处的拟合值
计算模型在值向量处的值,将值外插到 2050 年。
xi = (2000:10:2050).'; curvefit(xi)
ans = 6×1
276.9632
305.4420
335.5066
367.1802
400.4859
435.4468
获取这些值的预测边界。
ci = predint(curvefit,xi)
ci = 6×2
267.8589 286.0674
294.3070 316.5770
321.5924 349.4208
349.7275 384.6329
378.7255 422.2462
408.5919 462.3017
基于经外插后的拟合范围绘制拟合和预测区间图。默认情况下,系统会基于数据范围拟合图。要查看拟合的外插值,请在绘制拟合图之前将坐标区的 x 上限设置为 2050。要绘制预测区间图,请使用 predobs
或 predfun
作为绘图类型。
plot(cdate,pop,'o') xlim([1900,2050]) hold on plot(curvefit,'predobs') hold off
获取模型方程
输入拟合名称以显示模型方程、拟合系数和拟合系数的置信边界。
curvefit
curvefit = Linear model Poly3: curvefit(x) = p1*x^3 + p2*x^2 + p3*x + p4 where x is normalized by mean 1890 and std 62.05 Coefficients (with 95% confidence bounds): p1 = 0.921 (-0.9743, 2.816) p2 = 25.18 (23.57, 26.79) p3 = 73.86 (70.33, 77.39) p4 = 61.74 (59.69, 63.8)
要仅获得模型方程,请使用 formula
。
formula(curvefit)
ans = 'p1*x^3 + p2*x^2 + p3*x + p4'
获取系数名称和值
通过名称指定一个系数。
p1 = curvefit.p1
p1 = 0.9210
p2 = curvefit.p2
p2 = 25.1834
获取所有系数名称。查看拟合方程(例如 f(x) = p1*x^3+...
)以查看每个系数的模型项。
coeffnames(curvefit)
ans = 4x1 cell
{'p1'}
{'p2'}
{'p3'}
{'p4'}
获取所有系数值。
coeffvalues(curvefit)
ans = 1×4
0.9210 25.1834 73.8598 61.7444
获得系数的置信边界
使用系数的置信边界来帮助您评估和比较拟合情况。系数的置信边界确定其准确性。相距很远的边界表示存在不确定性。如果线性系数的置信边界跨越了零点,这意味着您无法确定这些系数是否与零有差异。如果一些模型项的系数为零,则它们对拟合没有影响。
confint(curvefit)
ans = 2×4
-0.9743 23.5736 70.3308 59.6907
2.8163 26.7931 77.3888 63.7981
检查拟合优度统计量
要在命令行中获得拟合优度统计量,您可以采用以下任一方法:
打开曲线拟合器。在曲线拟合器选项卡的导出部分中,点击导出并选择导出到工作区,以将您的拟合和拟合优度导出到工作区。
使用
fit
函数指定gof
输出参量。
通过指定 gof
和输出参量重新创建拟合,以获得拟合优度统计量和拟合算法信息。
[curvefit,gof,output] = fit(cdate,pop,'poly3','normalize','on')
curvefit = Linear model Poly3: curvefit(x) = p1*x^3 + p2*x^2 + p3*x + p4 where x is normalized by mean 1890 and std 62.05 Coefficients (with 95% confidence bounds): p1 = 0.921 (-0.9743, 2.816) p2 = 25.18 (23.57, 26.79) p3 = 73.86 (70.33, 77.39) p4 = 61.74 (59.69, 63.8)
gof = struct with fields:
sse: 149.7687
rsquare: 0.9988
dfe: 17
adjrsquare: 0.9986
rmse: 2.9682
output = struct with fields:
numobs: 21
numparam: 4
residuals: [21x1 double]
Jacobian: [21x4 double]
exitflag: 1
algorithm: 'QR factorization and solve'
iterations: 1
绘制残差直方图,寻找大致正态的分布。
histogram(output.residuals,10)
绘制拟合、数据和残差的图
plot(curvefit,cdate,pop,'fit','residuals') legend Location SouthWest subplot(2,1,1) legend Location NorthWest
查找方法
列出您可以用于拟合的每种方法。
methods(curvefit)
Methods for class cfit: argnames category cfit coeffnames coeffvalues confint dependnames differentiate feval fitoptions formula indepnames integrate islinear numargs numcoeffs plot predint probnames probvalues setoptions type
有关如何使用拟合方法的详细信息,请参阅 cfit
。