python - 评估时间序列之间的同步性
问题描述
我想评估两个时间序列之间的同步性(即它们是否随着时间的推移具有相同的演变?)。我正在使用Python。以下是我拥有的时间序列的示例:
第一个图显示了具有非常相似进化(同步)的时间序列,而第二个图显示了视觉上没有类似进化的时间序列。
我考虑过动态时间扭曲来评估时间序列之间的相似性,但问题是我们获得了时间序列之间的距离,这很难解释。我想要的是一个标准化的数字(例如,介于 -1 和 1 之间的相关性),它可以显示系列是否同步(即它们同时增加或减少)。这样我可以更容易地比较几个时间序列的演变,即使它们的全局距离(即平均值)不同,如第一个和第二个图所示。动态时间扭曲可以有这样的数字吗?还是另一种方法更合适?
解决方案
您首先可能想定义“随着时间的推移相同的演变”的含义。DTW 考虑了时间序列和距离之间的滞后。根据您是否对数据进行规范化/缩放,第一个图表的 DTW 可能大于第二个图表。这只是意味着两者可以更好地对齐,损失更小,同时也可以及时来回移动。然后再次可以比较DTW,因为0距离意味着完美对齐,而任何其他值都意味着更大的差异。
您也可以尝试从另一个预测(回归)。再说一次,我不明白为什么简单的相关性不能回答你想知道的问题。皮尔逊相关可以标准化这些值,因此图表中显示的两者之间的距离应该无关紧要。
由于您使用的是 python,所以我想分享一个我在比较 DTW、Pearson 相关性和其他量化时间序列数据同步性的方法时写的教程:https ://towardsdatascience.com/four-ways-to -quantify-synchrony-between-time-series-data-b99136c4a9c9希望这有帮助!
推荐阅读
- python - Pycharm 自动完成功能不适用于某些包
- c# - ONNX Runtime C# 不记得 LSTM 网络的状态
- linked-list - 龟兔算法背后的直觉
- npm - npm 安装失败,“error-ex@^1.3.1”不在 npm 注册表中
- python - 尝试从 10 数到提供的输入值和 Python 中提供的列,但没有得到它。我基本上想要5个数字等
- java - Firebase 错误地发布信息
- html - CSS 不透明度过渡
- oracle - Oracle.ManagedDataAccess 19.3 的 ProviderManifestToken 值是多少?
- kubernetes - 如何为 kubelet 1.13 启用 cadvisor?
- python - 正则表达式在数字中添加逗号分隔符