= Actualización a MMS_0.6 = == Modelos == Los modelos en MMS_0.6 tienen una estructura ligeramente distinta a los de los modelos en MMS_0.5. Los cambios más llamativos son: * Los outputs de MMS_0.5 {{{MMS.Output}}} pasan a ser submodelos {{{MMS::@Submodel}}} formados por una mvariable {{{MMMS::@MVariable}}} que hace de output un conjunto de términos explicativos y un noise. * Los términos explicativos se construyen sobre cada submodelo {{{MMS::@ExpTerm}}} desapareciendo así los términos base y los términos explicativos multi-output. Para conseguir parámetros internodales (pertenecientes a varios submodelos) aparece una nueva clase para definir equivalencias entre parámetros {{{MMS::@MEquivalence}}}, es decir indicar que dos parámetros han de ser estimados como el mismo a ser posible. * El ruido o noise dispone de una clase propia destinada a gestionar la sigma2 del submodelo (o jerarquía) y también los parámetros relativos a su estructura como en el caso de los modelos ARIMA. * La información a priori para parámetros (distribución a priori y restricciones) está contenida en el parámetro y se gestiona desde él. === Creación de modelos === Los modelos se crean con argumentos similares a los encontrados en MMS_0.5. La diferencia más importante es que aparece un nuevo argumento {{{_.dataSets}}} destinado a recoger los datasets que desean ser utilizados. Téngase también en cuenta el nuevo nombre del contenedor de MMS. '''Código en MMS_0.5''' {{{ Real MMS::CreateModel([[ Text _.name = "modelo"; Text _.description = "..." ]]); @MMS.Model model = MMS::GetModel2("Mat.Veh","1.0"); }}} Nótese que los modelos en MMS no son de ningún tipo. Argumentos como _.type: {{{ Text _.type = "ARIMAX"; }}} llevan obsoletos ya un tiempo. Este rol lo desempeñan los submodelos (o outputs en MMS_0.5). '''Código en MMS_0.6''' {{{ MMS::@Model model = MMS::Container::CreateModel([[ Text _.name = "modelo"; Text _.version = "test.1"; // continua siendo opcional Text _.description = "..."; Set _.dataSets = [[ "dataset1_identifier", .. ]] ]]); }}} Nótese que en MMS_0.6 la versión de los modelos recupera su verdadero significado e itera a partir de un modelo guardado al hacer cambios. El texto que representa a la versión del modelo ha de acabar en un número entero (que es el que se iterará) precedido por un '.'. == Creación de submodelos == Como se adelantaba la estructura que en MMS_0.5 recogían los outputs {{{MMS.Output}}}, ahora está representada por los submodelos {{{MMS::@Submodel}}}. === Submodelos ARIMAX === Un submodelo de tipo ARIMAX se crea de manera semejante a en MMS_0.5. Prestemos un poco más de atención a sus argumentos: '''Código en MMS_0.5''' {{{ Real model::CreateOutputARIMA([[ Text _.name = ; Text _.description = "..."; Text _.variableName = ; Date _.modelBegin = ...; Date _.modelEnd = ...; @MMS.Transformation _.transformation = BoxCox(0,0); Text _.labelARIMA = "PDIFARMA" ]]) }}} '''Código en MMS_0.6''' {{{ MMS::@Submodel submodel = model::CreateSubmodel([[ Text _.name = ; Text _.description = "..."; NameBlock _.output = [[ Text _.name = ...; Text _.variableIdentifier = ; MMS::@Transformation _.transformation = MMS::@Transformation.BoxCox::Default(0,0) ]]; Date _.begin = y1998m01d01; Date _.end = y2009m05d01; NameBlock _.noise = [[ Text _.type = "ARIMA"; Text _.arimaLabel = "P1_12DIF0_1AR1_0MA0_12"; Real _.sigma = 1 // opcional, valor inicial de la sigma muestreada ]] }}} Véase el apartado de [wiki:upgrade/transformations transformaciones]. == Las m-variables ==