【发布时间】:2019-04-28 22:27:28
【问题描述】:
我有一个时间序列模型(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循环,但循环无法停止。
我能做些什么来解决这个问题?有没有其他方法可以在不使用while循环的情况下添加alpha1 + beta1 < 1的约束?
下面是我的代码:
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)
【问题讨论】:
-
不客气,但无需在答案中表示感谢。通过投票和接受答案来表示帮助,以便其他用户看到它是有用的。祝你剩下的问题好运。
标签: r optimization mle log-likelihood