Estoy intentando implementar un algoritmo EM para el siguiente modelo de análisis factorial;
donde es un vector aleatorio p-dimensional, es un vector q-dimensional de variables latentes y es una matriz pxq de parámetros.
Como resultado de otros supuestos utilizados para el modelo, sé que donde es la matriz de covarianza varianza de los términos de error , = diag( , ,..., ).
Para que el algoritmo EM funcione, estoy haciendo iteraciones de cúpula que implican la estimación de y matrices y durante estas iteraciones estoy calculando la inversa de en cada iteración utilizando nuevas estimaciones de y . Desafortunadamente, durante el curso de las iteraciones, 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:
donde el lado derecho implica sólo los inversos de matrices.