如何创建基于两种趋势相互作用的评分算法?

问题描述 投票:0回答:1

我有两个变量表示为具有每月观察值的时间序列。我正在尝试创建一个评分系统 -1 到 1,其中:1 代表趋势从 B 到 A 的强烈转变,-1 代表趋势从 A 到 B 的强烈转变。最终,我希望对趋势的大小进行评分从 A 到 B 的变化/动量(反之亦然)。

例如,给定下面示例 1 中的样本数据点,A 的趋势立即下降,B 的趋势增加。所以分数应该接近-1。

Example 1

A = {20, 0, 0, 0, 0}
B = {0, 20, 15, 18, 30}

相反,下面示例 2 中的样本数据点说明了 B 立即下降的趋势,而 A 则上升的趋势。所以分数应该接近1。

Example 2

A = {0, 5, 10, 12, 8}
B = {5, 0, 0, 0, 0}

最后,下面示例 3 中的样本数据点是混合的,得分将为负数,但不像示例 1 那样负。

Example 3

A = {5, 8, 7, 4, 3}
B = {0, 0, 2, 5, 10}

我尝试过利用相关性或格兰杰因果关系,但没有完全满足要求。尝试四处搜索但无法完全找到可行的解决方案。有没有一个通用的公式来对A和B之间的趋势变化进行评分?

algorithm time-series scoring
1个回答
0
投票

首先想到的是皮尔逊相关系数,也称为皮尔逊 R。它是线性相关性的度量,取值在 -1 到 1 之间。您可以在 Python 中计算它,如下所示:

from scipy.stats import pearsonr

# Sample data
x = [1, 2, 3, 4, 5]
y = [5, 4, 3, 2, 1]

# Calculate Pearson's correlation
corr, _ = pearsonr(x, y)

print(f"Pearson correlation coefficient: {corr}")

现在我发现这不符合你的例子的描述(Pearsons R 在所有三种情况下都接近 -1),但我不确定是否有任何东西适合它,并开发一种新的相关性度量远远超出了这里答案的范围。除此之外,也许最好考虑一下您所描述的行为是否真的令人满意且一致:

  • 在情况 1 中,Pearson 的 R 接近您想要的值。
  • 在情况 2 中,相关性为负,但您希望看到正值,因为 B 正在下降,而不是第一个示例中的 A。这很容易实现,如果 B 下降,只需乘以 -1 即可。但你确定这就是你想要的吗? A 和 B 的依赖方式还有很多可能性。
  • 在情况 3 中,我没有看到其他情况的混合,我只是看到了完全不同的东西,我想还有很多其他可能性,但我不确定您希望结果是什么。

总而言之,这三个示例很可能不足以作为确定相关性度量的充分基础,而该相关性度量将完全满足您的要求。评估变量依赖性的领域非常广泛,很容易在错综复杂的问题中迷失方向。我建议您采用一些简单且易于理解的方法,例如 Pearson 的 R,并在确实必要时对其进行调整,但在这样做之前请确保您知道自己到底需要什么。

© www.soinside.com 2019 - 2024. All rights reserved.