我需要在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()
但是我不知道模拟是否正确完成,并且在绘制数据点时没有显示任何内容。
答案 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图。