1 | |
---|
2 | NameBlock est = ...; // objeto estimación |
---|
3 | Text path = ".../YYYY.MM.DD_HH.MM.SS/"; // ruta auxiliar de BSR |
---|
4 | |
---|
5 | Real burnin = est::GetStrategy(?)::GetSetting("mcmc.burnin"); |
---|
6 | NameBlock n = (Ois.Load(path<<"master.bsr.recover.oza")[1][1]); |
---|
7 | Set colNames = EvalSet(n::_.colNames, Text (Text t) { PutName(t, t) }); |
---|
8 | |
---|
9 | Matrix mcmc = MatReadFile(path<<"master.bsr.mcmc.bbm"); |
---|
10 | |
---|
11 | ////////////////////////////////////////////////////////////////////////////// |
---|
12 | Anything ObtainParameter(MMS::@Parameter parameter, Set colNames, Matrix mcmc, |
---|
13 | Text samplerName) |
---|
14 | ////////////////////////////////////////////////////////////////////////////// |
---|
15 | { |
---|
16 | Text identifier = parameter::GetIdentifier(?); |
---|
17 | // Uso de MEquivalence |
---|
18 | Text bsrName = If(parameter::HasMEquivalence(?), { |
---|
19 | MMS::@MEquivalence mEquivalence = parameter::GetMEquivalence(?); |
---|
20 | If(mEquivalence::IsActive(?), { |
---|
21 | mEquivalence::GetIdentifier(?) |
---|
22 | }, { |
---|
23 | MMS::MMS.Get.Bsr.Name(parameter) |
---|
24 | }) |
---|
25 | }, { |
---|
26 | MMS::MMS.Get.Bsr.Name(parameter) |
---|
27 | }); |
---|
28 | Real idx = FindIndexByName(colNames, bsrName); |
---|
29 | If(idx, { |
---|
30 | // Según sea el tipo de parámetros elegido se crea un tipo u otro |
---|
31 | // de objeto RandVar::@Real.Random |
---|
32 | Matrix sample = SubCol(mcmc, [[idx]]); |
---|
33 | NameBlock realR = RandVar::@Real.Sample::Sampler(sample, samplerName); |
---|
34 | MMS::PutLocalName(identifier, realR) |
---|
35 | }, { |
---|
36 | Case(parameter::IsFixed(?), { |
---|
37 | // Los parámetros Sigma2 fijos no se encuentran. |
---|
38 | MMS::PutLocalName(identifier, parameter::GetInitialValue(?)) |
---|
39 | }, parameter::GetSubclass(?)=="Sigma2", { |
---|
40 | // A esta situación se llegaría |
---|
41 | MMS::PutLocalName(identifier, Real 1) |
---|
42 | }, True, { |
---|
43 | Real MMS::MMS.Warning("No se ha encontrado el parámetro:\n"<<identifier |
---|
44 | <<"\nusando el nombre: '"<<bsrName<<"'.", |
---|
45 | "@ResultsAdapterBSR::ObtainParameter"); |
---|
46 | MMS::PutLocalName(identifier, Real ?) |
---|
47 | }) |
---|
48 | }) |
---|
49 | }; |
---|
50 | |
---|
51 | Set pars = EvalSet(MMS::MMS.SelectActive(est::GetModel(?)::GetParameters(?)), |
---|
52 | Anything (NameBlock parameter) { |
---|
53 | ObtainParameter(parameter, colNames, mcmc, path) |
---|
54 | }); |
---|
55 | |
---|
56 | Real est::SetParameters(pars); |
---|
57 | |
---|