#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 12 years ago by
Note: See
TracTickets for help on using
tickets.
![(please configure the [header_logo] section in trac.ini)](/mms/chrome/site/logomms.png)
Este tique intenta recoger las necesidades expuestas en los tiques #1017, #1018 y #1020.