我正在尝试确定一种方法,以编程方式将一个特定时间序列与大约 10,000 多个参考时间序列进行比较,并将那些可能感兴趣的参考时间序列列入候选名单。
我使用的方法是Pearson Correlation。对于每个参考时间序列,我会计算它们的相关系数,然后根据相关系数按降序对整个参考时间序列列表进行排序。然后,我将直观地分析具有最高相关系数的前 N 个时间序列,这应该是给定时间序列的最佳匹配。
问题是我没有得到可靠的结果。很多时候,前 N 个范围内的序列在视觉上与给定的时间序列并不相似。最后,当我阅读下面的完整文章时,我明白了原因:不能单独使用相关性来确定两个时间序列是否相似。
现在这是计算两个时间序列之间某种距离的所有匹配算法的问题。例如,下面的两组时间序列可以得出相同的距离,但显然其中一组比另一组更匹配。
A => [1, 2, 3, 4, 5, 6, 7, 8, 9]
B1 => [1, 2, 3, 4, 5, 6, 7, 8, 12]
distance = sqrt(0+0+0+0+0+0+0+0+9) = 3
B2 => [0, 3, 2, 5, 4, 7, 6, 9, 8]
distance = sqrt(1+1+1+1+1+1+1+1+1) = 3
所以我的问题是,在这种情况下,是否有一个数学公式(如相关性)更适合我?哪一种不受这里提到的问题困扰?
如果需要,请随时要求进一步澄清或改进问题文本。谢谢!=)
编辑:
@woodchips,@krystian:
顶行显示在给定日期结束的 USDCHF-Daily 的最后十根柱线。第二行给出了用于关联的方法 A的前 3 个结果(解释将在后面)。最后一行显示方法 B的前 3 个结果. 我已经使用高-低-收盘价进行相关性分析。每行中的最后一张图片是我认为“很好的匹配”,原因是该系列的转折点对我来说更重要。巧合的是,最后几行的相关性最大。但是您可以在最后一行中看到第二张图像的相似性非常弱。尽管如此,它还是设法进入了前三名。这让我感到不安。由于这种行为,我不得不直观地访问每个相关性并接受/丢弃它。Anscombe 的四重奏也强调需要目视检查相关性。这就是为什么我想摆脱相关性并探索其他评估序列相似性的数学概念。
方法 A将 HLC 数据附加到一个长系列中,并将其与给定系列相关联。 方法 B将 H 数据与参考 H 数据、L 与 L、C 与 C 相关,然后将所有三个值相乘以计算净相关性。显然它降低了整体相关性,但我觉得它倾向于细化产生的相关性。
我很抱歉这么晚才回复。我试图收集数据和代码相关性并为解释制作图形。这张图片显示了相关性非常准确时的罕见事件之一。即使相关值非常高,当结果匹配也具有高度误导性时,我也会制作和分享图形。
@adambowen:你在现场。实际上我已经实现了两种不同的算法:相关性和动态时间扭曲来访问系列相似性。对于DTW,我必须像你说的那样使用MSE。对于相关性,我可以同时使用 MSE(在这种情况下,它等于 DTW 对角线的成本,没有任何翘曲)和实际的 Pearson 相关公式。下面的图像是使用 Pearson 的相关公式得出的。我会查找您在帖子中提到的条款并尽快报告。实际上,我没有两个独立的时间序列。这只是一个时间序列,长度接近 10,000+ 点。我使用宽度为 N 的滑动窗口对时间序列进行自相关,以在序列表现与今天相似时定位事件。如果我能找到好的匹配,我也许能够根据识别出的每个匹配项后的移动方式来预测当前时间序列的移动。感谢您的洞察力。