8 votos

Matriz de transición: Discreto -> Tiempo Continuo

Tengo el código correspondiente a Tauchen (1986) (equivalente de Python a este), el cual genera una aproximación discreta de un proceso AR(1) de tiempo discreto.

Por ejemplo, si configuras el tamaño de la cuadrícula en 3, te da un vector de productividades

[A_1, A_2, A_3,]

y una matriz de probabilidades de transición

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

Donde la fila i, columna j te da la probabilidad de transición de i a j, y satisface que la suma de cada fila es aproximadamente uno.

Me pregunto cómo puedo transformar esto a una matriz de transición equivalente de tiempo continuo; un conjunto de probabilidades de poisson que controlan las tasas de flujo entre los estados.

Todo lo que recuerdo al respecto es que podemos obtener la aproximación lineal a las probabilidades de poisson usando

$$Prob(i \to j) = \lim_{\Delta\to0} \exp(-\lambda_{ij}\Delta) \approx 1-\lambda_{ij}\Delta $$

Pero no veo cómo eso me ayuda a transformar esa matriz anterior a los $\lambda$s... Estoy esperando cualquier sugerencia.

6voto

Jason Baker Puntos 494

Supongamos que $B$ es una matriz de $n\times n$ de tasas de transición de Poisson, donde $B_{ij}\geq 0$ para $i\neq j$ denota la tasa a la cual el estado $i$ transiciona al estado $j$, y $B_{ii}\leq 0$ da la tasa a la cual el estado $i$ transiciona a todos los demás estados. Cada fila de $B$ suma 0.

Entonces, si $p(t)$ denota la distribución de probabilidad en el tiempo $t$, por definición de $B$ tenemos la EDO $$\dot{p}(t) = Bp(t)$$ Sabemos cómo se ve la solución a este tipo de EDO: $p(t)=e^{Bt}p(0)$, donde $e^{Bt}$ es la exponencial de matriz de $Bt$. Entonces, si queremos que $B$ genere la matriz de transición de Markov $A$ después de $t=1$, necesitamos tener $e^B=A$.

En principio, para obtener $B$, necesitamos invertir la exponencial de matriz, tomando el logaritmo de matriz de $A$. El problema es que cada matriz tiene muchos logaritmos de matriz: el logaritmo en el espacio complejo unidimensional tiene infinitas ramas, y esto se complica cuando hablamos de matrices en un espacio $n$-dimensional. La mayoría de estos logaritmos no serán matrices de transición de Poisson satisfactorias: tal vez no serán reales, o las entradas no tendrán los signos correctos. Sin embargo, es posible que más de uno de ellos lo sea: en algunos casos hay más de un $B$ de Poisson correspondiente a un $A$ de Markov, al igual que en algunos casos no hay un $B$ de Poisson correspondiente a $A$. Es complicado.

Afortunadamente, existe una situación en la que la vida es relativamente simple, y casi con seguridad incluye tu caso: cuando todos los valores propios de $A$ son reales positivos distintos. En este caso, hay solo un logaritmo de $A$ que será real, y es fácil de calcular: simplemente diagonalizas la matriz como $A=V\Sigma V^{-1}$ y tomas el logaritmo real de los valores propios, obteniendo $B=V\Omega V^{-1}$, donde $\omega_{ii} = \log(\sigma_{ii})$. De hecho, no necesitas hacer esto tú mismo: si usas el comando $\text{logm}(A)$ en Matlab (presumiblemente también en Python), te dará precisamente este $B$.

Dado este $B$, todo lo que tienes que hacer es verificar si en realidad es una matriz de Poisson. El primer requisito, que las filas sumen cero, se cumple automáticamente debido a la construcción de $B$.** El segundo requisito, que los elementos diagonales sean negativos y los elementos fuera de la diagonal sean positivos, no siempre se cumple (creo), pero es fácil de verificar.

Para ver esto en acción, consideraré un $A$ para un proceso de Markov de 3 estados que se asemeja a un AR(1) discretizado. $$A = \begin{pmatrix}0.5 & 0.4 & 0.1 \\ 0.2 & 0.6 & 0.2 \\ 0.1 & 0.4 & 0.5\end{pmatrix}$$ Ahora, si escribo $B=\text{logm}(A)$ en Matlab, obtengo $$B = \begin{pmatrix}-0.86 & 0.80 & 0.06 \\ 0.40 & -0.80 & 0.40 \\ 0.06 & 0.80 & -0.86\end{pmatrix}$$ Esto es de hecho una matriz de transición de Poisson válida, ya que podemos verificar fácilmente que las filas suman cero y tienen los signos correctos - así que esta es nuestra respuesta.

El caso con valores propios positivos es bastante importante, ya que abarca todos los casos en los que no hay algún tipo de comportamiento oscilatorio en la cadena de Markov (que requeriría valores propios negativos o complejos), presumiblemente incluyendo tu AR(1) discretizado.

Más en general, el comando $\text{logm}$ en Matlab nos dará el logaritmo de matriz principal, un análogo del logaritmo escalar principal que hace que todos los valores propios tengan una parte imaginaria entre $-\pi$ y $\pi$. El problema es que este no es necesariamente el logaritmo que queremos, y al verlo podríamos pasar por alto un $B$ de Poisson que sí genere $A. (Por eso el caso de valores propios positivos, donde no tuvimos que preocuparnos por esto, fue tan agradable.) Sin embargo, incluso en estos otros casos no está de más intentar y ver si funciona.

Por cierto, este problema de ver si hay un $B$ que genere alguna matriz de Markov $A$ ha sido estudiado extensamente. Se le llama el problema de embebibilidad: consulta un resumen y referencias en este excelente artículo de revisión de Davies. No soy un experto en aspectos técnicos del problema, sin embargo; esta respuesta se basa más en mi propia experiencia chapucera e intuición.

Me siento obligado a cerrar secundando el comentario de ecksc y diciendo que podría haber mejores y más directas formas de convertir un AR(1) ajustado de forma discreta en un proceso continuo de tiempo finito, en lugar de simplemente tomar la matriz obtenida a través del método Tauchen y hacerla continua. ¡Pero personalmente no sé cuál es esa mejor manera!


**Explicación (aunque estoy algo oxidado): $A$ tiene un valor propio de Perron-Frobenius único de 1, y como $A$ es estocástica el autovector derecho de este valor propio es el vector unitario $e$. Este sigue siendo el autovector derecho, ahora con un valor propio de 0, cuando tomamos el logaritmo de matriz.

2voto

David Mohundro Puntos 5158

No puedo comentar, o pediría más detalles primero. Si está intentando convertir un proceso AR(1) ajustado contra una serie de tiempo discreta en un proceso temporal continuo, encontré un recurso relevante aquí en la página 4.

Los cálculos se proporcionan para estimar los coeficientes de un proceso CAR(2) a partir de un proceso AR(2), pero por supuesto puedes substituir un 0 por el segundo coeficiente para hacer tu conversión.

Si está intentando convertir una Cadena de Markov de tiempo discreto a tiempo continuo, será más complicado y tendré que leer más antes de poder dar más ayuda. :) Mientras tanto, aquí tienes material de lectura interesante que encontré sobre Cadenas de Markov de tiempo continuo.

Finanhelp.com

FinanHelp es una comunidad para personas con conocimientos de economía y finanzas, o quiere aprender. Puedes hacer tus propias preguntas o resolver las de los demás.

Powered by:

X