Matriz de transição: discreto -> tempo contínuo

8

Eu tenho o código correspondente a Tauchen (1986) (equivalente a Python disso ), que gera uma aproximação discreta de um processo AR (1) de tempo discreto.

Por exemplo, se você configurar o tamanho da grade como 3, ele fornecerá um vetor de produtividades

[A_1, A_2, A_3,]

e uma matriz de probabilidades de transição

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

Onde linha i, a coluna jfornece a probabilidade de transição de ipara je satisfaz que a soma de cada linha seja aproximadamente uma.

Eu estou querendo saber como posso transformar isso em um equivalente de tempo contínuo da matriz de transição; um conjunto de probabilidades de poisson controlando as taxas de fluxo entre os estados.

Tudo o que me lembro a esse respeito é que podemos obter a aproximação linear das probabilidades de Poisson usando

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

Mas não vejo como isso me ajuda a transformar essa matriz anterior em λ s ... Estou ansioso por qualquer sugestão.

FooBar
fonte

Respostas:

6

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 j0 i j i j B i i0 i BBn×nBij0ijijBii0iB

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 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ΣV1B=VΩV1ω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.40.10.20.60.20.10.40.5)
B=logm(A)
B=(0.860.800.060.400.800.400.060.800.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

nominalmente rígido
fonte
2

Não posso comentar, ou pediria mais detalhes primeiro. Se você está tentando converter um processo AR (1) ajustado em uma série temporal discreta em um processo contínuo, encontrei um recurso relevante aqui na página 4.

Os cálculos são fornecidos para estimar os coeficientes de um processo CAR (2) a partir de um processo AR (2), mas é claro que você pode substituir um 0 pelo segundo coeficiente para obter sua conversão.

Se você estiver tentando converter um tempo discreto da cadeia de Markov em tempo contínuo, será mais complicado e precisarei ler mais antes de poder dar mais ajuda. :) Nesse meio tempo, aqui está um bom material de leitura que encontrei sobre cadeias Markov de tempo contínuo.

ecksc
fonte