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);