4 votos

Filtro de partículas (Monte Carlo secuencial) para un modelo jerárquico no gaussiano

Tengo lo siguiente, que estoy intentando modelar con un filtro de partículas.

\begin{align*} y_{i,t}&\sim\mathrm{Poisson}\left(\lambda_{i,j,t}\right)\\ y_{j,t}&\sim\mathrm{Poisson}\left(\mu_{i,j,t}\right) \end{align*}

\begin{align*} \lambda_{i,j,t}&=\delta_1\exp\left(\alpha_{i,t}-\alpha_{j,t}\right)\\ \mu_{i,j,t}&=\delta_2\exp\left(\alpha_{j,t}-\alpha_{i,t}\right) \end{align*}

\begin{align*} \alpha_{i,t}&\sim\mathrm{N}\left(\alpha_{i,t-1},\sigma_{\alpha}^2\right)\\ \alpha_{j,t}&\sim\mathrm{N}\left(\alpha_{j,t-1},\sigma_{\alpha}^2\right)\\ \end{align*}

Dónde:

t es un índice de tiempo, $t=1,\ldots,5320$ ;

$i,j\in\left\lbrace 1,\ldots,40\right\rbrace$ , $i\ne j$ (así que 40 estados en total pero sólo 2 se actualizan en cada momento $t$ );

el $\alpha$ estados son inobservables;

y el $y$ se observan para cada $t$ .

Para simplificar, supongamos que los valores de $\delta_1$ , $\delta_2$ y $\sigma_{\alpha}^2$ son conocidos y constantes.

Mi idea era tener un conjunto de partículas para cada estado. Luego actualizarlas (los 2 conjuntos implicados en el tiempo $t$ ) con ruido gaussiano, utilizando las ecuaciones de los estados. Dados estos valores, se pueden calcular las lambdas y luego las distribuciones condicionales para $y_{i,t}$ y $y_{j,t}$ dados los estados, son conocidos. Sin embargo, al calcular los pesos de importancia a partir de las distribuciones condicionales $y_{i,t}|\alpha_{i,t},\alpha_{j,t}$ y $y_{j,t}|\alpha_{j,t},\alpha_{i,t}$ , se obtienen dos conjuntos de pesos de importancia de \begin{align*} y_{i,t}&|(\alpha_{i,t}-\alpha_{j,t})\\ y_{j,t}&|(\alpha_{j,t}-\alpha_{i,t}). \end{align*}

Mi pregunta es cómo entonces volver a muestrear las partículas para $\alpha_{i,t}$ y $\alpha_{j,t}$ o posiblemente cómo puedo hacer esto de manera diferente para superar el problema. Soy bastante nuevo en los métodos secuenciales de Monte Carlo, por lo que cualquier otro consejo o sugerencia para abordar el problema sería apreciado.

1voto

Diego Allen Puntos 247

Te voy a dar dos referencias de posible interés y un método alternativo a tu problema (no trivial).

Referencias:

  1. Análisis de modelos lineales mixtos generalizados mediante muestreo Monte Carlo secuencial

  2. SMCTC : Monte Carlo secuencial en C++

Una alternativa para el muestreo de su modelo consiste en utilizar un muestreador Metropolis dentro de Gibbs. Hay un paquete de R muy bueno que implementa una versión adaptativa de este método que no requiere afinar los parámetros: spBayes . Lo único que tienes que implementar es la posterior conjunta (parámetros + efectos aleatorios), que debería ser relativamente fácil. Yo lo he probado y funciona muy bien. Aunque puede ser lento en dimensiones altas.

1voto

Taylor Puntos 692

Su modelo no tiene sentido. Un modelo consiste en una distribución de transición de estado COMPLETA, y una distribución de observación COMPLETA (no puedes ignorar parte del vector de observación en ningún momento). Además, no estás diciendo cómo $i$ y $j$ se eligen en cada momento; asumo que es de forma no aleatoria. También es posible que tenga subíndices superfluos para $\mu$ y $\lambda$ .

Su distribución de transición completa para $(\alpha_{1,t},\ldots, \alpha_{40,t})'$ dado $(\alpha_{1,t-1},\ldots, \alpha_{40,t-1})'$ podría ser

$$ p(\mathbf{\alpha_{t}}|\mathbf{\alpha_{t-1}}) = \mathcal{N}(\alpha_{i,t};\alpha_{i,t-1},\sigma^2_a)\mathcal{N}(\alpha_{j,t};\alpha_{j,t-1},\sigma^2_a)\prod_{k\neq i,j}1(\alpha_{k,t} = \alpha_{k,t-1}), $$ asumiendo WLOG que $i < j$ . No actualizar las partes que no cambian es lo mismo que actualizar con respecto a esa distribución.

Entonces necesitas una densidad de observación completa. No tiene sentido ignorar todos los elementos de las observaciones excepto dos. Podría ser algo así: $$ p(\mathbf{y_{t}}|\mathbf{\alpha_{t}}) = \text{Poisson}(y_{i,t};\lambda_{i,t})\text{Poisson}(y_{j,t};\mu_{j,t}) \prod_{k\neq i,j}\text{(missing stuff here)}. $$

Una vez que tienes estas dos cosas completamente definidas, cada partícula tiene un peso, y el remuestreo se hace entonces de la misma manera que siempre. No puedo esbozar un algoritmo completo porque nos has dicho ciertos detalles que es necesario conocer sobre cómo estás llevando a cabo todo esto. Pero sospecho que estás teniendo problemas sobre cómo implementar esto porque no entiendes completamente lo que es un modelo de espacio de estados.

Edición: no me di cuenta de que esto se preguntó hace tanto tiempo...

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X