Matrice de transition: discrète -> temps continu


8

J'ai le code correspondant à Tauchen (1986) (équivalent Python de cela ), qui génère une approximation discrète d'un processus AR (1) à temps discret.

Par exemple, si vous définissez la taille de la grille sur 3, cela vous donne un vecteur de productivité

[A_1, A_2, A_3,]

et une matrice de probabilités de transition

A_11, A_12, A_13
A_21, A_22, A_23
A_31, A_32, A_33

Où ligne i, colonne jvous donne la probabilité de passer de ià j, et il vérifie que la somme de chaque ligne est d'environ un.

Je me demande comment je peux transformer cela en un équivalent temps continu de la matrice de transition; un ensemble de probabilités de poisson contrôlant les débits entre les états.

Tout ce dont je me souviens à cet égard, c'est que nous pouvons obtenir l'approximation linéaire des probabilités de poisson en utilisant

Prob(ij)=limΔ0exp(λijΔ)1λijΔ

Mais je ne vois pas comment cela m'aide à transformer cette ancienne matrice en λ s ... J'ai hâte de toute suggestion.

Réponses:


6

Supposons que est une matrice de taux de transition de Poisson, où pour représente le taux auquel l'état passe à l'état et donne le taux à quel état passe à tous les autres états. Chaque ligne de égale à 0.Bn×nBij0ijijBii0iB

Alors si dénote la distribution de probabilité au temps , par définition de nous avons l'ODE Nous savons à quoi ressemble la solution à ce type d'ODE: , où est l' exponentielle de matrice de . Donc, si nous voulons pour générer la matrice de transition de Markov après , nous devons avoir .p(t)tB

p˙(t)=Bp(t)
p(t)=eBtp(0)eBtBtBAt=1eB=A

En principe, pour obtenir , nous avons besoin d'inverser l'exponentielle de la matrice, en prenant le logarithme de la matrice de . Le problème est que chaque matrice a de nombreux logarithmes matriciels - le logarithme dans un espace complexe unidimensionnel a une infinité de branches, et cela est aggravé lorsque nous parlons de matrices dans un espace à dimensions. La plupart de ces logarithmes ne seront pas des matrices de transition de Poisson satisfaisantes: peut-être ne seront-elles pas réelles, ou les entrées n'auront pas les bons signes. Pourtant, il est possible que plusieurs d'entre eux le soient: dans certains cas il y a plus d'un Poisson correspondant à un Markov , tout comme dans certains cas il n'y a pas de PoissonBAnBABcorrespondant à . C'est désordonné.A

Heureusement, il y a une situation où la vie est relativement simple, et cela inclut presque certainement votre propre cas: lorsque toutes les valeurs propres de sont des réels positifs et distinctsA . Dans ce cas, il n'y a qu'un seul logarithme de qui sera réel, et c'est facile à calculer: vous diagonalisez simplement la matrice comme et prenez le vrai logarithme des valeurs propres, obtenant , où . En effet, vous n'avez pas besoin de le faire vous - même: si vous utilisez la commande dans Matlab (probablement Python aussi), il vous donnera précisément ce .AA=VΣV1B=VΩV1ωii=log(σii)logm(A)B

Étant donné ce , tout ce que vous avez à faire est de vérifier qu'il s'agit bien d'une matrice de Poisson. La première exigence, que toutes les lignes soient égales à zéro, est satisfaite automatiquement en raison de la construction de ** La deuxième exigence, que les éléments diagonaux soient négatifs et les éléments hors diagonale soient positifs, ne tient pas toujours (je pense ), mais il vous est facile de vérifier.BB

Pour voir cela en action, je considérerai un pour un processus de Markov à 3 états qui ressemble à un AR discrétisé (1). Maintenant, si je tape dans Matlab, je obtenir Il s'agit en effet d'une matrice de transition de Poisson valide, car nous pouvons facilement vérifier que les lignes totalisent zéro et ont les bons signes - c'est donc notre réponse.A

A=(0.50.40.10.20.60.20.10.40.5)
B=logm(A)
B=(0.860.800.060.400.800.400.060.800.86)

Le cas avec des valeurs propres positives est assez important, car il couvre tous les cas où il n'y a pas de comportement oscillatoire dans la chaîne de Markov (qui nécessiterait des valeurs propres négatives ou complexes), y compris probablement votre RA discrétisé (1).

Plus généralement, la commande sur Matlab nous donnera le logarithme matriciel principal , un analogue du logarithme scalaire principal qui prend toutes les valeurs propres pour avoir une partie imaginaire entre et . Le problème est que ce n'est pas nécessairement le logarithme que nous voulons, et en le regardant nous pourrions manquer un Poisson qui ne génère . (C'est pourquoi le cas des valeurs propres positives, où nous n'avons pas eu à nous en préoccuper, était si agréable.) Pourtant, même dans ces autres cas, cela ne peut pas faire de mal d'essayer de voir si cela fonctionne.logmππBA

Soit dit en passant, ce problème de voir s'il existe un qui génère une matrice de Markov a été étudié de manière approfondie. C'est ce qu'on appelle le problème de l' intégration : voir un aperçu et des références dans cet excellent article d'enquête de Davies . Je ne suis cependant pas un expert des aspects techniques du problème; cette réponse est plus basée sur ma propre expérience et intuition hackish.BA

Je me sens obligé de conclure en appuyant le commentaire d'ecksc et en disant qu'il pourrait y avoir de meilleures façons plus directes de convertir un AR discrètement ajusté (1) en un processus de temps continu à états finis - plutôt que de simplement prendre la matrice obtenue via la méthode de Tauchen et le rendant continu. Mais je ne sais pas personnellement ce qu'est cette meilleure façon!


** Explication (bien que je sois rouillé): a une valeur propre Perron-Frobenius unique de 1, et puisque est stochastique, le vecteur propre droit de cette valeur propre est le vecteur unitaire . C'est toujours le bon vecteur propre, maintenant avec une valeur propre de 0, quand nous prenons le logarithme matriciel.AAe


2

Je ne peux pas commenter, ou je demanderais d'abord plus de détails. Si vous essayez de convertir un processus AR (1) adapté à une série temporelle discrète en un processus temporel continu, j'ai trouvé une ressource pertinente ici à la page 4.

Les calculs sont fournis pour estimer les coefficients d'un processus CAR (2) à partir d'un processus AR (2), mais bien sûr, vous pouvez substituer un 0 au deuxième coefficient pour obtenir votre conversion.

Si vous essayez de convertir une chaîne de Markov à temps discret en temps continu, cela va être plus compliqué et je devrai faire plus de lecture avant de pouvoir vous aider davantage. :) En attendant, voici du bon matériel de lecture que j'ai trouvé concernant les chaînes de Markov à temps continu.

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.