如何从简单的SETAR模型进行仿真

时间:2019-05-08 06:57:03

标签: r

我正在尝试使用以下代码从零拦截SETAR(2; 1,1)模型中模拟值。

xgen <- function(pi, Ni = 50, burn = 5000, r = 0, del = NULL, sig = 1, doplot = F) {
  L <- Ni + burn; et <- rnorm(L,sd = sig); Xt <- rep(0L,L)
  if (is.null(del) ) { # || del == 0L
    for (k in 2:L) {
      if (Xt[k-1] <= r) {
        Xt[k] <- pi*Xt[k-1] + et[k-1]
      } else {
        Xt[k] <- et[k-1]
      }
    }
  } else if (0 <= del && del <= 1) {
    gap <- pi*del
    for (k in 2:L) {
      if (Xt[k-1] <= r) {
        Xt[k] <- pi*Xt[k-1] + et[k-1]
      } else {
        Xt[k] <- (pi+gap)*Xt[k-1] + et[k-1]
      }
    }
  } else {
    stop("Variable 'del' should be between 0 to 1.")
  }
  val <- ts(Xt[-(1:burn)])
  if (doplot) {
    plot(val, xlab = expression(t),ylab = expression(X[t]) )
    abline(h = r, col = "red")
  }
  return(val)
}

我正在尝试验证是否正确。

0 个答案:

没有答案