Finden der MLE für einen univariaten exponentiellen Hawkes-Prozess

16

Der univariate exponentielle Hawkes-Prozess ist ein aufregender Punktprozess mit einer Ereignisankunftsrate von:

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

Dabei sind die Ereignisankunftszeiten.t1,..tn

Die Log Likelihood Funktion ist

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

was rekursiv berechnet werden kann:

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

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

R(1)=0

Welche numerischen Methoden kann ich verwenden, um die MLE zu finden? Was ist die einfachste praktische Methode zur Implementierung?

Dave Anderson
quelle
1
Ich hatte den Erfolg, und indem ich die MLE der LBFGS-Implementierung in scipy maximierte. Die Log-Wahrscheinlichkeit ist in jedoch nicht konkav , daher habe ich einfach einen Bereich von Werten durchlaufen und den mit der maximalen Wahrscheinlichkeit ausgewählt. Beachten Sie, dass für die Stationarität des Prozesses erforderlich ist. α β β α < βμαββα<β
Emaad Ahmed Manzoor
1
neugierig, was ist die richtige Form der λ (t) -Funktion unter Verwendung der Werte von R (i), anstatt bei jedem Schritt erneut zu summieren?
Krähe

Antworten:

7

Der Nelder-Mead-Simplex-Algorithmus scheint gut zu funktionieren. Er wird in Java von der Apache Commons Math-Bibliothek unter https://commons.apache.org/math/ implementiert . Ich habe auch einen Artikel über die Hawkes-Prozesse bei Point Process Models für multivariate Hochfrequenzdaten mit unregelmäßigen Abständen geschrieben .

felix, der exp / log transforms verwendet, scheint die sicherheit der parameter zu gewährleisten. Durchsuchen Sie arxiv.org nach einem Artikel mit dem Titel "Grenzwertsätze für nahezu instabile Hawkes-Prozesse".

Krähe
quelle
1
Willkommen auf der Site @StephenCrowley. Wenn Sie eine eigene Frage haben, posten Sie diese bitte nicht als (/ als Teil einer) Antwort. Klicken Sie oben auf der Seite auf die graue Schaltfläche "FRAGE STELLEN" und stellen Sie sie dort. Wenn Sie eine Frage zur Klärung durch das OP haben, sollten Sie diese in einem Kommentar zum obigen Fragenbeitrag stellen. (Obwohl dies frustrierend ist, können Sie dies erst tun, wenn Sie 50 Wiederholungen erreicht haben.)
gung - Setzen Sie Monica wieder ein
3

Ich habe dieses Problem mit der nlopt- Bibliothek gelöst . Ich fand eine Reihe von Methoden ziemlich schnell konvergiert.

Dave Anderson
quelle
1
Ich nehme an, Sie kennen T. Ozaki (1979), Maximum Likelihood Estimation von Hawkes 'selbsterregenden Punktprozessen , Ann. Inst. Statist. Mathematik. vol. 31, nein. 1, 145 & ndash; 155.
Kardinal
1
Könnten Sie uns etwas näher erläutern, was Sie getan haben? Es scheint, dass es ein Problem beim Festlegen von Einschränkungen gibt und dass ein großes Beta nicht von null Alpha zu unterscheiden ist (beide sehen aus wie Poisson).
Felix
3

Sie können auch eine einfache Maximierung durchführen. 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)
angenommennormal
quelle
Wie stellen Sie sicher, dass mu, alpha und beta nicht auf negative Werte gesetzt sind?
Felix
Sie können die Parameter lowerund upperim optimAufruf einstellen .
Angenommen, normal
Nicht für Nelder-Mead, können Sie nicht, welche die Standardeinstellung ist? (Siehe stat.ethz.ch/R-manual/R-devel/library/stats/html/optim.html ). Ich glaube auch nicht, dass es eine Möglichkeit gibt, ein großes Beta von einem Null-Alpha zu unterscheiden. Daher scheint eine allgemeine Optimierung zum Scheitern verurteilt zu sein.
Felix