Я пытался вычислить скользящее среднее по вектору в 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. Но еслиЯ хочу рассчитать MA для 20 лагов, мне придется привязать 20 столбцов. Есть ли более быстрый способ сделать это / написать эту функцию?
Спасибо