#1562 closed defect (fixed)
BSR: Uso de la matriz COV
Reported by: | Pedro Gea | Owned by: | Víctor de Buen Remiro |
---|---|---|---|
Priority: | highest | Milestone: | Mantainance |
Component: | Kernel | Version: | 3.1 |
Severity: | critical | Keywords: | |
Cc: |
Description
Al hacer algunas pruebas de uso de la matriz de covarianzas con BSR (véanse #757 y #1231) se aprecia un comportamiento inesperado en la interpretación de esa matriz.
Revisando el código de BSR se observa que la matriz L
obtenida en: tol_bvmat_bsr_impl.h (línea 930) no cumple la condición COV = L'·L
esperada.
Change History (5)
comment:1 Changed 13 years ago by
comment:2 Changed 13 years ago by
Efectivamente parece que se ha colado el modo ECFO_XtX cuando debería ser ECFO_X.
Lo que está haciendo es descomponer cov'*cov
lo cual no tiene ningún sentido.
Cuando cov
es la identidad el resultado es el mismo pero no en otro caso.
En TOL se uede ver cómo esto sí que funciona bien:
VMatrix cov = Mat2VMat(Matrix Row(0.01,0)<<Row(0,0.04)); VMatrix Lf = CholeskiFactor(cov, "X"); VMatrix L = Convert(Lf,"Cholmod.R.Sparse"); VMatrix cov_ = L*Tra(L); Real quality = 1-VMatMax(Abs(cov-cov_));
comment:5 Changed 13 years ago by
En ese fichero estaban intercambiados los papeles de los flags ECFO_XtX y ECFO_X
He comprobado que en el resto de ficheros C++ estaban bien utilizados.
En principio no debería haber consecuencias para los modelos estimados hasta ahora con MMS pues siempre se tomaba la identidad.
El comportamiento del código con CholeskiFactor utilizado que se considera inesperado puede reproducirse así: