【问题标题】:Moving Average code in R ~ "ma" functionR中的移动平均代码~“ma”函数
【发布时间】:2014-01-24 19:52:19
【问题描述】:

我有一些时间序列数据点,我喜欢对它们执行简单的移动平均法。如果我使用包“forecast”中的函数“ma”,我会得到以下信息:

library(forecast)
x<-c(1,5,2,8,6,3,2,4,7)
ma(x,order= 4)
[1] NA    NA   4.625   5.000   4.750   4.250   3.875    NA    NA

现在谁能告诉我这里的逻辑是什么?因为显然这不遵循这里的 4 点简单 MA 过程的通常规则。

【问题讨论】:

  • 您可能需要 rollmean() 包含在 zoo 包中。你能告诉我们你的预期输出是什么吗?
  • 还要考虑centre 参数的默认值是TRUE。您想要前 4 个值的移动平均值吗?
  • 是的,我想要前 4 个值的移动平均值,依此类推。

标签: r time-series moving-average


【解决方案1】:

我意识到这是一篇旧帖子,但我想根据我对函数的理解尝试提供一些细节。正如之前的海报所提到的,默认的“中心”参数是“真”,如果指定的顺序是偶数,则它具有将顺序 2 MA 应用于函数中指定的 MA 的效果。这意味着“中心”等于“真”,给定指定为 4 的顺序导致 2X4 MA。这会将不对称 MA 转换为指定顺序的居中 MA。居中的 4 MA 也是 5 阶加权 MA,权重为 (1/8th,1/4th,1/4th,1/4th,1/8th)。如果您的数据是按季度计算的,这可以确保一年内的每个季度都具有相同的权重;如果您目前处于第 2 季度,则之前和即将到来的第 4 季度值将各自加权 1/8,并赋予第 4 季度整体与其他季度相同的加权贡献。

【讨论】:

    【解决方案2】:

    我认为预测具有某种特殊的平滑度。怎么样

    require(zoo)
    rollmean(x,4,,align="center")
    # [1] 4.00 5.25 4.75 4.75 3.75 4.00
    

    【讨论】:

    • 我正在寻求有关“ma”而不是“rollmean”的帮助,因为 R 中的时间序列函数“decompose”通过使用“ma”方法提供了趋势分量。所以为了预测那里的趋势成分,我需要了解“ma”是如何工作的。
    【解决方案3】:

    预测包的作者在https://stats.stackexchange.com/questions/83194/using-moving-average-smoothing-in-forecast-package 发布了答案。设置 center=FALSE 并按 order/2 移动结果。

    x<-c(1,5,2,8,6,3,2,4,7)
    .ord=4
    ma(x,order=.ord, centre=FALSE)[(ceiling(.ord/2):(length(x)-floor(.ord/2))]
    # [1] 4.00 5.25 4.75 4.75 3.75 4.00
    

    或者只是用 center=FALSE 删除 na;如果你想要长度(x)返回值,然后用 .ord-1 NA 填充前面

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-01-27
      • 2021-10-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-05-29
      • 2021-04-12
      • 1970-01-01
      相关资源
      最近更新 更多