主要内容

曲线拟合和分布拟合

这个例子展示了如何进行曲线拟合和分布拟合,并讨论了每种方法何时合适。

选择曲线拟合和分布拟合

曲线拟合和分布拟合是不同类型的数据分析。

  • 当您希望将响应变量建模为预测变量的函数时,请使用曲线拟合。

  • 当你想对单个变量的概率分布建模时,使用分布拟合。

曲线拟合

在下面的实验数据中,预测变量为时间服药后的时间。响应变量为浓缩的即药物在血液中的浓度。假设只有响应数据浓缩的受实验误差的影响。

时间= [0.1 0.1 0.3 0.3 1.3 1.7 2.1 2.6 3.9 3.9 ....5.1 5.6 6.2 6.4 7.7 8.1 8.2 8.9 9.0 9.5...9.6 10.2 10.3 10.8 11.2 11.2 11.2 11.2 11.7 12.1 12.3...12.3 13.1 13.2 13.4 13.7 14.0 14.3 15.4 16.1 16.1...16.4 16.4 16.7 16.7 17.5 17.6 18.1 18.5 19.3 19.7]';Conc = [0.01 0.08 0.13 0.16 0.55 0.90 1.11 1.62 1.79 1.59 ....1.83 1.68 2.09 2.17 2.66 2.08 2.26 1.65 1.70 2.39...2.08 2.02 1.65 1.96 1.91 1.30 1.62 1.57 1.32 1.56...1.36 1.05 1.29 1.32 1.20 1.10 0.88 0.63 0.69 0.69...0.49 0.53 0.42 0.48 0.41 0.27 0.36 0.33 0.17 0.20]';

假设你想把血液浓度建模为时间的函数。情节浓缩的反对时间

情节(时间、浓缩的“o”);包含(“时间”);ylabel (的血药浓度);

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

假设浓缩的的函数,遵循双参数威布尔曲线时间.威布尔曲线有其形式和参数

y c x / 一个 b - 1 e - x / 一个 b

在哪里 一个 是水平缩放, b 是形状参数,和 c 是垂直缩放。

用非线性最小二乘拟合Weibull模型。

modelFun = @ (p, x) p (3) . * (x / p (1)) ^ (p(2) 1)。* exp (- (x / p(1)) ^(2)页);startingVals = [10 2 5];nlModel = fitnlm(time,conc,modelFun,startingVals);

在数据上绘制威布尔曲线。

Xgrid = linspace(0,20,100)';线(xgrid预测(nlModel xgrid),“颜色”“r”);

图中包含一个轴对象。axis对象包含2个line类型的对象。

拟合的威布尔模型有问题。fitnlm假设实验误差是相加的,并且来自于常数方差的对称分布。然而,散点图显示误差方差与曲线的高度成正比。此外,附加的对称误差意味着负血药浓度测量是可能的。

一个更现实的假设是乘法误差在对数尺度上是对称的。在这个假设下,通过对两边取对数来拟合数据的威布尔曲线。采用非线性最小二乘拟合曲线:

日志 y 日志 c + b - 1 日志 x / 一个 - x / 一个 b

nlModel2 = fitnlm(time,log(conc),@(p,x) log(modelFun(p,x)),startingVals);

将新曲线添加到现有图中。

线(xgrid exp(预测(nlModel2 xgrid)),“颜色”,[0 .5 0],“线型”“——”);传奇({“原始数据”“附加误差模型”“乘法误差模型”});

图中包含一个轴对象。axis对象包含3个line类型的对象。这些对象代表原始数据、加性误差模型、乘性误差模型。

模型对象nlModel2包含精度估计。最好的做法是检查模型的拟合优度。例如,在对数尺度上绘制残差图,以检查乘法误差方差恒定的假设。

在本例中,使用乘法误差模型对模型预测的影响很小。有关模型类型具有更大影响的示例,请参见转换为线性模型拟合非线性模型的缺陷

曲线拟合函数

  • 统计和机器学习工具箱™包括这些函数拟合模型:fitnlm对于非线性最小二乘模型,fitglm对于广义线性模型,fitrgp对于高斯过程回归模型,和fitrsvm支持向量金宝app机回归模型。

  • 曲线拟合工具箱™提供了简化曲线拟合任务的命令行和图形工具。例如,该工具箱为各种模型提供了启动系数值的自动选择,以及鲁棒性和非参数拟合方法。

  • 优化工具箱™具有执行复杂类型的曲线拟合分析的功能,例如分析具有系数约束的模型。

  • MATLAB®函数polyfit拟合多项式模型,MATLAB函数fminsearch在其他类型的曲线拟合中也很有用。

分布拟合

假设您想要建模电子元件寿命的分布。的变量生活测量50个相同电气元件的故障时间。

生命= [6.2 16.1 16.3 19.0 12.2 8.1 8.8 5.9 7.3 8.2 ....16.1 12.8 9.8 11.3 5.1 10.8 6.7 1.2 8.3 2.3...4.3 2.9 14.8 4.6 3.1 13.6 14.5 5.2 5.7 6.5 ....5.3 6.4 3.5 11.4 9.3 12.4 18.3 15.9 4.0 10.4 ....8.7 3.0 12.1 3.9 6.5 3.4 8.5 0.9 9.9 7.9]';

用直方图可视化数据。

binWidth = 2;lastVal = ceil(max(life));binEdges = 0:binWidth:lastVal+1;h =直方图(life,binEdges);包含(“失败的时刻”);ylabel (“频率”);ylim ([0 10]);

图中包含一个轴对象。坐标轴对象包含一个直方图类型的对象。

因为生命周期数据通常遵循威布尔分布,一种方法可能是使用前面曲线拟合示例中的威布尔曲线来拟合直方图。要尝试这种方法,请将直方图转换为一组点(x,y),其中x是容器中心,y是容器高度,然后将曲线拟合到这些点上。

counts = histcounts(life,binEdges);binCtrs = binEdges(1:end-1) + binWidth/2;h.FaceColor = [.]9 .9 .9];持有情节(binCtrs计数,“o”);持有

图中包含一个轴对象。axis对象包含2个直方图类型的对象,line。

然而,拟合曲线到直方图是有问题的,通常不推荐。

  1. 这个过程违反了最小二乘拟合的基本假设。箱子计数是非负的,这意味着测量误差不可能是对称的。此外,箱子的数量在尾部和在分布的中心有不同的可变性。最后,箱子计数有一个固定的和,这意味着它们不是独立的测量。

  2. 如果将威布尔曲线拟合到条形高度,则必须约束该曲线,因为直方图是经验概率密度函数(pdf)的缩放版本。

  3. 对于连续数据,拟合曲线到直方图而不是数据丢弃信息。

  4. 柱状图中的条形高度依赖于料仓边和料仓宽度的选择。

对于许多参数分布,最大似然是估计参数的更好方法,因为它避免了这些问题。威布尔pdf与威布尔曲线的形式几乎相同:

y b / 一个 x / 一个 b - 1 e - x / 一个 b

然而, b / 一个 替换缩放参数 c 因为函数必须积分为1。要使用最大似然将威布尔分布拟合到数据,请使用fitdist并指定“威布尔”作为发行版名称。与最小二乘不同,最大似然可以找到与缩放直方图最匹配的威布尔pdf,而不会最小化pdf与柱状条高度之间的平方差之和。

Pd = fitdist(生命,“威布尔”);

绘制数据的比例直方图,并叠加拟合的pdf。

h =直方图(life,binEdges,“归一化”“pdf”“FaceColor”,(。9 .9 .9]);包含(“失败的时刻”);ylabel (的概率密度);ylim (0.1 [0]);Xgrid = linspace(0,20,100)';pdfEst = pdf(pd,xgrid);线(xgrid, pdf)

图中包含一个轴对象。axis对象包含2个直方图类型的对象,line。

最好的做法是检查模型的拟合优度。

虽然通常不建议将曲线拟合为直方图,但在某些情况下,这个过程是合适的。有关示例,请参见适合自定义分布

分布拟合函数

  • 统计和机器学习工具箱™包括的功能fitdist用于将概率分布对象拟合到数据。它还包括专用的拟合函数(例如wblfit),以最大似然法拟合参数分布大中型企业用于自定义分布的拟合函数,无需专用的拟合函数ksdensity用于拟合非参数分布模型到数据。

  • 统计和机器学习工具箱还提供分布更健康应用程序,它简化了分布拟合中的许多任务,例如生成可视化和诊断图。

  • 优化工具箱™中的函数使您能够适应复杂的分布,包括对参数有约束的分布。

  • MATLAB®函数fminsearch提供最大似然分布拟合。

另请参阅

|||||||||

相关的话题