我有一个时间序列模型(INGARCH):
lambda_t = alpha0 + alpha1*(x_(t-1)) + beta1*(lambda_(t-1))
X_t ~ poisson (lambda_t)
其中 t 是观察或数据的长度,alpha0、alpha1 和 beta1 是参数。
X_t
是数据系列,lambda_t 是均值系列。
该模型具有 的条件alpha1 + beta1 < 1
。
在我的估计中,我想alpha1 + beta1 <
在我的代码中添加 1 的条件,我在对数似然函数中添加了一个 while 循环,但循环无法停止。
我能做些什么来解决这个问题?有没有其他方法可以在alpha1 + beta1 < 1
不使用 while 循环的情况下添加约束?
以下是我的代码:
ll <- function(par) {
h.new = rep(0,n)
#par[1] is alpha0
#par[2] is alpha1
#par[3] is beta1
while(par[2] + par[3] < 1){
for (i in 2:n) {
h.new[i] <- par[1] + par[2] * dat[i-1] + par[3] * h.new[i-1]
}
-sum(dpois(dat, h.new, log=TRUE))
}
}
#simply generate a dataset as I have not found a suitable real dataset to fit in
set.seed(77)
n=400
dat <- rpois(n,36)
nlminb(start = c(0.1,0.1,0.1), lower = 1e-6, ll)