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×nBij≥0i≠jijBii≤0iB
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ΣV−1B=VΩV−1ω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.20.10.40.60.40.10.20.5⎞⎠⎟
B=logm(A)B=⎛⎝⎜−0.860.400.060.80−0.800.800.060.40−0.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