단 변량 지수 혹 프로세스는 다음과 같은 이벤트 도달률을 갖는 자체 자극 포인트 프로세스입니다.
여기서, 은 이벤트 도착 시간입니다.
로그 우도 함수는
재귀 적으로 계산할 수 있습니다.
What numerical methods can I use to find the MLE? What is the simplest practical method to implement?
단 변량 지수 혹 프로세스는 다음과 같은 이벤트 도달률을 갖는 자체 자극 포인트 프로세스입니다.
여기서, 은 이벤트 도착 시간입니다.
로그 우도 함수는
재귀 적으로 계산할 수 있습니다.
What numerical methods can I use to find the MLE? What is the simplest practical method to implement?
답변:
The Nelder-Mead simplex algorithm seems to work well.. It is implemented in Java by the Apache Commons Math library at https://commons.apache.org/math/ . I've also written a paper about the Hawkes processes at Point Process Models for Multivariate High-Frequency Irregularly Spaced Data .
felix, using exp/log transforms seems to ensure positivity of the parameters. As for the small alpha thing, search the arxiv.org for a paper called "limit theorems for nearly unstable hawkes processes"
I solved this problem using the nlopt library. I found a number of the methods converged quite quickly.
You could also do a simple maximization. In 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
.