Estoy intentando implementar un algoritmo EM para el siguiente modelo de análisis factorial;
$$W_j = \mu+B a_j+e_j \quad\text{for}\quad j=1,\ldots,n$$
donde $W_j$ es un vector aleatorio p-dimensional, $a_j$ es un vector q-dimensional de variables latentes y $B$ es una matriz pxq de parámetros.
Como resultado de otros supuestos utilizados para el modelo, sé que $W_j\sim N(\mu, BB'+D)$ donde $D$ es la matriz de covarianza varianza de los términos de error $e_j$ , $D$ = diag( $\sigma_1^2$ , $\sigma_2^2$ ,..., $\sigma_p^2$ ).
Para que el algoritmo EM funcione, estoy haciendo iteraciones de cúpula que implican la estimación de $B$ y $D$ matrices y durante estas iteraciones estoy calculando la inversa de $BB'+D$ en cada iteración utilizando nuevas estimaciones de $B$ y $D$ . Desafortunadamente, durante el curso de las iteraciones, $BB'+D$ pierde su definición positiva (pero no debería porque es una matriz de varianza-covarianza) y esta situación arruina la convergencia del algoritmo. Mis preguntas son:
-
¿Demuestra esta situación que hay algo mal en mi algoritmo, ya que la probabilidad debería aumentar en cada paso de EM?
-
¿Cuáles son las formas prácticas de hacer que una matriz sea definida positiva?
Edición: Estoy calculando la inversa utilizando un lema de inversión de matrices que establece que:
$$(BB'+D)^{-1}=D^{-1}-D^{-1}B (I_q+B'D^{-1}B)^{-1} B'D^{-1}$$
donde el lado derecho implica sólo los inversos de $q\times q$ matrices.