如何标准化趋势数据?

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

假设我想计算两个数据点(A 和 A')的速度,每个数据点都有一个分数和发布时间(A' 是 A 的未来版本,并且具有更高的分数)。这将是

[A'(score) - A(score)] / [A'(time published) - A (time published)]

我想要捕捉的是高速发展的趋势。这意味着我想要一个从 20 到 200 的分数,其权重高于 8500 到 9000。所以我想我可以通过将分数除以基线来标准化这些数据。

例如。如果 A(score) 为 2,A'(score) 为 3,则基线为 2,因此在上面的公式中,

A'(score) - A(score) would be (3/2 - 2/2)

然而,这意味着当数字这么低时,速度会非常高(因为另一方面

9000/8500 - 8500/8500 

产生非常低的速度,因为时间差仅在本例中是恒定的,但通常情况下,时间差是可变的)。

有没有什么方法可以减少低起始分数的影响,同时允许从 20 到 200 的显着跳跃?谢谢你。

algorithm math statistics normalization trending
1个回答
2
投票

有两种看待这个问题的方法。两者都可以给你你想要的。

  • 我的第一个想法是你的问题非常接近提供你的答案。您通过将您的第一个计算称为速度(分数随时间的变化率)给了自己一个重要提示。然后您可以查看它的加速度 - 速度随时间的变化率。那是:

    (A''(score) - A'(score)) - (A'(score) - A(score))

    注意,我没有除以时间,因为你说每次测量的时间差是恒定的。然后,您将每个值除以一个常数,这是低效的,并且可能不会给您带来任何进一步的清晰度。

  • 不过,更有可能的是,您似乎想知道从一个分数到下一个分数的变化有多大。我怀疑你想要的是:

    (A'(score) - A(score)) / A(score)

    这是 (a - b) / b,可减少为 (a/b) - 1。如果您不关心 -1,那么查看分数相关变化的最简单方法是:

    A'(score)/A(score)

这显示了分数从一步到下一步的增长率。


澄清后编辑

根据您的评论,可变的时间率使逻辑更加复杂,但仍然可行。

在这种情况下,您确实想要计算速度,就像您所做的那样:

V = A'(score) - A(score) / A'(time) - A(time)

但是你想根据之前的速度对其进行标准化:

result = V'/V

这就变得类似于“加速度”的例子——它需要 3 个样本才能很好地了解变化率的变化率。如果你把它全部拼写出来,你会得到类似的东西:

result = (A''(score) - A'(score))/(A''(time) - A'(time)) / (A'(score) - A(score))/(A'(time) - A(time))

你可以做一些数学运算来推算这些数字,但确实没有比这更漂亮的结果了。

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