模拟R中的时间序列

时间:2016-09-20 08:34:54

标签: r plot 3d simulation

我需要在R中进行以下函数的模拟:

y[t] = 4 + (9*x[t-1])*y[y-1]+r[t]

我还需要制作3D图。我是R的新手,因此我觉得非常困难,希望在座的人可以帮助我。

这是我到目前为止所尝试的:

library(rgl)
n <- 3000
x <- runif(n,-1,1)
r <- rnorm(n)
y <- rep(NA,n)
y[1] <- r[1]
for(t in 2:n){
y[t] <- 4 + (9*x[t-1])*y[t-1]+r[t]
}
D <- data.frame(y=y[-1], x1=x[-n],y1=y[-n])
open3d()
points3d(D$x1, D$y1, D$y, size=3, col="red")
aspect3d()
axes3d()

但是我不知道模拟是否正确完成,并且在绘制数据点时没有显示任何内容。

2 个答案:

答案 0 :(得分:1)

你有y <- 4 + 9*x[t-1])*y[t-1]它的上升像几何级数10^t(&#34; 9 &#34;系数)...... &#34; 9&#34;中的问题和&#34; 4&#34;系数。 你会有&#34; Inf &#34; &#34; -Inf &#34;大多数人其余的&#39;&#39;会很大......

答案 1 :(得分:0)

您的模拟工作正常,只是价值变得过快。我删除了无限值并记录了大值:

D <- D[!is.infinite(D$y) & !is.infinite(D$y1),]
D$y <- log(D$y)
D$y1 <- log(D$y1)
plot3d(D)

上述代码成功生成了3D图。