我正在尝试模拟一个变量,它应该像这样工作:
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循环,但我很挣扎(我本来打算在这里发布我的代码,但它不起作用,所以我想我不会浪费人们的时间)。提前致谢!
这是一个典型的自回归过程,可以使用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可以继续阅读: