8 votos

Matriz de transición: Tiempo discreto -> Tiempo continuo

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

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 en 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 de las probabilidades de Poisson usando

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

Pero no logro ver 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 $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$ transita al estado $j$, y $B_{ii} \leq 0$ da la tasa a la cual el estado $i$ transita a todos los demás estados. Cada fila de $B$ suma 0.

Luego, 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 de 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 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 ningún $B$ de Poisson correspondiente a $A$. Es un lío.

Afortunadamente, hay una situación donde la vida es relativamente simple, y casi seguramente incluye tu caso propio: cuando todos los autovalores de $A$ son reales positivos distintos. En este caso, solo hay 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 autovalores, obteniendo $B=V\Omega V^{-1}$, donde $\omega_{ii} = \log(\sigma_{ii})$. De hecho, no necesitas hacer esto tú mismo: si utilizas el comando $\text{logm}(A)$ en Matlab (probablemente también en Python), te dará precisamente este $B$.

Dado este $B$, todo lo que tienes que hacer es verificar que en realidad es una matriz de Poisson. El primer requisito, que las filas sumen a cero, se satisface 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 para ti comprobarlo.

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 comprobar fácilmente que las filas suman cero y tienen los signos correctos, así que esta es nuestra respuesta.

El caso con autovalores 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 autovalores negativos o complejos), presumiblemente incluyendo tu AR(1) discretizado.

Más generalmente, el comando $\text{logm}$ en Matlab nos dará el logaritmo de matriz principal, un análogo del logaritmo de escalar principal que hace que todos los autovalores tengan parte imaginaria entre $-\pi$ y $\pi$. El problema es que este no es necesariamente el logaritmo que queremos, y al mirarlo podríamos pasar por alto un $B$ de Poisson que genere $A$. (Por eso el caso de los autovalores positivos, donde no tuvimos que preocuparnos por esto, fue tan agradable.) Aún así, 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 llama el problema de incrustabilidad: ve un panorama general y referencias en este excelente artículo de revisión por Davies. No soy un experto en los 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 maneras mejores y más directas de convertir un AR(1) ajustado de forma discreta en un proceso continuo de tiempo finito - en lugar de simplemente tomar la matriz obtenida mediante el método de Tauchen y hacerla continua. ¡Pero personalmente no sé cuál es esa mejor manera!


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

2voto

David Mohundro Puntos 5158

No puedo comentar, o preguntaría primero por más especificaciones. Si estás tratando de convertir un proceso AR(1) ajustado contra una serie de tiempo discreta en un proceso de tiempo 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 sustituir un 0 por el segundo coeficiente para obtener tu conversión.

Si estás tratando de convertir una Cadena de Markov de tiempo discreto a tiempo continuo, será más complicado y tendré que leer más antes de poder ofrecer más ayuda. :) Mientras tanto, aquí tienes un buen material de lectura 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