Simulation eines Gaußschen Prozesses (Ornstein Uhlenbeck) mit einer exponentiell abfallenden Kovarianzfunktion

8

Ich versuche, viele Draws (dh Realisierungen) eines Gaußschen Prozesses , mit dem Mittelwert 0 und der Kovarianzfunktion zu erzeugen .ei(t)1tTγ(s,t)=exp(|ts|)

Gibt es einen effizienten Weg, um die Quadratwurzel einer Kovarianzmatrix nicht zu berechnen? Kann jemand alternativ ein Paket empfehlen , um dies zu tun?T×TR

user603
quelle
2
Es ist ein stationärer Prozess (ähnelt einer einfachen Version eines OU-Prozesses). Wird es gleichmäßig abgetastet?
Kardinal
Das R-Paket mvtnormhat rmvnorm(n, mean, sigma)wo sigmaist die Kovarianzmatrix; Sie müssten jedoch die Kovarianzmatrix für Ihre abgetasteten / ausgewählten selbst erstellen. t
Jbowman
2
@jb Vermutlich ist riesig, sonst würde die OP nicht fragen die Matrix Zersetzung zu vermeiden (was implizit in ist ). Trmvnorm
whuber
1
@cardinal Ich stimme zu, dies ist ein Ornstein-Uhlenbeck-Gauß-Prozess. (Es wäre großartig, wenn das Schlüsselwort "Ornstein Uhlenbeck" in die Frage und / oder den Titel umgewandelt werden könnte. Diese Frage würde umso mehr Verkehr erhalten, je mehr Verkehr sie verdient.)
redmoskito

Antworten:

11

Ja. Es gibt einen sehr effizienten (linearen Zeit-) Algorithmus, und die Intuition dafür stammt direkt aus dem einheitlich abgetasteten Fall.

Angenommen , wir haben eine Partition von , so dass .0 = t 0 < t 1 < t 2 < < t n = T.[0,T]0=t0<t1<t2<<tn=T

Fall mit einheitlicher Stichprobe

In diesem Fall haben wir wobei . Let den Wert des diskret abgetasteten Prozess zum Zeitpunkt bezeichnen .Dgr ; & Dgr; = T / n X i : = X ( t i ) t iti=iΔΔ=T/nXi:=X(ti)ti

Es ist leicht zu erkennen, dass einen AR (1) -Prozess mit der Korrelation . Daher können wir einen Beispielpfad für die Partition wie folgt erzeugen: wobei sind iid und . ρ = exp ( - Δ ) { X t } X i + 1 = ρ X i + Xiρ=exp(Δ){Xt}Z i N ( 0 , 1 ) X 0 = Z 0

Xi+1=ρXi+1ρ2Zi+1,
ZiN(0,1)X0=Z0

Allgemeiner Fall

Wir könnten uns dann vorstellen, dass dies für eine allgemeine Partition möglich sein könnte. Insbesondere sei und . Wir haben das und so könnten wir vermuten, dass ρ i = exp ( - Δ i ) γ ( t i , t i + 1 ) = ρ iΔi=ti+1tiρi=exp(Δi)X i + 1 = ρ i X i +

γ(ti,ti+1)=ρi,
Xi+1=ρiXi+1ρi2Zi+1.

In der Tat ist und so haben wir zumindest die Korrelation mit dem benachbarten Term korrekt.EXi+1Xi=ρi

Das Ergebnis folgt nun durch Teleskopieren über die Turmeigenschaft der bedingten Erwartung. Nämlich und die Produktteleskope in der auf folgende Weise

EXiXi=E(E(XiXiXi1))=ρi1EXi1Xi==k=1ρik,
k=1ρik=exp(k=1Δik)=exp(titi)=γ(ti,ti).

Dies beweist das Ergebnis. Daher kann der Prozess auf einer beliebigen Partition aus einer Folge von iid Zufallsvariablen in -Zeit erzeugt werden, wobei die Größe der Partition ist.N(0,1)O(n)n

NB : Dies ist eine exakte Abtasttechnik, da sie eine abgetastete Version des gewünschten Prozesses mit den genau korrekten endlichdimensionalen Verteilungen liefert . Dies steht im Gegensatz zu Euler- (und anderen) Diskretisierungsschemata für allgemeinere SDEs, bei denen aufgrund der Annäherung über die Diskretisierung eine Verzerrung auftritt.

Kardinal
quelle
Nur noch ein paar Bemerkungen. (1) Um eine gute Vorstellung davon zu bekommen, wie der kontinuierliche Zeitprozess aussieht, müssen und so gewählt werden, dass klein ist, sagen wir weniger als . (2) Die inverse Kovarianzmatrix ( Präzisionsmatrix ) für den Zeitreihenvektor ist dreidiagonal, ebenso wie seine Cholesky-Wurzel. nTΔ0.1
Yves
@ Yves: Danke für deine Kommentare. Um es klar auszudrücken, bietet das von mir beschriebene Verfahren eine genaue Realisierung des zeitkontinuierlichen Prozesses, der auf der entsprechenden Partition abgetastet wurde. Insbesondere gibt es keinen Diskretisierungsfehler wie bei einer typischen Euler-Schema-Annäherung an allgemeinere SDEs. Der inverse Cholesky hat, wie die Konstruktion in der Antwort zeigt, nur in der Diagonale und in der unteren Off-Diagonale Begriffe ungleich Null, ist also etwas einfacher als die Tridiagonale.
Kardinal
Gute Antwort! Verallgemeinert sich dies auf den allgemeinen OU-Prozess mit beliebiger Skala, ? Es scheint so. γ(ti,tj)=exp(α|titj|)
Redmoskito
1

Berechnen Sie die zerlegte Kovarianzmatrix durch unvollständige Cholesky-Zerlegung oder eine andere Matrixzerlegungstechnik. Die zerlegte Matrix sollte TxM sein, wobei M nur ein Bruchteil von T ist.

http://en.wikipedia.org/wiki/Incomplete_Cholesky_factorization

Steven
quelle
2
Können Sie hier eine explizite Form der Cholesky-Zerlegung angeben? Ich denke, dass die Antwort des Kardinals genau das erreicht, wenn Sie darüber nachdenken, indem Sie als Funktion der Geschichte ausdrücken . Xi
StasK
1
Der Algorithmus ist etwas zu lang, um ihn zusammenzufassen. Eine hervorragende Beschreibung finden Sie hier: Kernel ICA , Seite 20. Beachten Sie, dass dieser Algorithmus unvollständig ist , dh nicht die gesamte Zerlegung berechnet, sondern eine Annäherung (daher ist er viel schneller). Ich habe Code für diesen Algorithmus in der KMBOX-Toolbox veröffentlicht. Sie können ihn hier herunterladen: km_kernel_icd .
Steven