模拟时间序列与观测时间序列的相似性度量

数据挖掘 时间序列 统计数据 相似 相关性 模拟
2022-03-06 23:53:13

在我的工作中,我有一个观察到的时间序列和模拟的时间序列。我想比较光曲线并检查相似性以找出最适合的模拟曲线,哪些参数最好地模拟光曲线。

目前我使用 numpy 的互相关函数来完成。但我不确定这是否是最佳选择,因为与具有较低 CC 系数的其他模拟相比,具有最高互相关系数的光曲线并不总是看起来像最佳拟合/模拟。是否有另一种方法来衡量相似性?我读了一些关于卡方统计的东西,但我不确定它是如何工作的,以及它如何应用于我的问题。

我使用的观察数据不是均匀分箱的,所以我使用了 Scipy 的插值函数。我是否也应该平滑观察数据,还是会丢失数据的真实特征。我考虑过使用 savitzky golay 平滑。

目前我正在使用蛮力方法尝试所有可能的参数并模拟相应的光变曲线。问题是这需要大量时间来处理 20 个参数。这些参数或多或少地相互依赖。所以我不能使用最小二乘拟合方法,因为有多个可能的最小值。有没有我忽略的简单方法。还是受限蛮力适合我的最佳选择?

在下图中,您将看到一个带有模拟和观测数据的图。 红色:模拟,蓝色:观察 感谢所有建议。

2个回答

在我看来,您可以执行以下操作来将模拟数据与实际数据进行比较。

使用通常的测量值,例如在预测与实际数据中使用的测量值:

  • 均方根误差
  • MAE(平均绝对误差)
  • MSE(均方误差)-> 赋予更大的错误/差距更大的权重

我想到的另一个测试不同模型之间“预测”质量的统计测试是Diebold-Mariano 测试它在 R 中完全实现。据我所知,目前还没有在任何 Python 库中实现。

作为统计测试,您可以查看分布(但在处理时间序列时,您可能会面临“记忆”,这意味着观察 t 和 t+1 面临自相关(针对大多数统计测试,因为它们假设独立观察)。自相关似乎是您的数据系列的情况。因此,您应该查看样本数据的百分比变化(从 t 到 t1)并查看两个系列是否来自同一个分布 - 您可以执行 kolmogorov斯米尔诺夫测试。

希望这可以帮助。

编辑

关于您关于平滑和插值的问题。Empiricis(不是统计数据)更像是一个反复试验的概念。这实际上取决于您的数据行为。

它看起来像一个信号处理问题,您想要对周期性信号进行去噪。我可以建议你看看具体的文献吗?

更具体地说:https ://github.com/unpingco/Python-for-Signal-Processing ,信号处理阅读清单。您将学习如何对周期信号进行建模、去噪和压缩。