我正在尝试计算 yield 时间序列的滚动总和 r
跨越 T 日期。但是,在计算滚动总和的每个日期 t,我想考虑权重 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)
任何帮助表示赞赏。
最佳答案
这是一种方法:
filter(r, rev(w))
# [1] 155 160 155 160 155 NA
关于参数的重要信息
filter
来自 ?filter
的帮助页面:filter
a vector of filter coefficients in reverse time order (as for AR or MA coefficients).
关于带因子的时间序列的滚动和,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20994826/