close Warning: Can't synchronize with repository "(default)" (/var/svn/mms does not appear to be a Subversion repository.). Look in the Trac log for more information.

Opened 13 years ago

Closed 13 years ago

Last modified 11 years ago

#1024 closed enhancement (fixed)

Ortogonalización de modelos en MMS

Reported by: Pedro Gea Owned by: Pedro Gea
Priority: critical Milestone: Development 1A
Component: General Keywords:
Cc:

Description

Se propone crear un mecanismo de ortogonalización de un modelo creando un nuevo objeto MMS reescrito de acuerdo a las variables
seleccionadas y la matriz o método de ortogonalización indicado.

Este mecanismo tendría que tener en cuenta (y reescribir correspondientemente) los priors, restricciones, jerarquías o combinaciones que establecieses sobre los modelos desortogonalizados, de modo que podría establecerse la información a priori de manera natural.

Véase el tique relacionado #750

Change History (7)

comment:1 Changed 13 years ago by Pedro Gea

Este tique intenta recoger las necesidades expuestas en los tiques #1017, #1018 y #1020.

comment:2 Changed 13 years ago by Pedro Gea

(In [3232]) Closes #1025
Refs #1024
Se incluyen los nuevos métodos solicitados.

comment:3 Changed 13 years ago by Pedro Gea

(In [3237]) Refs #1024, #750
Se introduce el módulo de funciones (MMS::Ortho) para facilitar la ortogonalización y desortogonalización de modelos de MMS.

comment:4 Changed 13 years ago by Pedro Gea

Resolution: fixed
Status: newclosed

Se incorporan algunas líneas de ejemplo del uso del nuevo bloque de funciones MMS::Ortho:

// Se carga el modelo natural (sin ortogonalizar)
MMS::@Model model0 = MMS::Container::LoadFile(...);

Text submodelName = model0::GetSubmodel(1)::GetName(?);

// En el modelo los inputs que se desean ortogonalizar se han catalogado
// usando dos atributos. Por ejemplo:
//   * Text _.orthoBlock: "Bloque_1" (nombre del bloque y matriz asociada)
//   * Real _.orthoOrder: 3 (orden de la variable en el bloque)

// Creamos una estimación con el modelo natural que NO estimaremos:
MMS::@Estimation estimation0 = MMS::Container::CreateEstimation([[
  ...
  MMS::@Model _.model = model0;
  ...
]]);

MMS::@Model model = model0::Duplicate(?);

// Extraemos los bloques para su ortogonalización:
Set blocks = MMS::Ortho::ExtractOrthoBlocks(model, submodelName);

// Para obtener la matriz de ortogonalización se dispone del conjunto de
// series temporales en el intervalo de estimación (4º elemento del bloque)

Set matrices = EvalSet(blocks, Matrix (Set block) {
  // El método de ortogonalización iría aquí
  //   Set series = block::InputSeries;
  //   ...
  //   Matrix matrix = ...
});

// Insertamos las matrices en el modelo:
Set For(1, Card(blocks), Anything (Real i) {
  MMS::Ortho::InsertOrthoMatrix(model, blocks[i]["BlockName"], matrices[i])
});

// Ortogonalizamos el modelo
Set EvalSet(blocks, Real (Set block) {
  Real MMS::Ortho::OrthogonalizeExpTerms(model, submodelName, block::ExpTermNames,
    block::BlockName)
});

// Creamos una estimación con el modelo natural que SÍ estimaremos:
MMS::@Estimation estimation =  MMS::Container::CreateEstimation([[
  ...
  MMS::@Model _.model = model;
  ...
]]);
Real estimation::Execute(?);

// Extraemos los resultados de esta estimación:
Set parameters = MMS::Ortho::ExtractDeorthogonalizedParameters(estimation);
// y los establecemos en la estimación natural:
Real estimation0::SetResults(parameters);

comment:5 Changed 13 years ago by Pedro Gea

(In [3240]) Refs #1024
Se elimina el uso interno innecesario de MMS::

comment:6 Changed 11 years ago by Pedro Gea

(In [4581]) Refs #1024
Se hacen algunas correcciones al método ExtractOrthoBlocks según las indicaciones de jgallardo.

comment:7 Changed 11 years ago by Pedro Gea

(In [4582]) Refs #1024, #1114
También en la rama de desarrollo.

Note: See TracTickets for help on using tickets.