负方向移动平均线(R 预测中的 ma)

Moving average in negative direction (ma in R forecast)

对于一个系列

X=(x_1,x_2,...x_t-2, x_t-1, x_t)

我想计算每个点相对于前 k 个时间步长的移动平均值。例如,如果 k = 2,我想 return:

X =(NA, (x_1+x_2)/2 ... (x_t-2 + x_t-3)/2, (x_t-2 + x_t-1)/2, (x_t + x_t-1)/2)

如果我使用移动平均函数ma,例如

ma(X, order = 2, centre = TRUE)

我得到的是每个点及其相邻点在正负方向上的平均值,而设置center=FALSE计算的是相对于正方向的移动平均值。有没有一种简单的方法可以将点 t 作为 (t-k+1...t) 的 运行 平均值?

假设测试输入 X 如图所示,这取当前值和先前值的平均值。注意 rollmeanr 末尾的 r 告诉它使用右对齐版本而不是中心对齐版本。

library(zoo)

X <- 1:10 # test input

rollmeanr(X, 2, fill = NA)
## [1]  NA 1.5 2.5 3.5 4.5 5.5 6.5 7.5 8.5 9.5

也是这样(没有包):

n <- length(X)
c(NA, (X[-1] + X[-n])/2)
## [1]  NA 1.5 2.5 3.5 4.5 5.5 6.5 7.5 8.5 9.5

以及这种更通用的基础 R 方法(也没有包):

k <- 2
c(rep(NA, k-1), rowMeans(embed(X, k)))
## [1]  NA 1.5 2.5 3.5 4.5 5.5 6.5 7.5 8.5 9.5