【发布时间】:2020-02-04 02:12:45
【问题描述】:
我一直在尝试计算 R 中向量的移动平均值。理想情况下,我想编写一个函数来计算任意数量滞后的 MA。我必须编码的数学步骤是: 1. 为每列创建一个具有 1:k 滞后的数据集。 2. 对行求和 3.除以2k+1
我现在被困在第 2 步。我可以评估 2 个滞后的总和,但是为多个滞后创建一个公式非常麻烦。
这就是我现在的位置。
我已经利用代码来计算滞后
lagpad <- function(x, k) {
if (k>0) {
return (c(rep(NA, k), x)[1 : length(x)] );
}
else {
return (c(x[(-k+1) : length(x)], rep(NA, -k)));
}
}
假设我在以下向量上计算 MA:
i<-1:50
rowSums(cbind(lagpad(i,1)[1:length(i)], lagpad(i,2)[1:length(i)]))
这适用于 2。但如果我想计算 20 滞后的 MA,我将不得不 cbind 20 列。有没有更快的方法来做这个/写这个函数?
谢谢
【问题讨论】:
-
你真的想写一个函数还是将函数
rollmean放在zoo包里写? -
我想写一个函数来实现它
标签: r statistics moving-average