时间序列的滚动总和与因子

时间:2014-01-08 11:49:37

标签: r filter time-series

我正在尝试计算T日期范围内返回r的时间序列的滚动总和。但是,在我计算滚动总和的每个日期时,我想要计算滚动总和中每个数字的权重w

该公式适用于每个日期t:

[Sum from i=1 to m](w(i)*r(t-i-1))

让我们看一个非常简单的例子。我有一个返回系列T = 6返回r。对于每个日期t,我想计算过去两个日期(m = 2)的滚动总和。我还想把第一次观察的重量增加到第二次。

r <- c(100,110,100,110,100,110)                 
w <- c(1,0.5)

我知道我可以使用过滤功能轻松完成滚动总和:

filter(r, rep(1, 2))

但是我无法将权重系数包含在滚动总和中。以下行给出了c(155, 155, 155, 155, 155, NA)

的错误结果
filter(r*w, rep(1, 2))

我真的希望得到结果c(155, 160, 155, 160, 155, NA)

感谢任何帮助。

2 个答案:

答案 0 :(得分:4)

这是一种方法:

filter(r, rev(w))
# [1] 155 160 155 160 155  NA

filter的帮助页面中有关参数?filter的重要信息:

  

滤波器
  以反向时间顺序的滤波器系数向量(对于AR或MA系数)。

答案 1 :(得分:1)

zoo package中的

rollapply可以做到这一点:

> rollapply(r, 2, crossprod, w, fill = NA)
[1] 155 160 155 160 155  NA
相关问题