#874 closed enhancement (fixed)
Reducción de la dimensión del DataSet al construir un SubModelo
Reported by: | atorre | Owned by: | Pedro Gea |
---|---|---|---|
Priority: | blocker | Milestone: | Development 1B |
Component: | Models | Keywords: | submodel, restricción, dominio, reducción, dimensión |
Cc: |
Description
Hola MMS,
estaría bien poder reducir la dimensión de las variables que tiene un DataSet cuando se define un submodelo a partir de los valores de las variables.
Esta petición tiene más que ver con variables que no son de gramática Series.
Actualmente, sólo de puede reducir la dimensión usando los métodos SetBegin y SetEnd... muy orientados a las series temporales. La petición sería para poder filtrar con valores de las variables, algo así como:
Real SetDomain(
variable1, valor1 ?,
variable2, valor2 ?,
...
variableN, valorN ?
);
Cualquier restricción del dominio se podría definir de esta manera simplemente definiendo variables calculadas.
En estos momentos, si se quiere definir el mismo submodelo para diferentes valores de una variable (por ejemplo, distintos segmentos), hay que definir tantos DataSet como valores de la variable y filtrar en el cálculo de las variables. Si, además, se quieren tratar varios submodelos conjuntamente, hay que cambiar los nombres de las variables para reflejar el distinto dominio en el que están definidas.
Change History (16)
comment:1 Changed 13 years ago by
Milestone: | Release 0.6 → Next |
---|---|
version: | 0.6 |
comment:2 Changed 13 years ago by
comment:3 Changed 13 years ago by
El cambio de milestone es porque no se va a mejorar más la versión 0.6 (versiones de paquete 0.60XX) y porque no parecía que sea algo muy crítico, pero se puede reconsiderar.
comment:4 Changed 13 years ago by
Priority: | critical → blocker |
---|
Creo que esto facilitaría mucho la producción de modelos basados en datos de tipo Matrix.
comment:5 Changed 11 years ago by
Milestone: | Next → Development 1B |
---|---|
Status: | new → accepted |
Se retoma este tique para incorporar las mejoras desarrolladas al respecto en el marco de un determinado proyecto.
La incorporación de dominios en matrices se incorpora a través de la variable peso del submodelo (Weight). Así, las filas cuyo peso sea cero desaparecerán del modelo y de los mecanismos de obtención de los datos (submodel::GetData
, expTerm::GetInitialFilter
, ...) salvo en sus variantes extendidas.
comment:6 Changed 11 years ago by
(In [4722]) Refs #874
Se sustituye la posibilidad de establecer inicio y fin para los submodelos matriciales con la posibilidad, más general, de indicar una variable peso con la que descartar un conjunto arbitrario de filas.
El método GetDomain
del submodelo ofrecerá en caso de disponer de una variable peso (HasWeight) la VMatrix del dominio correspondiente (esta VMatrix es un negativo de los datos de la variable peso, presenta ceros en las filas no descartadas).
Se disponen métodos para crear omitidos teniendo en cuenta el dominio del submodelo.
Se renombra el método GetData.Extended
de la clase @Submodel
a GetData.Full
para evitar confusión con el método homónimo de los objetos @Variable
y @MVariable
.
comment:7 Changed 11 years ago by
Métodos GetData extendidos o ampliados
Existe una ambigüedad en el significado de los métodos .Extended
en MMS, ya que responden a dos comportamientos distintos.
- Variante 1: En el módulo de variables, el método
GetData.Extended
devuelve los datos extendidos según la regla de extensión (ExtensionRule
) de que disponga cada variable. Estos datos extendidos (que son series temporales) son utilizados únicamente en previsión.
- Variante 2: En el módulo de estimaciones, estos métodos
Get<Result>.Extended
devuelven los resultados considerando todos los datos de los que se disponen, mientras que sus variantes no extendidas devuelven sólo los datos utilizados en el proceso de estimación del modelo y que son los que corresponden a su definición según los atributos de cada submodelo.
A continuación, disponemos en una tabla algunos de los métodos implementados y su comportamiento (variante).
Módulo | Clase | Método | Variante |
Variables | @Variable | GetData.Extended | 1 |
Modelos | @MVariable | GetData.Extended | 1 |
Modelos | @Submodel | ! GetData.Extended | 2 => OBSOLETO |
Modelos | @Submodel | GetData.Full | 2 |
Modelos | @ExpTerm | GetInitialFilter.Full | 2 |
Estimaciones | @Submodel.Results | GetOutput.Extended | 2 |
Estimaciones | @ExpTerm.Results | GetData.Extended | 2 |
Dado que los métodos Get<...>.Extended
de las clases de resultados @<...>.Results
no se renombrarán a Get<...>.Full
aunque entiéndase que se tratan de esta segunda variante del método.
comment:8 Changed 11 years ago by
comment:9 Changed 11 years ago by
comment:10 Changed 11 years ago by
(In [4725]) Refs #874
Se incrementa la versión de MMS.
Se incorpora un nuevo módulo interno a MMS: MatLabels capaz de introducir etiquetas a las filas y columnas de las matrices en los submodelos.
En este sentido, se actualiza el método TclTabulateMatrices
.
Las etiquetas se almacenarán como un atributo de tipo Text
uniendo las etiquetas con ";"
.
comment:11 Changed 11 years ago by
Los atributos para indicar las etiquetas de filas y columnas han de ser de tipo Text
y con las etiquetas separadas por ";"
, de modo que:
Set labels == Tokenizer(attributeValue, ";"); Text attributeValue == TextJoinWith(labels, ";");
Se tratarán de manera automática los atributos que presentan alguno de los siguientes nombres:
_.columns
para una variable (@Variable
). Se espera que la lista de etiquetas corresponda con los nombres de sus columnas (para variables de tipo matriz con varias columnas).
_.trueRows
para una variable (@Variable
). Se espera que la variable sea una variable peso para el filtrado de filas en un submodelo.
_.rows<...>
o_.labels<...>
para un dataSet (@DataSet
). Se espera que sean las etiquetas para las filas de las matrices. Por ejemplo, si hay dos tipos de matrices (por su número o significado de filas) pueden indicarse como_.rowsA
y_.rowsB
.
_.projects
por compatibilidad con el proyecto original.
comment:12 Changed 11 years ago by
Para facilitar la construcción de atributos de tipo _.trueRows
con las etiquetas de los subdominios, el módulo MatLabels dispones del método:
Real MMS::MatLabels::BuildWeightTrueRows(<model>, <attributeName>);
que a partir de un atributo de etiquetas existente, crea las variantes reducidas sobre las variables peso.
comment:13 Changed 11 years ago by
Resolution: | → fixed |
---|---|
Status: | accepted → closed |
Una duda: resolver este ticket es muy complicado? por eso se ha cambiado de milestone a "Next"?