Macierz przejścia: dyskretna -> czas ciągły

8

Muszę kod odpowiadający Tauchen (1986) (Python odpowiednik tego ), które wytwarza dyskretne aproksymację (1) w czasie procesu dyskretnych AR.

Na przykład, jeśli ustawisz rozmiar siatki na 3, daje to wektor wydajności

[A_1, A_2, A_3,]

oraz macierz prawdopodobieństw przejścia

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

Gdzie wiersz i, kolumna jdaje prawdopodobieństwo przejścia z ido j, i upewnia się, że suma każdego wiersza wynosi około jednego.

Zastanawiam się, jak mogę przekształcić to w ekwiwalent ciągłego czasu macierzy przejścia; zbiór prawdopodobieństw Poissona kontrolujących prędkości przepływu między stanami.

Pamiętam tylko w tym względzie, że możemy uzyskać liniowe przybliżenie prawdopodobieństw poissona

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

Ale nie widzę, jak to pomaga mi przekształcić dawną matrycę w λ ... Nie mogę się doczekać żadnych sugestii.

FooBar
źródło

Odpowiedzi:

5

Załóżmy, że jest macierzą szybkości przejścia Poissona, gdzie dla oznacza szybkość, z jaką stan przechodzi do stanu , a daje szybkość w którym stanie przechodzi do wszystkich innych stanów. Każdy wiersz sumuje się do 0.Bn×nBij0ijijBii0iB

Jeśli więc oznacza rozkład prawdopodobieństwa w czasie , z definicji mamy ODE Wiemy, jak wygląda rozwiązanie tego rodzaju ODE: , gdzie jest wykładniczy matrycy z . Tak więc, jeśli chcemy do wytworzenia Markowa przejścia matrycy po , to trzeba mieć .p(t)tB

p˙(t)=Bp(t)
p(t)=eBtp(0)eBtBtBAt=1eB=A

W zasadzie, aby dostać , musimy odwrócić macierz wykładniczą, biorąc logarytm macierzy z . Problem polega na tym, że każda macierz ma wiele logarytmów macierzowych - logarytm w jednowymiarowej przestrzeni złożonej ma nieskończenie wiele rozgałęzień, a to się komplikuje, gdy mówimy o macierzach w przestrzeni wymiarowej. Większość tych logarytmów nie będzie zadowalającymi macierzami przejściowymi Poissona: być może nie będą one prawdziwe, lub wpisy nie będą miały odpowiednich znaków. Możliwe jest jednak, że będzie ich więcej niż jeden: w niektórych przypadkach istnieje więcej niż jeden Poisson odpowiadający Markovowi , tak jak w niektórych przypadkach nie ma PoissonaBAnBABodpowiadającej . To niechlujne.A

Na szczęście istnieje sytuacja, w której życie jest stosunkowo proste i prawie na pewno obejmuje twój własny przypadek: gdy wszystkie wartości własne są dodatnie, wyraźne realeA . W tym przypadku istnieje tylko jeden logarytm który będzie prawdziwy i łatwo go obliczyć: po prostu przekątna macierzy jako i weź prawdziwy logarytm wartości własnych, otrzymując , gdzie . Rzeczywiście, nie trzeba tego robić samemu: w przypadku korzystania z poleceń w Matlab (prawdopodobnie zbyt Pythona), to daje dokładnie ten .AA=VΣV1B=VΩV1ωii=log(σii)logm(A)B

Biorąc pod uwagę to , wszystko, co musisz zrobić, to zweryfikować, czy faktycznie jest to macierz Poissona. Pierwszy wymóg, że wszystkie rzędy sumują się do zera, jest spełniony automatycznie ze względu na konstrukcję ** Drugi warunek, że elementy ukośne są ujemne, a elementy nie przekątne są dodatnie, nie zawsze obowiązuje (myślę, że ), ale łatwo to sprawdzić.BB

Aby zobaczyć to w działaniu, rozważę dla 3-stanowego procesu Markowa, który przypomina dyskretny AR (1). Teraz, jeśli w Matlabie, I get To jest rzeczywiście poprawna macierz przejścia Poissona, ponieważ możemy łatwo sprawdzić, czy rzędy sumują się do zera i mają odpowiednie znaki - to nasza odpowiedź.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)

Przypadek z dodatnimi wartościami własnymi jest dość ważny, ponieważ obejmuje wszystkie przypadki, w których nie występuje jakieś zachowanie oscylacyjne w łańcuchu Markowa (które wymagałoby ujemnych lub złożonych wartości własnych), prawdopodobnie obejmując dyskrecję AR (1).

Mówiąc bardziej ogólnie, polecenie w Matlabie da nam główny logarytm macierzowy, analog głównego logarytmu skalarnego, który bierze wszystkie wartości własne, aby mieć wyimaginowaną część między a . Problemem jest to, że nie jest to koniecznie logarytm chcemy, i patrząc na to możemy pominąć Poissona , która generuje . (Właśnie dlatego pozytywny przypadek wartości własnej, w którym nie musieliśmy się o to martwić, był taki miły.) Mimo to, nawet w tych innych przypadkach nie zaszkodzi spróbować sprawdzić, czy to działa.logmππBA

Nawiasem mówiąc, ten problem polegający na sprawdzeniu, czy istnieje która generuje macierz Markowa, został gruntownie zbadany. Nazywa się to problemem związanym z osadzaniem : zobacz przegląd i odniesienia w tym doskonałym artykule ankiety Daviesa . Nie jestem jednak ekspertem w technicznych aspektach problemu; ta odpowiedź opiera się bardziej na moim hackerskim doświadczeniu i intuicji.BA

Czuję się zobowiązany do zamknięcia przez przekazanie komentarza ecksc i stwierdzenie, że mogą istnieć lepsze, bardziej bezpośrednie sposoby przekształcenia dyskretnie dopasowanego AR (1) w proces ciągłego czasu skończonego stanu - zamiast po prostu wziąć matrycę uzyskaną metodą Tauchen i czyniąc to ciągłym. Ale ja osobiście nie wiem, co to jest lepszy sposób!


** Wyjaśnienie (chociaż jestem zardzewiały): ma unikalną wartość własną Perron-Frobenius wynoszącą 1, a ponieważ jest stochastyczny, prawym wektorem własnym tej wartości własnej jest wektor jednostkowy . Jest to nadal właściwy wektor własny, teraz z wartością własną 0, gdy weźmiemy logarytm macierzowy.AAe

nominalnie sztywny
źródło
2

Nie mogę komentować, bo najpierw chciałbym poprosić o więcej szczegółów. Jeśli próbujesz przekonwertować proces AR (1) dopasowany do dyskretnych szeregów czasowych na proces ciągły, znalazłem odpowiedni zasób tutaj na stronie 4.

Obliczenia służą do oszacowania współczynników procesu CAR (2) z procesu AR (2), ale oczywiście można zastąpić drugim współczynnikiem 0, aby uzyskać konwersję.

Jeśli próbujesz przekonwertować dyskretny czas Łańcucha Markowa na czas ciągły, będzie to bardziej skomplikowane i będę musiał zrobić więcej czytania, zanim będę mógł udzielić dalszej pomocy. :) Tymczasem oto kilka dobrych lektur, które znalazłem na temat ciągłego czasu Łańcuchów Markowa.

ecksc
źródło