负方向移动平均线(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
对于一个系列
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