Supponiamo che sia una matrice delle velocità di transizione di Poisson, dove per indica la velocità con cui lo stato passa allo stato , e indica la velocità a quale stato passi a tutti gli altri stati. Ogni riga di somma a 0.Bn×nBij≥0i≠jijBii≤0iB
Quindi se indica la distribuzione di probabilità al tempo , per definizione di abbiamo l'ODE
Sappiamo come appare la soluzione a questo tipo di ODE: , dove è la matrice esponenziale di . Quindi, se vogliamo per generare il Markov transizione di matrice dopo , abbiamo bisogno di avere .p(t)tB
p˙(t)=Bp(t)
p(t)=eBtp(0)eBtBtBAt=1eB=A
In linea di principio, per ottenere , occorre invertire la matrice esponenziale, prendendo il logaritmo matrice di . Il problema è che ogni matrice ha molti logaritmi a matrice - il logaritmo nello spazio complesso unidimensionale ha infiniti rami, e questo è aggravato quando parliamo di matrici nello spazio -dimensionale. La maggior parte di questi logaritmi non saranno soddisfacenti matrici di transizione di Poisson: forse non saranno reali o le voci non avranno i segni giusti. Tuttavia è possibile che più di uno sarà: in alcuni casi c'è più di un Poisson corrispondente a un Markov , così come in alcuni casi non c'è PoissonBAnBABcorrispondente ad . È disordinato.A
Fortunatamente, c'è una situazione in cui la vita è relativamente semplice e quasi sicuramente include il tuo caso personale: quando tutti gli autovalori di sono reali positivi e distintiA . In questo caso, esiste un solo logaritmo di che sarà reale ed è facile da calcolare: basta diagonalizzare la matrice come e prendere il vero logaritmo degli autovalori, ottenendo , dove . In effetti, non c'è bisogno di farlo da soli: se si utilizza il comando in Matlab (presumibilmente Python troppo), che vi darà proprio questo .AA=VΣV−1B=VΩV−1ωii=log(σii)logm(A)B
Dato questo , tutto ciò che devi fare è verificare che sia effettivamente una matrice di Poisson. Il primo requisito, che tutte le righe si sommano a zero, viene soddisfatto automaticamente a causa della costruzione di ** Il secondo requisito, che gli elementi diagonali sono negativi e gli elementi fuori diagonale sono positivi, non sempre tiene (penso ), ma è facile per te controllare.BB
Per vederlo in azione, prenderò in considerazione un per un processo di Markov a 3 stati che ricorda un AR discretizzato (1).
Ora, se in Matlab, I get
Questa è davvero una matrice di transizione Poisson valida, poiché possiamo facilmente verificare che le righe si sommano a zero e hanno i segni giusti - quindi questa è la nostra risposta.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⎞⎠⎟
Il caso con autovalori positivi è piuttosto importante, dal momento che abbraccia tutti i casi in cui non vi è alcun tipo di comportamento oscillatorio nella catena di Markov (che richiederebbe autovalori negativi o complessi), presumibilmente includendo il tuo AR discretizzato (1).
Più in generale, il comando su Matlab ci darà il logaritmo della matrice principale , un analogo del logaritmo scalare principale che prende tutti gli autovalori per avere una parte immaginaria tra e . Il problema è che questo non è necessariamente il logaritmo che vogliamo, e cercando in essa si potrebbe perdere una Poisson che fa generare . (Ecco perché il caso di autovalore positivo, in cui non dovevamo preoccuparci di questo, è stato così bello.) Tuttavia, anche in questi altri casi non può far male provare a vedere se funziona.logm−ππBA
A proposito, questo problema di vedere se esiste una che genera una matrice Markov è stato ampiamente studiato. Si chiama problema di incorporabilità : vedi una panoramica e riferimenti in questo eccellente articolo del sondaggio di Davies . Non sono un esperto di aspetti tecnici del problema, comunque; questa risposta si basa più sulla mia esperienza e intuizione hacker.BA
Mi sento obbligato a chiudere distaccando il commento di ecksc e dicendo che potrebbero esserci modi migliori e più diretti per convertire un AR (1) discretamente adattato in un processo a tempo continuo a stati finiti - piuttosto che prendere semplicemente la matrice ottenuta con il metodo Tauchen e rendendolo continuo. Ma non so personalmente quale sia il modo migliore!
** Spiegazione (anche se sono arrugginito): ha un unico autovalore di Perron-Frobenius pari a 1, e poiché è stocastico, il giusto autovettore di questo autovalore è il vettore unitario . Questo è ancora l'autovettore giusto, ora con un autovalore di 0, quando prendiamo il logaritmo della matrice.AAe