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 11 years ago

Last modified 11 years ago

#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 Pedro Gea

Milestone: Release 0.6Next
version: 0.6

comment:2 Changed 13 years ago by atorre

Una duda: resolver este ticket es muy complicado? por eso se ha cambiado de milestone a "Next"?

comment:3 Changed 13 years ago by Pedro Gea

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 atorre

Priority: criticalblocker

Creo que esto facilitaría mucho la producción de modelos basados en datos de tipo Matrix.

comment:5 Changed 11 years ago by Pedro Gea

Milestone: NextDevelopment 1B
Status: newaccepted

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 Pedro Gea

(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 Pedro Gea

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 Pedro Gea

(In [4723]) Refs #874
Se incorpora el método GetInitialFilter.Full.

comment:9 Changed 11 years ago by Pedro Gea

(In [4724]) Refs #874
Se incorporan los cambios al módulo de estimaciones.

comment:10 Changed 11 years ago by Pedro Gea

(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 Pedro Gea

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 Pedro Gea

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 Pedro Gea

Resolution: fixed
Status: acceptedclosed

comment:14 Changed 11 years ago by Pedro Gea

(In [4726]) Refs #874
Se incorporan dos funciones auxiliares útiles al trabajar con matrices y diferentes segmentos: DisjoinByCategory y JoinByCategory.

comment:15 Changed 11 years ago by Pedro Gea

(In [4727]) Refs #874
Se incrementa la versión de ExtLib

comment:16 Changed 11 years ago by Pedro Gea

(In [4733]) Refs #874
Bug

Note: See TracTickets for help on using tickets.