背景和问题
我经常使用动态系统的模拟,我通常跟踪单个参数,例如代理的数量(对于基于代理的模型)或错误率(对于神经网络)。这个参数通常有一些有趣的瞬态行为。这种行为的类型和长度取决于随机种子和模拟参数。然而,在初始瞬态之后,系统稳定并且在某个平均值附近具有小的(与瞬态变化的大小相比)热波动。这个平均值和热波动的大小取决于模拟参数,而不是随机种子,并且无法提前知道。
目标是在模拟从初始瞬态过渡到长期行为后,有一种自动停止模拟的好方法。我们知道这种转变只会发生一次,并且瞬态期间将比稳定状态具有更多的易变行为。
天真的方法
首先出现在我脑海中的天真的方法(例如,我已经看到它被用作某些神经网络的获胜条件)是选择参数和,那么如果在最后的时间步中没有两个点和这样然后我们得出结论我们已经稳定了。这种方法很简单,但不是很严格。和应该是什么好的值。
或者,我们可以在这个答案中使用时间和置信度参数 ,并假设误差呈正态分布。这将节省我们了解热波动大小的工作。
让和之间时间序列的变化。当系列在附近稳定时,将在零附近波动,并带有一些标准误差。取最后一个,并使用 Matlab 的normfit之类的函数以置信度拟合高斯。该拟合将为我们提供一个均值上具有置信度误差,并为我们提供一个具有相应误差的标准差 sigma 。如果,那么你可以接受。如果你想更加确定,那么你也可以 s (这样你现在有标准偏差)并置信水平下使用Kolmogorov-Smirnov测试进行测试,或者其中之一这个问题的其他策略。
笔记
这个问题最初以更以时间序列为中心的语言发布到Cross Validated。它引发了一些很好的讨论,但不是我满意的答案。我尝试了 MetaOptimize,但这个问题在那里产生的兴趣为零。我不熟悉计算科学上的标签,所以请随意编辑标签。