在R语言中求移动平均数的代码 ~ "ma"函数

4

我有一些时间序列的数据点,想要对它们执行简单的移动平均法。如果我使用“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过程规则。


你可能需要 zoo 包中的 rollmean() 函数。你能展示一下你期望的输出吗? - Brandon Bertelsen
1
还要考虑到centre参数的默认值为TRUE。你是想要前四个数的移动平均吗? - nograpes
是的,我想要前4个值的移动平均数以此类推。 - SamRoy
3个回答

1

1
我认为预测有一种特殊的平滑方法。怎么样?
require(zoo)
rollmean(x,4,,align="center")
# [1] 4.00 5.25 4.75 4.75 3.75 4.00

1
我请求关于“ma”方法的帮助,而不是“rollmean”方法,因为R中的时间序列函数“decompose”使用“ma”方法提供趋势分量。因此,为了在那里预测趋势分量,我需要了解“ma”方法的工作原理。 - SamRoy

1
我知道这是一篇旧文章,但我想根据我对该函数的理解提供一些具体信息。正如前面的发帖者所提到的,默认的“centre”参数为“true”,如果指定的顺序是偶数,则会将该函数中指定的MA应用于二阶MA。这意味着,如果指定顺序为4,则“centre”等于“true”会导致2X4 MA。这将把一个不对称的MA转换为指定顺序的居中MA。居中的4个MA也是一个5个权重的加权MA,其中权重为(1/8,1/4,1/4,1/4,1/8)。如果您的数据是季度性的,这可以确保每年的每个季度都获得相等的权重;如果您目前处于Q2,则上一个和即将到来的Q4值各占1/8的权重,并使Q4整体上与其他季度具有相同的加权贡献。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接