Encontrar el MLE para un proceso de Hawkes exponencial univariante

16

El proceso exponencial univariante de Hawkes es un proceso de puntos autoexcitante con una tasa de llegada de eventos de:

λ(t)=μ+ti<tαeβ(tti)

donde son las horas de llegada del evento.t1,..tn

La función de probabilidad de registro es

tnμ+αβ(eβ(tnti)1)+i<jln(μ+αeβ(tjti))

que se puede calcular de forma recursiva:

tnμ+αβ(eβ(tnti)1)+ln(μ+αR(i))

R(i)=eβ(titi1)(1+R(i1))

R(1)=0

¿Qué métodos numéricos puedo usar para encontrar el MLE? ¿Cuál es el método práctico más simple de implementar?

Dave Anderson
fuente
1
He tenido éxito ajustando μ y α maximizando la implementación de MLE the LBFGS en scipy. Sin embargo, la probabilidad de registro no es cóncava en β , por lo que simplemente iteré en un rango de valores β y elegí el que tiene la máxima probabilidad. Tenga en cuenta que se requiere α<β para la estacionariedad del proceso.
Emaad Ahmed Manzoor
1
Curioso, ¿cuál es la forma correcta de la función λ (t) utilizando los valores de R (i) en lugar de reanudar en cada paso?
cuervo

Respuestas:

7

El algoritmo simplex Nelder-Mead parece funcionar bien. Está implementado en Java por la biblioteca matemática Apache Commons en https://commons.apache.org/math/ . También he escrito un artículo sobre los procesos de Hawkes en Modelos de proceso puntuales para datos multivariados de alta frecuencia con espacios irregulares .

Felix, el uso de transformaciones exp / log parece garantizar la positividad de los parámetros. En cuanto a la pequeña cosa alfa, busque en arxiv.org un artículo llamado "teoremas de límites para procesos de Hawkes casi inestables"

cuervo
fuente
1
Bienvenido al sitio, @StephenCrowley. Si tiene su propia pregunta, no la publique como (/ como parte de) una respuesta. Haga clic en el botón gris "PREGUNTAR PREGUNTA" en la parte superior de la página y pregúntelo allí. Si tiene una pregunta para aclaración del OP, debe formularla en un comentario a la publicación de preguntas anterior. (Aunque frustrante, no se puede hacer eso hasta que llegue a 50 rep.)
Gung - Restablecer Mónica
3

Resolví este problema usando la biblioteca nlopt . Encontré que varios métodos convergieron bastante rápido.

Dave Anderson
fuente
1
Supongo que está familiarizado con T. Ozaki (1979), Estimación de máxima verosimilitud de los procesos de puntos autoexcitantes de Hawkes , Ann. Inst. Estadístico. Matemáticas. vol. 31, no. 1, 145-155.
cardenal
1
¿Podría dar más detalles de lo que hizo? Parece que hay un problema con el establecimiento de restricciones y también que la beta grande es indistinguible de cero alfa (ambos se ven como Poisson).
Felix
3

También podrías hacer una maximización simple. En 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)
asumido normal
fuente
¿Cómo se asegura que mu, alpha y beta no estén configurados en valores negativos?
Felix
Puede establecer los parámetros lowery upperen la optimllamada.
asumido el
No es para Nelder-Mead, no puedes, ¿cuál es el valor predeterminado? (Ver stat.ethz.ch/R-manual/R-devel/library/stats/html/optim.html ). Además, no creo que haya alguna forma de distinguir entre la beta enorme y la alfa cero, por lo que una optimización general parece condenada.
Felix