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

Closed 14 years ago

#569 closed doubt (fixed)

Diferencias entre Model y Model.Forecast

Reported by: imendez Owned by: Pedro Gea
Priority: critical Milestone: Release 0.6
Component: Forecast Keywords:
Cc:

Description

Hola, un objeto Model tiene atributos como el nombre, si está guardado, la descripción, etc. accesibles mediante los correspondientes métodos:

NameBlock for = MMS::Container::GetForecast(1);
NameBlock mod = for::GetModel(1);
Text nameMod = mod::GetName(?);
Text description = mod::GetDescription(?);
NameBlock subMod = mod::GetSubmodel(1);

Sin embargo, los resultados de una previsión:

NameBlock mod3 = for::GetModel.Forecast(1);

no tienen esos atributos ni, obviamente, los métodos que permiten obtenerlos:

Text nameMod3 = mod3::GetName(?); //ERROR
Text description3 = mod3::GetDescription(?); //ERROR

Además, mientras que en Model el método GetOutput(?) devuelve un NameBlock con la variable y para obtener los datos hay que aplicar GetOutput(?)::GetData(?), en un Model.Forecast el mismo método devuelve directamente los datos:

NameBlock out = subMod::GetOutput(?);
Anything outData = out::GetData(?);

NameBlock out3 = subMod3::GetOutput(?); //ERROR
Anything outData3 = subMod3::GetOutput(?); //Serie (o matriz) output

¿A qué se deben estas diferencias?

Change History (3)

comment:1 Changed 14 years ago by Pedro Gea

Milestone: Release 0.6

comment:2 Changed 14 years ago by Pedro Gea

Status: newaccepted
Type: defectdoubt

Como se menciona en #680, las instancias de @Model.Results (como pasa también con las demás clases de resultados) están encargadas de obtener los resultados relativos a una instancia de @Model (un modelo). Internamente hacen referencia tanto al modelo como a los parámetros estimados ofreciendo así un nuevo conjunto de métodos: los resultados.

Sí hay que dejar claro es que una instancia de @Model.Results (u otra clase de resultados) no es una instancia de @Model (o de la clase que corresponda) sino una instancia, a modo de capa que la contiene y que junto a los parámetros estimados incorpora nuevos mecanismos y métodos para el acceso a resultados y previsiones.

Las clases de previsiones no son más que una ampliación de las clases de resultados, así, por ejemplo, una instancia de @Model.Forecast también los es de @Model.Results.
Las clases de previsiones incorporan nuevos métodos a las clases de resultados.

Por ejemplo si una instancia de @Submodel.Results ofrece un método GetNoise que devuelve el resultado "noise" de la estimación, la instancia de @Submodel.Forecast ofrece, no sólo GetNoise sino también GetNoise.Forecast que devuelve la previsión del "noise".

La posibilidad de dar acceso a todos los métodos de la instancia de referencia (la definición) mediante un método ::GetDefinition(?) ya se sugiere en #680 y está recogida en #563. En ese caso se podría acceder a dicha información así:

Text nameMod3 = mod3::GetDefinition(?)::GetName(?); //ERROR (aún)
Text description3 = mod3::GetDefinition(?)::GetDescription(?); //ERROR (aún)

comment:3 Changed 14 years ago by Pedro Gea

Resolution: fixed
Status: acceptedclosed

Respecto a los métodos de la clase @Submodel.Forecast (en la descripción del tique se refiere por error a @Model.Forecast) sí hay una cuestión de terminología que merece aclararse.

En el diseño de la definición de un submodelo (@Submodel) los métodos GetOutput y GetNoise dan acceso respectivamente a las instancias encargadas de: (i) la definición de la m-variable que será el "output" (@MVariable) y (ii) la estructura del ruido del submodelo (@Noise).

Sin embargo en el diseño de la clase de resultados del submodelo (@Submodel.Results) los métodos anteriores hacen referencia directamente a resultados y no a otras instancias (que dicho sea de paso no existen). El diseño de las clases de resultados y previsiones (módulo 03) no es el mismo que el del módulo de modelos (módulo 02) aunque intenta aproximarse en la medida de lo posible.

Los métodos GetOutput y GetNoise en la clase @Submodel.Results forman parte de un conjunto de métodos que ofrecen los siguientes resultados:

  • Output
  • Noise
  • Filter
  • Residuals
  • Prediction

que verifican la siguiente relación:

  • Output = Noise + Filter = Prediction + Residuals
Note: See TracTickets for help on using tickets.