我有一些时间序列的数据点,想要对它们执行简单的移动平均法。如果我使用“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过程规则。
我有一些时间序列的数据点,想要对它们执行简单的移动平均法。如果我使用“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过程规则。
预测包的作者在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
或者使用centre=FALSE以删除NA;如果想要返回length(x)的值,则在前面填充.ord-1个NA。
require(zoo)
rollmean(x,4,,align="center")
# [1] 4.00 5.25 4.75 4.75 3.75 4.00
zoo
包中的rollmean()
函数。你能展示一下你期望的输出吗? - Brandon Bertelsencentre
参数的默认值为TRUE
。你是想要前四个数的移动平均吗? - nograpes