| Version 10 (modified by , 15 years ago) (diff) |
|---|
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
¡REVISAR!... esto no está implementado y revisado aún ...
@MMS.Parameter param = ... Real fixedValue = ... Real estimation::FixParameter(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);
![(please configure the [header_logo] section in trac.ini)](/mms/chrome/site/logomms.png)