Opened 14 years ago
Closed 14 years ago
#1283 closed defect (fixed)
Estimate y mms difieren en los residuos
Reported by: | Jorge | Owned by: | Víctor de Buen Remiro |
---|---|---|---|
Priority: | highest | Milestone: | Mantainance |
Component: | Math | Version: | 2.0.1 |
Severity: | critical | Keywords: | |
Cc: | palmagro@…, libarra@… |
Description
Véase el ticket #768 de MMS.
Change History (3)
comment:1 Changed 14 years ago by
Status: | new → accepted |
---|
comment:2 Changed 14 years ago by
Cc: | palmagro@… libarra@… added |
---|---|
Keywords: | palmagro@bayesinf.com libarra@bayesforecast.com removed |
Ya he encontrado y resuelto el problema o mejor dicho problemas. He probado a usar el método de Almagro al final pero seguía pasando lo mismo.
- Al final de la estimación se rehace el cálculo del jacobiano numérico de la parte ARMA con mayor exactitud para dar resultados más robustos en las covarianzas y derivados. Esto ocasiona perturbaciones que normalmente son inapreciables pero que en un modelo con raices casi unitarias de orden tan largo se tornan gigantescas. Si se alarga suficiente acaba por converger pero en este caso sería tras cientos de miles de iteraciones. Sólo hay que restaurar la evaluación al punto estimado tras el cálculo del jacobiano pero sn ose hacía correctamente.
- Ya no es necesario resolver la ecucaión en diferencias al final, simplemente se convierte a serie el vector de residuos internos.
- El método de Levinson, que no necesita de los valores iniciales, sí que permite calcularlos, y de hecho lo hacía y daba resultados exactos para el ruido ARMA, pero no así para los residuos. En otros modelos que yo había probado no se apreciaban diferencias importantes y lo achaqué a error de redondeo pero en este monstruo se aprecia notablemente y me ha permitido perseguir el error que ya ha sido subsanado.
En breves subiré los cambios y tras pasar los tests subiré las versiones binarias de la 2.0.1 y la 2.0.2
comment:3 Changed 14 years ago by
Resolution: | → fixed |
---|---|
Status: | accepted → closed |
Note: See
TracTickets for help on using
tickets.
Lo he estado mirando y no hay problema en usar los resultados de MMS.
Estimate internamente usa el método de Levinson que no utiliza los valores iniciales para nada, sino que resuelve las ecuaciones de Yule-Walker asociadas al modelo ARMA que dan lugar a un sistema de Toeplitz que se resuelve de forma muy eficaz. He comprobado que genera los mismos residuos que el método de Almagro que sí que calcula la esperanza condicionada de los valores iniciales y que resulta más lento en general.
El error de Estimate está al final del todo, después de estimar y calcular estadísticos y todo eso, al rellenar la serie de residuos que se entrega al usuario, la cual se genera desde el principio de los tiempos resolviendo la ecuación en diferencias sin más; y ahí hay algo que falla porque no le llegan los valores iniciales correctos. O se traspapelan por el camino o se calculan mal o lo que sea, aún no he podido comprobarlo porque son cosas duras de depurar en C++ y es un código bastante viejo.
Mañana por la mañana veré cómo solucionarlo con Levinson pero a las bravas se puede arreglar llamando al final al método de Almagro sin más consideraciones, porque para una evaluación nada más no importa demasiado el tiempo de cálculo. Durante la estimación sí que se pueden hacer cientos o miles de evaluaciones por lo que sí es muy importante usar el método más rápido y que como digo da los mismos resultados.