Simuler un processus gaussien (Ornstein Uhlenbeck) avec une fonction de covariance à décroissance exponentielle


8

J'essaie de générer de nombreux tirages (c'est-à-dire des réalisations) d'un processus gaussien , avec la moyenne 0 et la fonction de covariance .ei(t)1tTγ(s,t)=exp(|ts|)

Existe-t-il un moyen efficace de le faire qui n'impliquerait pas de calculer la racine carrée d'une matrice de covariance ? Sinon, quelqu'un peut-il recommander un package pour ce faire?T×TR


2
C'est un processus stationnaire (ressemble à une version simple d'un processus OU). Est-il échantillonné uniformément?
cardinal

Le package R mvtnorma rmvnorm(n, mean, sigma)sigmaest la matrice de covariance; vous devez cependant construire vous-même la matrice de covariance pour vos t échantillonnés / sélectionnés t.
jbowman

2
@jb Vraisemblablement est énorme, sinon l'OP ne demanderait pas à éviter la décomposition de la matrice (qui est implicite dans ). Trmvnorm
whuber

1
@cardinal Je suis d'accord, c'est un processus gaussien Ornstein-Uhlenbeck. (Ce serait génial si le mot-clé "Ornstein Uhlenbeck" pouvait être modifié dans la question et / ou le titre. Il obtiendrait cette question plus de trafic qu'elle mérite)
redmoskito

Réponses:


11

Oui. Il existe un algorithme très efficace (temps linéaire), et son intuition vient directement du cas échantillonné uniformément.

Supposons que nous ayons une partition de tel que .[0,T]0=t0<t1<t2<<tn=T

Cas échantillonné uniformément

Dans ce cas, nous avons où . Soit la valeur du processus échantillonné discrètement au temps .ti=iΔΔ=T/nXi:=X(ti)ti

Il est facile de voir que les forment un processus AR (1) avec corrélation . Par conséquent, nous pouvons générer un exemple de chemin pour la partition comme suit où sont iid et .Xiρ=exp(Δ){Xt}

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

Cas général

On pourrait alors imaginer qu'il pourrait être possible de le faire pour une partition générale . En particulier, soit et . Nous avons cela et nous pouvons donc deviner que Δi=ti+1tiρi=exp(Δi)

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

En effet, et donc nous avons au moins la corrélation avec le terme voisin correcte.EXi+1Xi=ρi

Le résultat suit maintenant en se télescopant via la propriété de la tour de l'attente conditionnelle. A savoir, et les télescopes de produit dans le de la manière suivante

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

Cela prouve le résultat. Par conséquent, le processus peut être généré sur une partition arbitraire à partir d'une séquence de variables aléatoires iid en temps où est la taille de la partition.N(0,1)O(n)n

NB : Il s'agit d'une technique d'échantillonnage exacte en ce qu'elle fournit une version échantillonnée du processus souhaité avec les distributions de dimensions finies exactement correctes . Cela contraste avec les schémas de discrétisation d'Euler (et d'autres) pour les SDE plus généraux, qui encourent un biais en raison de l'approximation via la discrétisation.


Encore quelques remarques. (1) Pour avoir une bonne idée de ce à quoi ressemble le processus de temps continu, et doivent être choisis de sorte que soit petit, disons inférieur à . (2) La matrice de covariance inverse ( précision ) pour le vecteur série temporelle est tri-diagonale, tout comme sa racine de Cholesky. nTΔ0.1
Yves

@Yves: Merci pour vos commentaires. Pour être clair, la procédure que j'ai décrite donne une réalisation exacte du processus en temps continu échantillonné sur la partition correspondante; en particulier, il n'y a pas d' erreur de discrétisation comme dans l'approximation du schéma d'Euler typique des SDE plus généraux. L'inverse de Cholesky, comme le montre la construction de la réponse, n'a des termes non nuls que sur la diagonale et la diagonale inférieure, c'est donc un peu plus simple que tridiagonal.
cardinal

Très bonne réponse! Est-ce que cela se généralise au processus OU général avec une échelle arbitraire, ? Il semble que ce soit possible. γ(ti,tj)=exp(α|titj|)
redmoskito

1

Calculez la matrice de covariance décomposée par décomposition Cholesky incomplète ou toute autre technique de décomposition matricielle. La matrice décomposée doit être TxM, où M n'est qu'une fraction de T.

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


2
Pouvez-vous donner ici une forme explicite de la décomposition de Cholesky? Je pense que la réponse du cardinal y parvient, si vous y réfléchissez, en exprimant en fonction de l'histoire. Xi
StasK

1
L'algorithme est un peu trop long pour résumer. Vous pouvez trouver une excellente description ici: Kernel ICA , page 20. Notez que cet algorithme est incomplet , ce qui signifie qu'il ne calcule pas la décomposition entière mais plutôt une approximation (il est donc beaucoup plus rapide). J'ai publié le code de cet algorithme dans la boîte à outils KMBOX, vous pouvez le télécharger ici: km_kernel_icd .
Steven
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.