wiki:upgrade/estimations
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.

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

Real MMS::CreateEstimation([[
  Text _.name = <name>;
  @MMS.Model _.model = model;
  @MMS.SettingsBSR _.settings = [[
    ...
  ]]
]]);
@MMS.Estimation estimation = MMS::GetEstimation([[
  model::GetName(?),
  model::GetVersion(?),
  <name>
]]);

Código en MMS_0.6

MMS::@Estimation estimation = MMS::Container::CreateEstimation([[
  Text _.name = <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).

// Modo 1 (por nombre)
MMS::@Estimation estimation.1 = MMS::Container::GetEstimation(<name>);
// Modo 2 (por nombre y versión)
MMS::@Estimation estimation.2 = MMS::Container::GetEstimation([[<name>,"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.
    El objeto de configuraciones de esta estrategia une las configuraciones de las antiguas estrategias máximo-verosímil:
    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:

Anything settingValue = strategy::GetSetting(Text settingName);
Real strategy::SetSetting(settingName, newValue);

Por ejemplo en lugar de:

strategy::SetSampleLength(1000);

haríamos:

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

// 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

@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

@MMS.Parameter param = ...
Real fixedValue = ...
Real param::SetInitialValue(fixedValue);
Real param::SetIsFixed(True);
Last modified 15 years ago Last modified on Jul 5, 2010, 9:32:26 AM