gpt4 book ai didi

java - 在java中计算特定最后n个持续时间的移动平均值

转载 作者:行者123 更新时间:2023-12-01 22:41:58 25 4
gpt4 key购买 nike

我遇到过一个用例,其中我应该计算特定持续时间(例如过去 n 天)的移动平均值。我知道如果我存储所有过去的数据,我可以减去与前几天相对应的贡献,这可以很容易地完成。但是我如何有效地计算它,只存储前几天的平均值,而不存储以前的数据。

以下是我想要完成的

举例来说,我有 5 天的数据,如 2、8、5、2、5,其平均值为 4.4现在,如果第八天的数据为 10,则应计算移动平均值,忽略前 3 个元素 2、8 和 5,因此平均值将为 3.2
目前我采用的方法是确定一天对应的平均贡献,然后用总平均值减去它,我认为这是不准确的

 Formula = (avg for past n days) +  (today's count/n) - 
-(no_of_days from the last computed day * (avg for past n days)/n)

那么有人可以建议我一个有效的实现/计算公式来实现这一目标吗?

最佳答案

But how do i effectively compute it only storing the previous days average without the previous data.

你不能。简单的滚动平均值或移动平均值要求您记住区间内的所有值。没有(有用的)1公式可以让您做其他事情。

但这还不是结束。还有其他滚动平均度量不需要您存储所有值;例如“加权移动平均线”、“累积移动平均线”、“指数移动平均线”等。维基百科 Moving Averages给出了很好的概述,描述了各种度量的属性并提供了公式。

我建议您阅读该页面,然后做出选择。在 Java 中实现任何一个滚动平均值测量应该是一项简单的编程任务。

<小时/>

1 - 你可以发明一个无用的值......它依赖于存储从原始值派生的 N 个其他值。但我认为这不会有帮助。

关于java - 在java中计算特定最后n个持续时间的移动平均值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25990166/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com