Есть ли способ использовать rollapply (из zoo
package или что-то подобное) оптимизированные функции (rollmean
, rollmedian
и т.д.) для вычисления функций качения с использованием временного окна вместо одного, основанного на числе наблюдений? Я хочу просто: для каждого элемента в нерегулярном временном ряду я хочу вычислить функцию качения с окном N дней. То есть, окно должно включать все наблюдения за N дней до текущего наблюдения. Временные ряды также могут содержать дубликаты.
Здесь следует пример. Учитывая следующие временные ряды:
date value
1/11/2011 5
1/11/2011 4
1/11/2011 2
8/11/2011 1
13/11/2011 0
14/11/2011 0
15/11/2011 0
18/11/2011 1
21/11/2011 4
5/12/2011 3
Скользящая медиана с 5-дневным окном, выровненным вправо, должна приводить к следующему вычислению:
> c(
median(c(5)),
median(c(5,4)),
median(c(5,4,2)),
median(c(1)),
median(c(1,0)),
median(c(0,0)),
median(c(0,0,0)),
median(c(0,0,0,1)),
median(c(1,4)),
median(c(3))
)
[1] 5.0 4.5 4.0 1.0 0.5 0.0 0.0 0.0 2.5 3.0
Я уже нашел некоторые решения там, но они обычно сложны, что обычно означает медленное. Мне удалось реализовать собственный калькулятор функции. Проблема в том, что для очень длинных рядов оптимизированная версия медианного (rollmedian) может сделать огромную разницу во времени, поскольку она учитывает перекрытие между окнами. Я бы хотел избежать повторного его реализации. Я подозреваю, что есть некоторые трюки с параметрами rollapply, которые заставят его работать, но я не могу понять это. Заранее спасибо за помощь.