假设我想计算两个数据点(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
然后这变得类似于“加速”示例 - 它需要 3 个样本才能很好地了解变化率的变化率。如果你把它拼写出来,你会得到类似的东西:
result = (A''(score) - A'(score))/(A''(time) - A'(time)) / (A'(score) - A(score))/(A'(time) - A(time))
你可以做一些数学运算来推算这些数字,但真的没有比这更漂亮的结果了。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句