模拟变量的递归计算

Ala*_*lan 4 r time-series

我正在尝试模拟一个变量,它应该像这样工作:

v[t] = Q * v[t-1] + e[t]
Run Code Online (Sandbox Code Playgroud)

ernorm(156,0,0.001)是我使用;生成的随机错误 v是我想要模拟的;Q是一个系数(我使用0.5)。

第一个值v[1]将等于e[1]。然后

v[2] = Q * v[1] + e[2]
v[3] = Q * v[2] + e[3]
. . . 
Run Code Online (Sandbox Code Playgroud)

我是 R 新手,我正在尝试使用for循环,但我很挣扎(我本来打算在这里发布我的代码,但它不起作用,所以我想我不会浪费人们的时间)。提前致谢!

李哲源*_*李哲源 5

这是一个典型的自回归过程,可以使用filter“递归”方法生成。

e <- rnorm(156, 0, 0.001)
filter(x = c(0, e), filter = 0.5, method = "recursive")[-1]
Run Code Online (Sandbox Code Playgroud)

让我们考虑一个长度仅为 5 的小例子:

set.seed(0)

e <- rnorm(5, 0, 0.1)
# [1]  0.12629543 -0.03262334  0.13297993  0.12724293  0.04146414

x <- filter(x = c(0, e), filter = 0.5, method = "recursive")

x[-1]
# [1] 0.12629543 0.03052438 0.14824212 0.20136399 0.14214614
Run Code Online (Sandbox Code Playgroud)

filter是 的主力arima.sim,然而,它只是一个用 C 语言编写的计算例程,并不要求进程是静止的。有兴趣的读者arima.sim可以继续阅读: