仮定であるここで、ポアソン遷移率のマトリックスのためにの状態率表す状態への遷移を、およびレートを与えますここで、状態他のすべての状態に遷移します。各行の合計は0になります。Bn×nBij≥0i≠jijBii≤0iB
次に、時間での確率分布を示す場合、定義により、ODEは
なります。この種のODEの解は次のようになります:、である行列の指数の。したがって、後でにマルコフ遷移行列を生成させたい場合は、が必要です。p(t)tB
p˙(t)=Bp(t)
p(t)=eBtp(0)eBtBtBAt=1eB=A
原則として、を取得するには、行列の対数をとって、行列の指数を反転させる必要があります。問題は、各行列に多くの行列の対数があることです。1次元の複素空間の対数には無限に多くの分岐があり、これは次元の空間の行列について話しているときに複合されます。これらの対数のほとんどは、満足なポアソン遷移行列ではありません。おそらく、それらは実数ではないか、エントリに正しい符号がありません。ただし、複数のポアソンが存在しない場合と同様に、マルコフ対応する複数のポアソンが存在する場合もあります。BAnBAB対応します。乱雑です。A
幸いなことに、人生が比較的単純な状況があり、ほぼ確実にあなた自身のケースが含まれます:すべての固有値が正で、異なる実数である場合A。この場合、実数になる対数は1つだけで、計算は簡単です。行列をとして対角化し、固有値の実数の対数を取り、取得します。、ここで。実際、これを自分で行う必要はありませんコマンド(おそらくPythonも)を使用すると、正確にこのが得られます。AA=VΣV−1B=VΩV−1ωii=log(σii)logm(A)B
このとして、あなたがしなければならないことは、それが実際にポアソン行列であることを確認することだけです。の構築により、すべての行の合計がゼロになるという最初の要件は自動的に満たされます。**対角要素が負で非対角要素が正であるという2番目の要件は、常に成立するとは限りません( )、しかしそれはあなたがチェックするのは簡単です。BB
この動作を確認ために、離散化されたAR(1)に似た3ステートマルコフプロセスのについて考えます。
次に、をMatlabに入力すると、I get
これは確かに有効なポアソン遷移行列です。行の合計がゼロになり、正しい符号が付けられます。これが私たちの答えです。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⎞⎠⎟
正数の固有値の場合はかなり重要です。これは、マルコフチェーン(負または複素数の固有値を必要とする)にある種の振動動作がなく、おそらく離散化されたAR(1)を含むすべてのケースに及ぶためです。
より一般的には、 Matlabの上のコマンドは、私たちに与える主要マトリックス対数、間虚数部を有するように、すべての固有値をとる主スカラ対数のアナログ及び。問題は、これが必ずしも必要な対数ではないことです。これを見ると、生成するポアソンを見逃す可能性があります。(それが、このことを心配する必要がなかった正の固有値のケースがとても良かった理由です。)それでも、これらの他のケースでさえ、それが機能するかどうかを試してみるのに害はありません。logm−ππBA
ちなみに、マルコフ行列を生成するがあるかどうかを確認するこの問題は、広く研究されています。これは埋め込み可能性の問題と呼ばれます。Davies によるこの優れた調査記事の概要と参照を参照してください。ただし、私は問題の技術的な側面の専門家ではありません。この答えは、私自身のハッキーな経験と直感に基づいています。BA
私はeckscのコメントを二番目にして、Tauchen法で得られた行列を単に取得するのではなく、離散的に近似されたAR(1)を有限状態の連続時間プロセスに変換するより直接的な方法があるかもしれないと述べて締めくくる義務を感じます継続的にする。しかし、私はそのより良い方法が何であるかを個人的に知りません!
**説明(私は錆びていますが):の固有のペロンフロベニウス固有値は1ですは確率的であるため、この固有値の右固有ベクトルは単位ベクトルです。これは、行列の対数を取るときに、固有値0の正しい固有ベクトルです。AAe