= Actualización a MMS_0.6 = == Estimaciones == Las estimaciones en MMS_0.6 tienen una estructura parecida a MMS_0.5 como se puede ver a continuación: '''Código en MMS_0.5''' {{{ #!java Real MMS::CreateEstimation([[ Text _.name = ; @MMS.Model _.model = model; @MMS.SettingsBSR _.settings = [[ ... ]] ]]); @MMS.Estimation estimation = MMS::GetEstimation([[ model::GetName(?), model::GetVersion(?), ]]); }}} '''Código en MMS_0.6''' {{{ #!java MMS::@Estimation estimation = MMS::Container::CreateEstimation([[ Text _.name = ; Text _.version = "test.1" // opcional MMS::@Model _.model = model; MMS::@SettingsBSR _.settings = [[ ... ]] ]]); }}} Nótese sin embargo que la identificación de las estimaciones es distinta en MMS_0.6. Mientras que en MMS_0.5 la identificación estaba formada por el identificador del modelo (nombre y versión) más el nombre de la estimación, en MMS_0.6 el objeto {{{MMS::@Estimation}}} como otro objeto principal se identifica por el par nombre-versión (la versión de la estimación). {{{ #!java // Modo 1 (por nombre) MMS::@Estimation estimation.1 = MMS::Container::GetEstimation(); // Modo 2 (por nombre y versión) MMS::@Estimation estimation.2 = MMS::Container::GetEstimation([[,"test.1"]]); }}} === Estrategias de estimación === Las estrategias de estimación en MMS_0.6 se reducen a dos: * La estrategia BSR, que como en MMS_0.5 utiliza BSR para estimar el modelo completo. * La estrategia máximo-verosímil múltiple (Multi-MLE). A diferencia de la estrategia BSR no disponemos de ningún estimador máximo-verosímil para resolver un modelo completo. Sin embargo disponemos de diferentes estimadores para estimar los diferentes submodelos ({{{Estimate}}}, {{{Logit}}}, {{{Probit}}}, ...) por separado. En MMS_0.6 la estrategia máximo-verosímil múltiple (Multi-MLE) atribuye a cada submodelo una subestrategia correspondiente dependiendo del tipo de submodelo. [[BR]] El objeto de configuraciones de esta estrategia une las configuraciones de las antiguas estrategias máximo-verosímil: {{{ #!java MMS::@SettingsMultiMLE _.settings = [[ // Configuración por defecto Real _.Tolerance = 1e-005; // GLM Real _.RelativeTolerance = 1e-005; Real _.MaxIter = 40; // GLM Real _.CGMaxIter = 3; Real _.DiffDist = 1e-006; Real _.MarqFactor = 3; Real _.DoDiagnostics = True; Real _.DoStatistics = True; Real _.NullInitResiduals = False; Real _.MinOutlierLikelyhood = 4; Real _.MarqLinMet = 1; Real _.showTraces = True; Text _.logitEstimator = "Logit" // Opciones: "Logit", "VLogit" ]]; }}} === Configuración de las estrategias === En MMS_0.6 desaperecen métodos específicos para configurar las estrategias como {{{::SetSampleLength}}}. Para consultas y modificar las configuraciones existen los métodos: {{{ #!java Anything settingValue = strategy::GetSetting(Text settingName); Real strategy::SetSetting(settingName, newValue); }}} Por ejemplo en lugar de: {{{ #!java strategy::SetSampleLength(1000); }}} haríamos: {{{ #!java strategy::SetSetting("mcmc.sampleLength", 1000); }}} == Condicionamiento == El condicionamiento en MMS_0.6 deja de ser un tipo de objeto especial como en MMS_0.5 ({{{@MMS.Conditioning}}}) para convertirse simplemente en un conjunto de parámetros ya estimados o fijados. Los parámetros del condicionamiento han de ser reales o variables aleatorias de tipo real ({{{Real}}} o {{{@Real.Random}}}) con el nombre del parámetro al que desean condicionar. En el caso en el que los parámetros sean reales ({{{Real}}}) el resultado de la estimación es equivalente al hecho de que el parámetro hubiese sido fijado en definición. === Fijar parámetros en el codicionamiento === En MMS_0.5 se construía un objeto parámetro-resultante ({{{@MMS.ResultingParameter}}}) por cada parámetro que deseaba fijarse y se añadía al objeto condicionamiento ({{{@MMS.Conditioning}}}). Básicamente un parámetro resultante se caracterizaba por tres atributos: (i) un nombre o identificador que lo relacionaba con un parámetro del modelo, (ii) un valor fijo o medio y (iii) una sigma con valor 0 para los parámetros fijos. '''Código en MMS_0.5''' {{{ #!java // Partiendo de un parámetro del modelo y el valor al que desea fijarse: @MMS.Parameter param = ... Real fixedValue = ... // se construye un parámetro-resultante: @MMS.ResultingParameter rParam = @MMS.ResultingParameter::New(param::GetIndex(?), fixedValue, 0); // y se añade al condicionamiento: Real estimation::GetConditioning(?)::AddFixedParameters([[rParam]]); }}} '''Código en MMS_0.6''' {{{ #!java @MMS.Parameter param = ... Real fixedValue = ... Real estimation::AppendConditioningParameter(param::GetIdentifier(?), fixedValue); }}} === Fijar parámetros en definición === En MMS_0.5 no era posible fijar los parámetros en definición ya que esto no funcionaba correctamente. Esta limitación está solucionada en MMS_0.6, y para fijar un parámetro se pueden modificar sus atributos InitialValue e IsFixed: '''Código en MMS_0.6''' {{{ #!java @MMS.Parameter param = ... Real fixedValue = ... Real param::SetInitialValue(fixedValue); Real param::SetIsFixed(True); }}}