Los paquetes de software parecen preferir trabajar con la parte triangular superior de la factorización de Cholesky, véase por ejemplo cholupdate
. ¿Por qué? Parece que es más natural representar una matriz de covarianza por su factorización Cholesky triangular inferior. Por ejemplo, $L z$ donde $L$ es la factorización Cholesky triangular inferior y $z$ es un vector de normales estándar, le dará una muestra de una distribución normal multivariante. ¿Cuáles son los usos de la parte triangular superior?
Respuestas
¿Demasiados anuncios?Tradicionalmente, y en la mayor parte del "mundo" (literatura), la convención de que el factor de Cholesky es triangular inferior es la más común, es decir, $LL^T$ .
En MATLAB y Octave, entre otros (chol de R), el factor de Cholesky se define como triangular superior, es decir, $R^TR$ . Esta convención fue heredada por MATLAB de LINPACK, porque MATLAB era originalmente un front-end para LINPACK y EISPACK.
LINPACK eligió la entonces (década de 1970) inusual convención de definir el factor de Cholesky como triangular superior, debido a su coherencia con la descomposición QR, en la que R es triangular superior (véase la nota a pie de página en la p. 28 de http://www.netlib.org/utk/people/JackDongarra/PAPERS/Chapter2-LINPACK.pdf ).
El sucesor de LINPACK, LAPACK, no tiene un valor predeterminado para triangular superior frente a triangular inferior, y hace que el usuario especifique qué convención utilizar.
Cualquiera de las dos formas funciona. Tenga en cuenta que $L^T = R$ . Lo importante es utilizar el factor Cholesky de manera acorde con la convención.
En realidad, es una cuestión de preferencias. También $U'z$ te dará la misma muestra de una normal multivariante. ¿Por qué? Te lo dejo como ejercicio.
Para mí es más natural la factorización Cholesky superior $A = U'U$ ya que estoy más acostumbrado al algoritmo `jik', que toma el nombre del orden de los índices en los bucles anidados.
Recuerde que la función implementa un algoritmo. Así que, si codificaron el algoritmo Cholesky `jik', primero devolverán el factor superior ya que este algoritmo devuelve eso. Si se pide explícitamente un factor inferior, entonces harán un cálculo extra (transponiendo el factor superior).
Si prefiere el más bajo, ¡adelante!