您什么时候可能需要分段非线性解决方案来应对您的挑战?@杰瑞鱼与我分享了一些例子:
- 也许您正在监视一个输出增长率突然变化的过程。您想知道变化何时发生,以及变化点之前和之后坡度变化了多少。
- 也许您正在监控公司的财务状况。该公司一直处于低增长状态,但新产品的推出导致增长率发生巨大变化。
- 从新冠病毒感染率来看,有很多高峰和低谷。也许您想要将函数拟合到这些基于时间的曲线的各个部分。我们可能不想将曲线分开,而是想一次对曲线的所有部分进行分段拟合。
这很棒@杰瑞鱼! 我很想听听您对这与 FDE 平台有何关系(或无关)的看法。 也许会有第 6 部分。
这是有关如何将分段连续函数拟合到数据集的系列文章中的第四篇。我喜欢在每篇文章的开头都提供该系列之前所有其他文章的链接:
继续第 4 部分...
介绍
在本系列之前的文章中,我们一直在研究下图所示的数据集:
Figure 1: Sample Data Set.图 1:示例数据集。
到目前为止,我们已经讨论了分割数据区域并定义与每个区域相关的曲线,包括:
- 利用端点处的连续性消除分段方程的一些系数。
- 使用JMP的公式编辑器将未知参数和多个方程全部合并到一个公式中,为求解未知数做好准备。
现在我们准备使用 JMP 的非线性平台来查找未知参数并给出最佳拟合模型。现在我们讨论:
- 如何使用 JMP 的非线性平台求解分段方程
- 通过以下方式使模型收敛:
让我们仔细看看。
JMP 的非线性平台
非线性平台使用多个用户可选择的迭代估计过程之一来求解公式编辑器中描述的未知参数。为了求解之前博客文章中描述的分段方程,我们首先进入分析-->专业建模-->非线性。将打开以下用户界面:
Figure 2: The Nonlinear Input Interface图 2:非线性输入接口
在图 2 中,我们已经填写了输入。
- “Y,响应”是原始(测量)数据。
- “X,预测公式”是上一篇博客文章中定义的公式列。
- 请注意,测量 y 值时的 x 值不会直接输入到 GUI 中,而是通过公式列中的引用包含在内。
- 请注意,公式列中的参数(及其起始值)显示在“选项/预测器”部分中。 JMP 会自动为我们填充此内容。
点击确定后,出现如下窗口:
Figure 3: Nonlinear platform, ready to fit图 3:准备安装的非线性平台
在这里,我们看到了迄今为止模型的摘要,其中显示了每个未知参数的起始值。我们还看到收敛标准(稍后讨论)。我们看到原始数据(黑点)和当前拟合(细黑线,由于使用参数起始值而产生)。
我们还有四个按钮:
- Go:启动迭代求解器过程。
- 停止:停止该过程(如果求解器未收敛)。
- 步骤:一次手动执行一个迭代步骤,观察收敛标准和拟合图如何变化。
- 重置:将参数重置为其初始值。
单击“Step”按钮几次,我们可以看到收敛算法正在工作:
Figure 4: Convergence In Action图 4:行动中的融合
在图 4 的子图中,请注意,当我们增加步长时,细黑线肯定会向测量数据收敛。此外,参数在变化,收敛标准也在缩小。
单击“Go”按钮会自动将我们带到最终的收敛值,如下所示:
Figure 5: Final Converged Model图 5:最终的融合模型
在图 5 中,输出顶部有一条警告消息,内容为“失败:超出最大迭代次数”。我们将在本文后面讨论这个问题。但从图中可以明显看出,我们已经实现了模型与观测数据的良好收敛。
关于参数的一些观察:
- 回想一下图 1,X1、X2、X3 和 X4 是分段函数的割点。这些值已从估计的起始值适当偏移,为每个分段函数提供良好的端点。
- 其余参数对于各个曲线段都很重要。例如,a0表示在X1=24.8时测试数据开始累积之前的平均Y水平。
如果我们没有收敛会发生什么?
解决方案不收敛时的选项
如上所述,这个特定的解决方案(技术上)没有收敛。这意味着默认收敛算法不满足非线性拟合控制面板中定义的收敛标准。事实上,如果没有收敛,JMP 不允许我们对结果做太多事情(例如保存新参数)。
所以,我们能做些什么?有几种选择:
更改收敛标准
在图 5 的标准部分中,我们可以看到当前的收敛标准是什么,以及我们距离满足这些标准还有多远。例如,JMP 在前面的示例中经历了 60 次迭代步骤,但没有实现收敛。因此,我们可能想要增加“停止限制”以尝试更多步骤(以花费更长的时间来收敛为代价)。
或者我们可能希望更改“对象更改”、“相对梯度”或“梯度”。如果三个标准中的任何一个低于“止损限额”,则实现收敛。
改变迭代估计算法
“非线性拟合”旁边的红色三角形(参见图 3)提供了多个选项,包括“迭代选项”。这里我们有三种不同的迭代算法可供选择:
其中一些选项还允许计算“仅数字导数”。 根据《JMP 帮助》 ,对于哪种算法最适合使用尚未达成共识,因为这取决于拟合的特定数据和方程。
您可以组合这些算法。例如,在我们的测试用例中,牛顿法没有收敛。但您可以保留牛顿法得出的值,只需更改迭代算法,然后单击“Go”按钮即可从牛顿算法达到的终点继续收敛。为什么这有效?因为我们从更好地估计参数开始。
这让我想到了改善收敛的下一个选择......
设置参数限制
有时,当迭代算法调整参数时,它可能会朝错误的方向“起飞”或陷入局部最小值等。当发生这种情况时,限制参数可以采用的范围可能是有益的。
在我们的示例问题中,也许我们知道 X1 截止点的值应约为 20。我们可能想告诉 JMP X1 不得超出范围 15-25。这将有助于防止迭代算法在工作时“迷失方向”。
参数界限可以在同一非线性拟合红色小三角下找到。激活后,报告底部会出现一个表格,允许您输入每个变量的估计值和范围。另外值得注意的是,您可以使用此表中的滑块作为一种刻画器,以检查更改每个参数对图中显示的整体拟合的影响。
图 6 显示了参数边界表的示例:
Figure 6: Parameter Bounds Table图 6:参数范围表
一旦我们实现了收敛
如果您在公式编辑器中形成了正确的方程,并且通过上述选项实现了收敛,那么 JMP 的非线性平台应该提供所有未知参数的最佳估计值。您将在报告顶部看到“梯度收敛”效果的注释,在报告底部您将看到“解决方案”部分,显示所有未知参数的最终估计:
Figure 7: Converged Parameter Estimates图 7:收敛参数估计
此外,在测量数据和最佳拟合函数图的上方,现在应该有一个“保存估计值”按钮。单击此按钮会将公式中的当前参数值替换为新的最佳拟合值。