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?


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"


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.


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)

¿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
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.