source: tol/doc/modeling/BSR/bsr.import.exa.tol @ 8c8cb65

1941-docker-image-to-testdevel
Last change on this file since 8c8cb65 was 51c3a2f, checked in by Jorge Pérez <josp.jorge@…>, 18 years ago

renaming modelation to modeling

git-svn-id: ​https://www.tol-project.org/svn/tolp/trunk@23 be4846ae-f051-483a-831f-b64e7d08527f

  • Property mode set to 100644
File size: 4.9 KB
Line 
1NameBlock Build.Example.BSR(Text path.out, Text session.id,
2                            Serie Y, Set X)
3{
4  Real beta1 = Rand(-1,1);
5  Real beta2 = Rand(-1,beta1);
6
7  NameBlock [[
8    Text _.path.out = path.out;
9    Text _.session.id = session.id;
10    NameBlock _.bsr.ARMA.2_1 = [[
11      Text _.dating.name = DatingName(Y);
12      Date _.first = First(Y);
13      Date _.last = Last(Y),
14      Matrix _.Y = SerMat(Y);
15      Matrix _.X = SerSetMat(X);
16      Set _.beta.ini = [[beta1, beta2]];
17 
18      Text Get.Name(Real void)
19      {
20        Text "ObsY"
21      };
22
23      Text Get.Sigma2(Real void)
24      {
25        Text "sigma2"
26      };
27
28      Set Get.TimeInfo(Real void)
29      {
30        Set BSR.NoiseTimeInfo(TimeSet Eval(_.dating.name), _.first, _.last)
31      };
32
33      Real Get.ARIMA.Size(Real void)
34      {
35        Real 1
36      };
37
38      Set Get.ARIMA.Factor(Real f)
39      {
40        Set ARIMAStruct(1, 1-0.1*B-0.1*B^2, 1-0.1*B, 1)
41      };
42
43      Real Get.Param.Size(Real void)
44      {
45        Real Rows(_.X)
46      };
47
48      Set Get.Param(Real iP)
49      {
50        Real value = If(iP>2, Real Rand(-1,1),
51                        _.beta.ini[iP]);
52        Set Bsr.Param.Info("beta_"+IntText(iP), value, -1/0, 1/0)
53      };
54
55      Real Get.Missing.Size(Real void)
56      {
57        Real 0
58      };
59
60      Set Get.Missing(Real iP)
61      {
62        Set Empty
63      };
64
65      Real Get.Equation.Size(Real void)
66      {
67        // _.X e _.Y están dispuestas por filas
68        // asi las ecuaciones estan por columnas
69        Real Columns(_.X)
70      };
71
72      Real Get.Equation.Output(Real iE)
73      {
74        Real MatDat(_.Y,1,iE)
75      };
76
77      Real Get.Equation.Input.Size(Real iE)
78      {
79        Real Rows(_.X)
80      };
81
82      Real Get.Equation.Input.Coef(Real iE, Real iT)
83      {
84        Real MatDat(_.X, iT,iE)
85      };
86
87      Text Get.Equation.Input.Param(Real iE, Real iT)
88      {
89        Text "beta_"+IntText(iT)
90      };
91
92      NameBlock Get.Constraints.Handler(Real void)
93      {
94        NameBlock BysMcmc::Bsr::Import::Explicit.Constraints([["0>=-beta_1+beta_2"]])
95      }
96    ]];
97
98    Text Get.Doc.Model.Name(Real void)
99    {
100      Text "BSRExample"
101    };
102
103    Text Get.Doc.Model.Description(Real void)
104    {
105      Text "Modelo simple ARMA(2,1)"
106    };
107
108    Text Get.Doc.Session.Name(Real void)
109    {
110      Text _.session.id
111    };
112
113    Text Get.Doc.Session.Description(Real void)
114    {
115      Text "Session "+_.session.id+" para el modelo: " +
116           Get.Doc.Model.Name(0) + " " + Get.Doc.Model.Description(0)
117    };
118
119    Text Get.Doc.Session.Authors(Real void)
120    {
121      Text "user@bayesforecast.com"
122    };
123
124    Text Get.Doc.Path(Real void)
125    {
126      Text _.path.out
127    };
128
129    Real Get.LinReg.Size(Real void)
130    {
131      // para el ejemplo actual solo tenemos un segmento de regresión
132      Real 1
133    };
134
135    NameBlock Get.LinReg.Segment(Real iS)
136    {
137      // en este caso retornamos el NameBlock para el único segmento
138      // que se modela para mas de un segmento de regresión se suele
139      // usar un Set que es indexado por iS: _bsr.blocks[iS]
140      NameBlock _.bsr.ARMA.2_1
141    };
142
143    NameBlock Get.Constraints.Handler(Real void)
144    {
145      // retornamos un NameBlock predefinido para el caso
146      // no restringido
147      NameBlock BysMcmc::Bsr::Import::Unconstrained(0)
148    }
149  ]]
150};
151
152/*
153NameBlock bsr.config = [[
154//MCMC dimensions
155  Real mcmc.burnin        =  100;
156  Real mcmc.sampleLength  = 2000;
157  Real mcmc.cacheLength   =  100;
158//Basic master configuration
159  Real basic.cholesky.epsilon          = 1.E-10;
160  Real basic.cholesky.warningFreq      = 100;
161  Real basic.truncMNormal.gibbsNumIter = 5;
162//Report configuration
163  Real report.raftery.diag.q   = 0.025;
164  Real report.raftery.diag.r   = 0.007;   
165  Real report.raftery.diag.s   = 0.950;   
166  Real report.raftery.diag.eps = 0.001;
167  Real report.acf.lag          = 20,
168  Real report.histogram.parts  = 100;
169  Real report.kerDens.points   = 0;
170//Generic flags
171  Real do.resume          =  False;
172  Real do.report          =  True;
173  Real do.eval            =  True;
174  Real do.linear.effects  =  True
175]];
176
177
178Serie WN = SubSer(Gaussian(0,1),y2000,y2008);
179Polyn AR = (1-0.7*B)*(1-0.3*B);
180Polyn MA = 1-0.2*B;
181Ration Q = MA/AR;
182Serie Z = DifEq(Q,WN);
183Real K = 4;
184Real beta1=Rand(-1,1);
185Real beta2=Rand(-1,beta1);
186Set BETA = [[beta1, beta2]]<<For(3,K, Real(Real ik) {Rand(-1,1)});
187Set X = For(1,K,Serie(Real _k)
188  {
189   Real s = Rand(0,1);
190   Real l = Rand(0,10);
191   Serie SubSer(Rand(l,l) + Gaussian(0,s),y2007,y2008)});
192
193
194Serie Y = SetSum(For(1,K,Serie(Real _k)
195  {Serie BETA[_k]*X[_k]})) + SubSer(Z,y2007,y2008);
196
197NameBlock bsr.import = Build.Example.BSR("/tmp/", Text "session01", Serie Y, Set X);
198
199Text file.bsr = BysMcmc::Bsr::Import::Write(bsr.import);
200
201Set bsr.parsed = BSR.Parse(file.bsr);
202
203Set bsr.estim = { BysMcmc::Bsr::Gibbs::Estim
204                    (
205                     Set modelDef = bsr.parsed,
206                     NameBlock bsr.config
207                    )};
208*/
Note: See TracBrowser for help on using the repository browser.