我正在尝试使用循环来创建自己的stats::filter(method = "recursive")
函数。根据文件:
对单变量时间序列或每个系列应用线性过滤 分别为多变量时间序列。 注意,在递归>中,在滞后0处存在隐含系数1。过滤器,给出
y [i] = x [i] + f 1 * y [i-1] + ... + f [p] * y [i-p]
此外,从previous post这里有一个例子:
> filter(1:5, f1, method="recursive")
[1] 1 3 6 10 15
> y1 <- x[1]
> y2 <- x[2] + f1*y1
> y3 <- x[3] + f1*y2
> y4 <- x[4] + f1*y3
> y5 <- x[5] + f1*y4
> c(y1,y2,y3,y4,y5)
[1] 1 3 6 10 15
这是我最好的尝试:
x <- seq(2, 6)
f1 <- .5
y[1] <- 1
for (i in x) {
y[i] <- x[i] + f1*y[i-1]
print(y[i-1])
}
[1] 1
[1] 3.5
[1] 5.75
[1] 7.875
[1] 9.9375
这应该是结果
> stats::filter(1:5, .5, method = "recursive")
[1] 1.0000 2.5000 4.2500 6.1250 8.0625
答案 0 :(得分:0)
这解决了它:
> x <- seq(2, 6)
> f1 <- .5
> y[1] <- 1
> for (i in x) {
> y[i] <- x[i-1] + f1*y[i-1]
> print(y[i-1])
> }
[1] 1
[1] 2.5
[1] 4.25
[1] 6.125
[1] 8.0625