У меня есть модель временного ряда (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)