Suponha que seja uma matriz de taxas de transição Poisson, em que para denota a taxa na qual o estado passa para o estado e fornece a taxa em que estado transição para todos os outros estados. Cada linha de igual a 0.n × n B i j ≥ 0 i ≠ j i j B i i ≤ 0 i BBn×nBij≥0i≠jijBii≤0iB
Então, se denota a distribuição de probabilidade no tempo , por definição de , temos ODE
Sabemos como é a solução para esse tipo de ODE: , onde é o exponencial da matriz de . Então, se quisermos para gerar a Markov transição matriz após , nós precisamos ter .t B ˙ p ( t ) = B p ( t ) p ( t ) = e B t p ( 0 ) e B t B t B A t = 1 e B = Ap(t)tB
p˙(t)=Bp(t)
p(t)=eBtp(0)eBtBtBAt=1eB=A
Em princípio, para obter , precisamos inverter a exponencial de matriz, tomando o logaritmo matriz de . O problema é que cada matriz possui muitos logaritmos matriciais - o logaritmo no espaço complexo unidimensional possui infinitos ramos - e isso é composto quando se trata de matrizes no espaço dimensional. Muitos desses logaritmos não serão matrizes de transição de Poisson satisfatórias: talvez não sejam reais ou as entradas não apresentem os sinais corretos. No entanto, é possível que mais de um deles seja: em alguns casos, há mais de um Poisson correspondente a um Markov , assim como em alguns casos não há PoissonA n B A B ABAnBABcorrespondendo a . É bagunçado.A
Felizmente, há uma situação em que a vida é relativamente simples e quase certamente inclui o seu próprio caso: quando todos os autovalores de são reais positivos e distintosA . Nesse caso, existe apenas um logaritmo de que será real e é fácil de calcular: basta diagonalizar a matriz como e pegar o logaritmo real dos valores próprios, obtendo , onde . Na verdade, você não precisa fazer isso sozinho: se você usar o comando em Matlab (presumivelmente Python também), ele vai te dar exatamente essa .AA=VΣV−1B=VΩV−1ωii=log(σii)logm(A)B
Dado esse , tudo o que você precisa fazer é verificar se é realmente uma matriz de Poisson. O primeiro requisito, que todas as linhas somam zero, é satisfeito automaticamente devido à construção de ** O segundo requisito, que os elementos diagonais são negativos e os elementos fora da diagonal são positivos, nem sempre é válido (eu acho ), mas é fácil verificar.BB
Para ver isso em ação, considerarei um para um processo de Markov de três estados que se assemelha a um RA discreto (1).
Agora, se eu digitar no Matlab, I get
Esta é realmente uma matriz de transição de Poisson válida, pois podemos verificar facilmente se as linhas somam zero e têm os sinais certos - então esta é a nossa resposta.A = ( 0,5 0,4 0,1 0,2 0,6 0,2 0,1 0,4 0,5 ) B = logm ( A ) B = ( - 0,86 0,80 0,06 0,40 - 0,80 0,40 0,40 0,06 0,80 - 0,86 )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⎞⎠⎟
O caso com autovalores positivos é bastante importante, pois abrange todos os casos em que não há algum tipo de comportamento oscilatório na cadeia de Markov (o que exigiria autovalores negativos ou complexos), provavelmente incluindo o seu RA discretizado (1).
De maneira mais geral, o comando no Matlab nos fornecerá o logaritmo principal da matriz, um análogo do logaritmo escalar principal que leva todos os autovalores a terem parte imaginária entre e . O problema é que isso não é necessariamente o logaritmo que queremos, e, olhando para ela podemos perder um Poisson que faz gerar . (É por isso que o caso de autovalor positivo, em que não precisamos nos preocupar com isso, foi tão bom.) Ainda assim, mesmo nesses outros casos, não custa nada tentar ver se funciona.- π π B Alogm−ππBA
A propósito, esse problema de verificar se existe um que gera alguma matriz de Markov foi estudado extensivamente. É chamado de problema de incorporabilidade : veja algumas visões gerais e referências neste excelente artigo de pesquisa de Davies . Não sou especialista em aspectos técnicos do problema; essa resposta é baseada mais na minha própria experiência e intuição hackish.ABA
Sinto-me obrigado a fechar destacando o comentário de ecksc e dizendo que pode haver maneiras melhores e mais diretas de converter um AR (1) discretamente ajustado em um processo de tempo contínuo de estado finito - em vez de apenas pegar a matriz obtida pelo método Tauchen e tornando-o contínuo. Mas pessoalmente não sei qual é o melhor caminho!
** Explicação (embora eu esteja enferrujado): tem um autovalor exclusivo de Perron-Frobenius de 1 e, como é estocástico, o autovetor correto desse autovalor é o vetor unitário . Este ainda é o autovetor correto, agora com um autovalor de 0, quando assumimos o logaritmo da matriz.A eAAe