我正在尝试计算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)
感谢任何帮助。
答案 0 :(得分:4)
这是一种方法:
filter(r, rev(w))
# [1] 155 160 155 160 155 NA
filter
的帮助页面中有关参数?filter
的重要信息:
滤波器
以反向时间顺序的滤波器系数向量(对于AR或MA系数)。
答案 1 :(得分:1)
rollapply
可以做到这一点:
> rollapply(r, 2, crossprod, w, fill = NA)
[1] 155 160 155 160 155 NA