如何标准化趋势数据?
How can I normalize trending data?
假设我想计算两个数据点(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 的跳跃很重要吗?谢谢。
有两种方式来看待这个问题。两者都可以给你想要的。
我的第一个想法是你的问题非常接近于提供你的答案。您通过将您的第一个计算称为您的速度 - 您的分数随时间的变化率给了自己一个重要的提示。然后你可以看看它的加速度——你的速度随时间的变化率。那是:
(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
然后这变得类似于 "acceleration" 示例 - 它需要 3 个样本才能很好地了解变化率的变化率。如果你一路拼写出来,你会得到这样的东西:
result = (A''(score) - A'(score))/(A''(time) - A'(time)) / (A'(score) - A(score))/(A'(time) - A(time))
您可以做一些数学运算来推算这些数字,但确实没有比这更漂亮的结果了。
假设我想计算两个数据点(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 的跳跃很重要吗?谢谢。
有两种方式来看待这个问题。两者都可以给你想要的。
我的第一个想法是你的问题非常接近于提供你的答案。您通过将您的第一个计算称为您的速度 - 您的分数随时间的变化率给了自己一个重要的提示。然后你可以看看它的加速度——你的速度随时间的变化率。那是:
(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
然后这变得类似于 "acceleration" 示例 - 它需要 3 个样本才能很好地了解变化率的变化率。如果你一路拼写出来,你会得到这样的东西:
result = (A''(score) - A'(score))/(A''(time) - A'(time)) / (A'(score) - A(score))/(A'(time) - A(time))
您可以做一些数学运算来推算这些数字,但确实没有比这更漂亮的结果了。