我正在尝试使用以下代码从零拦截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)
}
我正在尝试验证是否正确。