问题标签 [moving-average]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
3 回答
21697 浏览

numpy - 信号的 Numpy 均方根 (RMS) 平滑

我有一个肌电图数据信号,我应该(科学论文的明确建议)使用 RMS 进行平滑处理。

我有以下工作代码,产生所需的输出,但它比我想象的要慢得多。

我已经看到了一些关于优化移动窗口循环的建议deque和建议,也来自 numpy,但我无法弄清楚如何使用它们来完成我想要的。itertoolsconvolve

此外,我不再关心避免边界问题,因为我最终得到了大数组和相对较小的滑动窗口。

谢谢阅读

0 投票
1 回答
1195 浏览

r - 在 R(动物园)中对回溯数据滚动应用时间序列

我想使用 zoo 函数 rollapply 在时间序列上应用函数(例如均值),但仅使用最后 N 个已知点。例如:

x = zoo(c(1,2,3,4), order.by=c(10,11,12,13))

rollmean(x,2)

产生:

10 11 12

1.5 2.5 3.5

我想制作一个系列,其日期条目为 11、12、13,值为 1.5、2.5、3.5。这些值似乎正确,但 rollmean 输出的日期似乎与我想要的不符。我有点担心只是将我想要的日期分配给 zoo 对象,time(x)<-因为我不确定 rollapply 是否真的在做正确的事情。一如既往地感谢您的帮助。

0 投票
2 回答
2185 浏览

python - 使用特定范围内的键计算字典中值的移动平均值

到目前为止,这是我的解决方案。我想知道是否有一些更优雅/有效的方式?

我不确定是否应该在这里使用列表理解。

在某个地方可能有一些功能,但我没有找到它。

0 投票
3 回答
3170 浏览

objective-c - 计算可变参数的移动平均值

我有一个整数属性,它每秒更新一次,信号强度值范围为 0 - 100。

我希望能够持续测量过去 10、25、50 次测量的移动平均值。

这样做最有效的方法是什么?

我目前正在考虑使用 NSMutableArray 实现一组 FIFO 队列,并在数组具有必要数量的条目后,每次在末尾添加一个新队列时弹出前导值。但是,我不确定是否有更有效的方法来做到这一点。

0 投票
4 回答
11801 浏览

c++ - 在 C++ 中计算移动平均线

我正在尝试计算信号的移动平均值。信号值 ( a double ) 随机更新。我正在寻找一种有效的方法来实时计算时间窗口内的时间加权平均值。我可以自己做,但它比我想象的更具挑战性。

我在互联网上找到的大多数资源都在计算周期性信号的移动平均值,但我的更新是随机的。

有谁知道这方面的好资源?

谢谢

0 投票
2 回答
1552 浏览

algorithm - 计算滚动窗口与给定线函数的平方和距离的算法

给定一个线函数 y = a*x + bab是先前已知的常数),很容易计算线和样本窗口之间的平方和距离(1, Y1), (2, Y2), ..., (n, Yn)(其中Y1最旧的样本和Yn最新的样本):

我需要一个快速算法来计算滚动窗口(长度n)的这个值 - 每次新样本到达时,我都无法重新扫描窗口中的所有样本。
显然,对于每个进入窗口的新样本和每个离开窗口的旧样本,都应该保存和更新一些状态。
请注意,当一个样本离开窗口时,其余样本的指数也会发生变化——每个 Yx 都变为 Y(x-1)。因此,当一个样本离开窗口时,窗口中的每个其他样本都会为新总和贡献一个不同的值:(Yx - (a*(x-1) + b))^2而不是(Yx - (a*x + b))^2.

有没有已知的算法来计算这个?如果没有,你能想到一个吗?(由于一阶线性近似,有一些错误是可以的)。

0 投票
2 回答
906 浏览

r - R:期间(月)的左侧移动平均线

我有一个对你们大多数人来说可能微不足道的问题。我尝试了很多,没有找到解决方案,所以如果有人能给我提示,我会很高兴。起点是每周xts时间序列。

请原谅 Excel 表示法,但我认为它很清楚我想要做什么:我想计算“值”列的左侧移动平均线,但仅针对相应的月份,因为它显示在目标列中. 我尝试了apply.monthly()period.apply()。但它没有得到我想要的。有人可以给我一个提示如何解决这个问题吗?只是提示我应该使用哪个功能就足够了!

非常感谢!

此致,

安德烈亚斯

0 投票
2 回答
11360 浏览

r - 在R中按组应用滚动平均值

我是一个 R 新手,我在做一些可能非常简单的事情时遇到了很多麻烦。我有一个按国家/地区代码分组的大型数据集,我想按国家/地区获取价格指数的 3 个月滚动平均值,然后将其放入与相应月份匹配的新列中。我一直在尝试像这样使用rollmean,但没有成功(代码和错误消息如下):

任何帮助将非常感激!

0 投票
1 回答
2087 浏览

mysql - 如何在相关子查询中计算 MySQL 中的移动平均值?

我想创建一个时间线报告,针对时间线中的每个日期显示数据集中最新 N 个数据点的移动平均值,该数据集中具有一些度量值和测量日期。我有一个包含每天的日历表来提供日期。我可以计算一个时间线,用相关子查询相当简单地显示该日期之前的总体平均值(实际情况比这复杂得多,但它基本上可以简化为这样):

我花了几天时间阅读这个问题,但没有找到任何好的解决方案。有人建议 LIMIT 可能在子查询中工作(当前版本的 MySQL 在子查询中支持 LIMIT),但是 LIMIT 适用于返回集,而不是进入聚合的行,因此添加它没有区别。

我也不能编写带有 LIMIT 的非聚合 SELECT 然后聚合它,因为在 FROM 语句中不允许关联子查询。所以这(可悲)不起作用:

我在想我需要完全避免使用子查询方法,看看我是否使用巧妙的连接/行编号技术和用户变量来做到这一点,然后聚合它,但是当我正在处理这个问题时,我想我会问是否有人知道更好的方法吗?

更新:好的,我已经为这个例子简化了一个解决方案。它依赖于一些用户变量的技巧来从日历日期向后编号度量。它还与日历表(而不是子查询)进行交叉乘积,但这具有导致行编号技巧失败的不幸副作用(用户变量在发送到客户端时进行评估,而不是在行被评估)所以为了解决这个问题,我不得不将查询嵌套一层,对结果进行排序,然后将行编号技巧应用于该集合,然后它就可以工作了。

此查询仅返回有度量的日历日期,因此如果您想要整个时间线,您只需选择日历并 LEFT JOIN 到此结果集。

行编号技巧可以推广到更复杂的数据(我的度量是在需要汇总的多个维度中)。

0 投票
4 回答
9709 浏览

algorithm - 计算时间加权移动平均线

我有一个股票价格的时间序列,并希望计算十分钟窗口内的移动平均线(见下图)。由于价格变动是零星发生的(即它们不是周期性的),计算时间加权移动平均线似乎是最公平的。

时间序列

图中有四个价格变化:A、B、C 和 D,后三个发生在窗口内。请注意,因为 B 只出现在窗口中的某个时间(比如 3 分钟),所以 A 的值仍然有助于计算。

事实上,据我所知,计算应该完全基于 A、B 和 C(而不是D)的值以及它们与下一个点之间的持续时间(或者在 A 的情况下:开始之间的持续时间时间窗口和 B)。最初 D 不会有任何影响,因为它的时间权重为零。 这个对吗?

假设这是正确的,我担心的是移动平均线会比非加权计算“滞后”更多(这将立即解释 D 的值),但是,非加权计算有其自身的缺点:

  • 尽管在时间窗口之外,“A”对结果的影响与其他价格一样大。
  • 突然出现的快速价格变动会严重影响移动平均线(尽管这可能是可取的?)

任何人都可以就哪种方法似乎最好提供任何建议,或者是否有值得考虑的替代(或混合)方法?