我正在尝试模拟一个变量,它应该是这样工作的:
v[t] = Q * v[t-1] + e[t]
e
是我使用 rnorm(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]
. . .
我是 R 新手,我正在尝试使用
for
循环,但我很挣扎(我打算在这里发布我的代码,但它不起作用,所以我想我不会浪费人们的时间)。提前致谢!
最佳答案
这是一个典型的自回归过程,可以使用 filter
生成。用“递归”方法。
e <- rnorm(156, 0, 0.001)
filter(x = c(0, e), filter = 0.5, method = "recursive")[-1]
让我们考虑一个只有长度为 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
filter
是arima.sim
的主力然而,它只是一个用 C 代码编写的计算例程,不需要过程是平稳的。感兴趣的读者arima.sim
可以继续阅读:关于模拟变量的递归计算,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41089445/