Есть ли какая-нибудь быстрая функция, которая способна вычислить скользящее среднее значение, которое взвешено?Это необходимо, потому что у меня есть несколько наблюдений (не всегда одно и то же число) на одну точку данных (изменение в секундах), и я усредняю это.Когда я беру скользящее среднее, я хочу изменить вес, чтобы получить беспристрастное скользящее среднее.
До сих пор я придумал это решение (в этом примере с окном 3 секунды).
sam <- data.table(val_mean=c(1:15),N=c(11:25))
sam[,weighted:=val_mean*N]
sam[,rollnumerator:=rollapply(weighted,3,sum,fill=NA,align="left")]
sam[,rolldenominator:=rollapply(N,3,sum,fill=NA,align="left")]
sam[,rollnumerator/rolldenominator]
Я не смог найти ни одного вопроса, который уже решает эту проблему.
Речь идет не о неравном расстоянии между данными: я могу позаботиться об этом, расширив свою таблицу данных с помощью NA длявключите каждую секунду (пример выше одинаково разнесен).Кроме того, я не хочу включать веса в смысле RcppRoll's roll_mean: там веса фиксированы для всех временных окон («Вектор длины n, дающий веса для каждого элемента в окне »."), в то время как в моем случае веса меняются в зависимости от обрабатываемых в данный момент значений.В-третьих, мне не нужен адаптивный размер окна, он должен оставаться фиксированным (скажем, через 3 секунды).