Changeset 41d9440 in tol
- Timestamp:
- Oct 21, 2008, 11:06:42 AM (18 years ago)
- Branches:
- 1941-docker-image-to-test, devel, master
- Children:
- 1e92122
- Parents:
- a3c9ab0
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
tol/stdlib/math/stat/models/bayesian/bysMcmc/bsr/gibbs/_basicMaster.tol
ra3c9ab0 r41d9440 23 23 //Internal reference to model definition 24 24 Set _.modelDef = modelDef; 25 //External filter of output 26 Set _.externalFilter = Copy(Empty); 27 //Output after external filters 28 VMatrix _.Y = _.modelDef->Y; 29 25 30 Text _.name = _.modelDef->DocInfo->Model.Name; 26 31 //Setting NameBlock description … … 96 101 //Linear block values 97 102 VMatrix _.beta = Rand(0,0,0,0); 103 104 //////////////////////////////////////////////////////////////////////////// 105 Real DoExternalFilter(Real unused) 106 //////////////////////////////////////////////////////////////////////////// 107 { 108 VMatrix _.Y := _.modelDef->Y; 109 If(!Card(_.externalFilter), 1, 110 { 111 SetMin(EvalSet(_.externalFilter,VMatrix(NameBlock extflt) 112 { 113 extFlt::do.filter(_.Y) 114 })) 115 }) 116 }; 98 117 99 118 //////////////////////////////////////////////////////////////////////////// … … 160 179 //WriteLn("TRACE"+_MID+" _.lin.blk.init 4"); 161 180 VMatrix _.beta := _.lin.blk::_.blockDef::_.store; 162 VMatrix sig_0 = _.sig.blk::draw(0, _.modelDef::Y - _.modelDef::X*_.beta); 181 Real DoExternalFilter(0); 182 VMatrix sig_0 = _.sig.blk::draw(0, _.Y - _.modelDef->X*_.beta); 163 183 //WriteLn("TRACE"+_MID+" _.lin.blk.init 5"); 164 VMatrix _.YplusV := _.outMis.blk::filter(_. modelDef::Y);184 VMatrix _.YplusV := _.outMis.blk::filter(_.Y); 165 185 //WriteLn("TRACE"+_MID+" _.lin.blk.init 6"); 166 VMatrix _.XplusU := _.inpMis.blk::filter(_.modelDef ::X);186 VMatrix _.XplusU := _.inpMis.blk::filter(_.modelDef->X); 167 187 //WriteLn("TRACE"+_MID+" _.lin.blk.init 7"); 168 188 VMatrix _.noise := _.YplusV-_.XplusU*_.beta; … … 183 203 { 184 204 //WriteLn("TRACE"+_MID+" draw.sig.lin 1.1"); 205 Real DoExternalFilter(0); 185 206 VMatrix om = If(Not(_.outMis.blk::_.blockDef::_.numCol),Rand(0,1,0,0), 186 207 { 187 208 _.outMis.blk::draw(numSim,_.arm.blk,_.sig.blk::_.sigmaInv, 188 _. modelDef::Y-_.XplusU*_.beta)209 _.Y-_.XplusU*_.beta) 189 210 }); 190 VMatrix _.YplusV := _.outMis.blk::filter(_. modelDef::Y);211 VMatrix _.YplusV := _.outMis.blk::filter(_.Y); 191 212 //WriteLn("TRACE"+_MID+" draw.sig.lin 1.3"); 192 213 VMatrix im = If(Not(_.inpMis.blk::_.blockDef::_.numCol),Rand(0,1,0,0), 193 214 { 194 215 _.inpMis.blk::draw(numSim,_.arm.blk,_.sig.blk::_.sigmaInv, 195 _.beta, _.YplusV-_.modelDef ::X*_.beta)216 _.beta, _.YplusV-_.modelDef->X*_.beta) 196 217 }); 197 VMatrix _.XplusU := _.inpMis.blk::filter(_.modelDef ::X);218 VMatrix _.XplusU := _.inpMis.blk::filter(_.modelDef->X); 198 219 //WriteLn("TRACE"+_MID+" draw.sig.lin 1.5"); 199 220 VMatrix _.noise := _.YplusV - _.XplusU*_.beta; … … 225 246 //////////////////////////////////////////////////////////////////////////// 226 247 { 248 Real DoExternalFilter(0); 227 249 VMatrix om = If(Not(_.outMis.blk::_.blockDef::_.numCol),Rand(0,1,0,0), 228 250 { 229 251 _.outMis.blk::maxLikelihood(numSim,_.arm.blk,_.sig.blk::_.sigmaInv, 230 _. modelDef::Y-_.XplusU*_.beta)252 _.Y-_.XplusU*_.beta) 231 253 }); 232 VMatrix _.YplusV := _.outMis.blk::filter(_. modelDef::Y);254 VMatrix _.YplusV := _.outMis.blk::filter(_.Y); 233 255 //WriteLn("TRACE"+_MID+" draw.sig.lin 1.3"); 234 256 VMatrix im = If(Not(_.inpMis.blk::_.blockDef::_.numCol),Rand(0,1,0,0), 235 257 { 236 258 _.inpMis.blk::maxLikelihood(numSim,_.arm.blk,_.sig.blk::_.sigmaInv, 237 _.beta, _.YplusV-_.modelDef ::X*_.beta)259 _.beta, _.YplusV-_.modelDef->X*_.beta) 238 260 }); 239 VMatrix _.XplusU := _.inpMis.blk::filter(_.modelDef ::X);261 VMatrix _.XplusU := _.inpMis.blk::filter(_.modelDef->X); 240 262 //WriteLn("TRACE"+_MID+" draw.sig.lin 1.5"); 241 263 VMatrix _.noise := _.YplusV - _.XplusU*_.beta; … … 297 319 //////////////////////////////////////////////////////////////////////////// 298 320 { 321 //WriteLn("TRACE "+_MID+"::setStore 1 values("<<Rows(values)+"x"<<Columns(values)+")"); 299 322 Set EvalSet(_.blocks, Real(NameBlock block) 300 323 { … … 323 346 Set equIdx = (_.modelDef->NoiseDistrib)[segmentNum]->EquIdx; 324 347 //VBR: Se asume que las ecuaciones de un segmento son consecutivas! 325 PutVMatBlock(_.modelDef::X, equIdx[1], column, Xj) 326 }; 327 328 //////////////////////////////////////////////////////////////////////////// 329 Text _.autodoc.member.setSegmentOutput = 330 ""; 331 Real setSegmentOutput(Matrix Yj, Real segmentNum) 332 //////////////////////////////////////////////////////////////////////////// 333 { 334 Set equIdx = (_.modelDef->NoiseDistrib)[segmentNum]->EquIdx; 335 //VBR: Se asume que las ecuaciones de un segmento son consecutivas! 336 PutVMatBlock(_.modelDef::Y, equIdx[1], 1, Yj) 348 PutVMatBlock(_.modelDef->X, equIdx[1], column, Xj) 337 349 }; 338 350 … … 346 358 //WriteLn("TRACE"+_MID+" eval 1"); 347 359 Real setStore(values); 360 Real DoExternalFilter(0); 348 361 //WriteLn("TRACE"+_MID+" eval 2"); 349 VMatrix _.YplusV := _.outMis.blk::filter(_. modelDef::Y);350 VMatrix fullOutput.mis = _.outMis.blk::filter(_. modelDef::Y*0);362 VMatrix _.YplusV := _.outMis.blk::filter(_.Y); 363 VMatrix fullOutput.mis = _.outMis.blk::filter(_.Y*0); 351 364 //WriteLn("TRACE"+_MID+" eval 3"); 352 VMatrix _.XplusU := _.inpMis.blk::filter(_.modelDef ::X);365 VMatrix _.XplusU := _.inpMis.blk::filter(_.modelDef->X); 353 366 //WriteLn("TRACE"+_MID+" eval 4"); 354 367 VMatrix _.beta := _.lin.blk::_.blockDef::_.store; 355 VMatrix fullFilter = _.modelDef ::X*_.beta;368 VMatrix fullFilter = _.modelDef->X*_.beta; 356 369 VMatrix fullFilter.full = _.XplusU*_.beta; 357 370 VMatrix fullFilter.mis = fullFilter.full - fullFilter; … … 373 386 Text name = Replace(segment->Name,"::Noise",""); 374 387 //WriteLn("TRACE"+_MID+" eval 7["<<k+"].2.1"); 375 Matrix output_ = VMat2Mat(SubRow(_.modelDef ::Y,segment->EquIdx));388 Matrix output_ = VMat2Mat(SubRow(_.modelDef->Y,segment->EquIdx)); 376 389 Matrix output.mis_ = VMat2Mat(SubRow(fullOutput.mis,segment->EquIdx)); 390 Matrix output.extFil = VMat2Mat(SubRow(_.modelDef->Y-_.Y,segment->EquIdx)); 377 391 Matrix output.full = output_+output.mis_; 378 392 Matrix output = IfMat(output.mis_,RProd(output_,?),output_); … … 421 435 Date first = ti->FirstDate; 422 436 Date difFirst = Succ(first, ti->Dating, difDeg); 423 Serie serOutput = MatSerSet(Tra(output), ti->Dating, first)[1]; 424 Serie serOutput.mis = MatSerSet(Tra(output.mis), ti->Dating, first)[1]; 425 Serie serOutput.full = MatSerSet(Tra(output.full),ti->Dating, first)[1]; 426 Serie serFilter = MatSerSet(Tra(filter), ti->Dating, first)[1]; 427 Serie serFilter.mis = MatSerSet(Tra(filter.mis), ti->Dating, first)[1]; 428 Serie serFilter.full = MatSerSet(Tra(filter.full),ti->Dating, first)[1]; 429 Serie serNoise = MatSerSet(Tra(noise), ti->Dating, first)[1]; 437 Serie serOutput = MatSerSet(Tra(output), ti->Dating, first)[1]; 438 Serie serOutput.extFil = MatSerSet(Tra(output.extFil), ti->Dating, first)[1]; 439 Serie serOutput.mis = MatSerSet(Tra(output.mis), ti->Dating, first)[1]; 440 Serie serOutput.full = MatSerSet(Tra(output.full), ti->Dating, first)[1]; 441 Serie serFilter = MatSerSet(Tra(filter), ti->Dating, first)[1]; 442 Serie serFilter.mis = MatSerSet(Tra(filter.mis), ti->Dating, first)[1]; 443 Serie serFilter.full = MatSerSet(Tra(filter.full), ti->Dating, first)[1]; 444 Serie serNoise = MatSerSet(Tra(noise), ti->Dating, first)[1]; 430 445 If(hasArima, 431 446 { … … 439 454 { 440 455 Serie serForecast = MatSerSet(Tra(forecast), ti->Dating, first)[1]; 441 [[sigma, stdErr, avr, serOutput, serOutput.mis, serOutput. full,456 [[sigma, stdErr, avr, serOutput, serOutput.mis, serOutput.extFil, serOutput.full, 442 457 serFilter, serFilter.mis, serFilter.full, serNoise, serForecast]] 443 458 }) … … 446 461 If(hasArima, 447 462 { 448 [[sigma, stdErr, avr, output, output. mis, output.full,463 [[sigma, stdErr, avr, output, output.extFil, output.mis, output.full, 449 464 filter, filter.mis, filter.full, noise, forecast, 450 465 difNoise, residuals, arima]] 451 466 }, 452 467 { 453 [[sigma, stdErr, avr, output, output. mis, output.full,468 [[sigma, stdErr, avr, output, output.extFil, output.mis, output.full, 454 469 filter, filter.mis, filter.full, noise, forecast]] 455 470 }) … … 466 481 //////////////////////////////////////////////////////////////////////////// 467 482 { 483 Real setStore(values); 468 484 _eval(values, True, False) 469 485 }; … … 610 626 //////////////////////////////////////////////////////////////////////////// 611 627 { 612 VMatrix X_U = _.inpMis.blk::filter(_.modelDef ::X);628 VMatrix X_U = _.inpMis.blk::filter(_.modelDef->X); 613 629 VMatrix X = SubCol(X_U,beta.index); 614 630 VMat2Mat(subRegEquBlockV(resBlock, X)) … … 623 639 //////////////////////////////////////////////////////////////////////////// 624 640 { 625 VMatrix Y = _.outMis.blk::filter(_.modelDef ::Y);641 VMatrix Y = _.outMis.blk::filter(_.modelDef->Y); 626 642 VMat2Mat(subRegEquBlockV(resBlock, Y)) 627 643 }; … … 649 665 //////////////////////////////////////////////////////////////////////////// 650 666 { 651 VMatrix X_U = _.inpMis.blk::filter(_.modelDef ::X);667 VMatrix X_U = _.inpMis.blk::filter(_.modelDef->X); 652 668 VMat2Mat(subDifRegEquBlockV(resBlock, X_U)) 653 669 }; … … 661 677 //////////////////////////////////////////////////////////////////////////// 662 678 { 663 VMatrix X_U = _.inpMis.blk::filter(_.modelDef ::X);679 VMatrix X_U = _.inpMis.blk::filter(_.modelDef->X); 664 680 VMatrix X = SubCol(X_U,beta.index); 665 681 VMat2Mat(subDifRegEquBlockV(resBlock, X)) … … 674 690 //////////////////////////////////////////////////////////////////////////// 675 691 { 676 VMatrix Y_V = _.outMis.blk::filter(_.modelDef ::Y);692 VMatrix Y_V = _.outMis.blk::filter(_.modelDef->Y); 677 693 VMat2Mat(subDifRegEquBlockV(resBlock, Y_V)) 678 694 };
Note: See TracChangeset
for help on using the changeset viewer.
