R~“ma”函数中的移动平均代码

时间:2014-01-24 19:52:20

标签: r time-series moving-average

我有一些时间序列数据点,我喜欢对它们执行简单的移动平均线方法。如果我使用“预测”包中的“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过程规则。

3 个答案:

答案 0 :(得分:1)

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

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

答案 1 :(得分:0)

预测包的作者在https://stats.stackexchange.com/questions/83194/using-moving-average-smoothing-in-forecast-package发布了答案。设置center = FALSE并按顺序/ 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

或者只是删除na的中心= FALSE;如果你想要长度(x)返回值

,那么用.ord-1 NA填充前面

答案 2 :(得分:0)

我意识到这是一篇旧帖子,但我想尝试根据我对该功能的理解提供一些细节。如前面提到的海报所示,默认的“中心”参数为“true”,如果指定的顺序是偶数,则具有将2 MA的订单应用于函数中指定的MA的效果。这意味着'center'等于'true',给定指定4的订单产生2X4 MA。这将非对称MA转换为指定顺序的中心MA。中心4 MA也是5阶加权MA,其权重为(1/8,1 / 4,1 / 4,1 / 4,1 / 8)。如果你的数据每季度说一次,这可以确保一年内的每个季度获得相同的权重;如果您目前处于第二季度,则前一个和即将到来的Q4值将分别加权1/8,并给予Q4整体相同的加权贡献。