Answers:
Nelder-Mead单纯形算法似乎很好用。它是由Apache Commons Math库在Java中实现的,网址为https://commons.apache.org/math/。我还写了一篇关于多变量高频不规则空间数据的点过程模型中的Hawkes过程的论文。
felix,使用exp / log转换似乎可以确保参数的正性。至于小Alpha,请在arxiv.org上搜索一篇名为“几乎不稳定的霍克斯过程的极限定理”的论文。
您也可以进行简单的最大化。在R中:
neg.loglik <- function(params, data, opt=TRUE) {
mu <- params[1]
alpha <- params[2]
beta <- params[3]
t <- sort(data)
r <- rep(0,length(t))
for(i in 2:length(t)) {
r[i] <- exp(-beta*(t[i]-t[i-1]))*(1+r[i-1])
}
loglik <- -tail(t,1)*mu
loglik <- loglik+alpha/beta*sum(exp(-beta*(tail(t,1)-t))-1)
loglik <- loglik+sum(log(mu+alpha*r))
if(!opt) {
return(list(negloglik=-loglik, mu=mu, alpha=alpha, beta=beta, t=t,
r=r))
}
else {
return(-loglik)
}
}
# insert your values for (mu, alpha, beta) in par
# insert your times for data
opt <- optim(par=c(1,2,3), fn=neg.loglik, data=data)
lower
和upper
参数optim
。