#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
comment:2 Changed 13 years ago by
comment:3 Changed 13 years ago by
comment:4 Changed 13 years ago by
Resolution: | → fixed |
---|---|
Status: | new → closed |
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
comment:6 Changed 11 years ago by
Note: See
TracTickets for help on using
tickets.
Este tique intenta recoger las necesidades expuestas en los tiques #1017, #1018 y #1020.