Changeset b3d4b55 in tol
- Timestamp:
- Oct 14, 2009, 2:45:47 PM (17 years ago)
- Branches:
- 1941-docker-image-to-test, devel, master
- Children:
- dd61b24
- Parents:
- 1904f20
- Location:
- tol/stdlib/math/stat/models/bayesian/bysMcmc/bsr/gibbs
- Files:
-
- 2 edited
-
_inputMissingBlock.tol (modified) (12 diffs)
-
_outputMissingBlock.tol (modified) (8 diffs)
Legend:
- Unmodified
- Added
- Removed
-
tol/stdlib/math/stat/models/bayesian/bysMcmc/bsr/gibbs/_inputMissingBlock.tol
r1904f20 rb3d4b55 15 15 //Set of @Bsr.Missing.Info without repeatitions 16 16 Set _.missingInfo; 17 Real _.prior.M; 18 //Average vector of missing priors 19 Matrix _.prior.nu; 20 //Inverse of standard deviation vector of missing priors 21 Matrix _.prior.si; 22 //Standarized output of missing priors 23 VMatrix _.prior.Y; 24 //Standarized input of missing priors 25 VMatrix _.prior.X; 17 26 //Classification of missing by name 18 27 Set _.inputMissingDistinct; … … 28 37 Set _.prior.normal; 29 38 //Number of input missing prior equations 30 Real _.prior.M;31 //Average vector of input missing priors32 Matrix _.prior.nu;33 //Inverse of standard deviation vector of input missing priors34 Matrix _.prior.si;35 //Standarized output of input missing priors36 VMatrix _.prior.Y;37 //Standarized input of input missing priors38 VMatrix _.prior.X;39 40 39 41 40 //-------------------------------------------------------------------------- 42 41 // Auxiliar members 43 42 //-------------------------------------------------------------------------- 43 //Work space 44 44 @WorkSpace.LinReg _.ws = BysMcmc::Bsr::Gibbs::@WorkSpace.LinReg::Null(0); 45 45 //Standarized input of free missing priors … … 148 148 //WriteLn("TRACE "+_MID+" 7"); 149 149 VMatrix store = _.store; 150 //Selecting inputmissing variables with left truncated prior information150 //Selecting missing variables with left truncated prior information 151 151 Set leftConstrained = 152 152 Select(_.missingInfo, Real(@BSR.MissingBlock b) … … 161 161 }); 162 162 //WriteLn("TRACE "+_MID+" initialize 2"); 163 //Number of inputmissing with left constrained prior163 //Number of missing with left constrained prior 164 164 Real left.R = Card(leftConstrained); 165 //Number of inputmissing with left constrained prior165 //Number of missing with left constrained prior 166 166 Real right.R = Card(rightConstrained); 167 //Number of inputmissing with constrained prior167 //Number of missing with constrained prior 168 168 Real R = left.R + right.R; 169 //Border of inputmissing constrains169 //Border of missing constrains 170 170 VMatrix prior.a = If(!R, Rand(0,0,0,0), 171 171 { … … 179 179 }); 180 180 //WriteLn("TRACE "+_MID+" initialize 3"); 181 //Coefficients of inputmissing constrains181 //Coefficients of missing constrains 182 182 VMatrix prior.A = If(!R, Rand(0,0,0,0), 183 183 { … … 204 204 //////////////////////////////////////////////////////////////////////////// 205 205 Text _.autodoc.member.filter = 206 "Filter regression inputwith current missing block values. You can set a "206 "Filter regression with current missing block values. You can set a " 207 207 "previously simulated vector of paramters calling before to method " 208 208 "setMcmcRow"; … … 210 210 //////////////////////////////////////////////////////////////////////////// 211 211 { 212 //WriteLn("TRACE "+_MID+" filter 1");212 //WriteLn("TRACE"+_MID+" filter Z:"<<Z); 213 213 If(Not(enabled), Z, 214 214 { … … 221 221 }; 222 222 223 //////////////////////////////////////////////////////////////////////////// //224 StaticText _.autodoc.member.New =223 //////////////////////////////////////////////////////////////////////////// 224 Text _.autodoc.member.New = 225 225 "Builds a NameBlock that can draw a Gibbs sample of a Input Missing block " 226 226 "of a Bayesian Sparse Regression model"; … … 238 238 BysMcmc::Bsr::Gibbs::@BlockStdLinEmpty::New(name, numBlock, firstCol, config), 239 239 BysMcmc::Bsr::Gibbs::@BlockInputMissing blk = [[ 240 Code _.buildWorkSpace = _buildWorkSpace;241 240 Set _.inputMissingDistinct = 242 241 { … … 265 264 Set _.storeIndex = EvalSet(inputMissingBlock, 266 265 Real(@BSR.MissingBlock mis){ mis->Index }), 267 //Given initial values of block variables268 VMatrix _.store = Mat2VMat(SetMat(269 EvalSet(_.inputMissingDistinct, Set(Set cl){ [[(cl[1])->Nu]] })));270 //Defining the block in the Markov Chain271 Real _defined = define(272 name,273 EvalSet(_.inputMissingDistinct, Text(Set cl){ (cl[1])->Name }),274 mcmcPartialHandler,275 numBlock,276 firstCol,277 config);278 266 //Input missing pairs (equation,variable) 279 267 Matrix _.tj = { … … 289 277 //Input missing index j 290 278 Set _.j = Traspose(Extract(inputMissingBlock, 4))[1]; 291 292 Set _.missingInfo = EvalSet(_.inputMissingDistinct, Set(Set cl){ cl[1] }); 279 Set _.missingInfo = EvalSet(_.inputMissingDistinct, Set(Set cl){ cl[1] }); 280 281 //Given initial values of block variables 282 VMatrix _.store = Mat2VMat(SetMat(Extract(_.missingInfo, 6))); 283 Code _.buildWorkSpace = _buildWorkSpace; 284 //Defining the block in the Markov Chain 285 Real _defined = define( 286 name, 287 EvalSet(_.missingInfo, Text(@BSR.MissingBlock b){ b->Name }), 288 mcmcPartialHandler, 289 numBlock, 290 firstCol, 291 config); 293 292 //Selecting input missing variables with prior information 294 Set _.prior.normal = 295 { 296 Select(_.missingInfo, Real(@BSR.MissingBlock b) 297 { 298 Or(b->Prior == "Normal",b->Prior == "TruncatedNormal") 299 }) 300 }; 301 //Number of input missing prior equations 293 Set _.prior.normal = Select(_.missingInfo, Real(@BSR.MissingBlock b) 294 { 295 Or(b->Prior == "Normal",b->Prior == "TruncatedNormal") 296 }); 297 //Number of missing prior equations 302 298 Real _.prior.M = Card(_.prior.normal); 303 //Average vector of inputmissing priors304 Matrix _.prior.nu = If( Not(_.prior.M),Rand(0,1,0,0),299 //Average vector of missing priors 300 Matrix _.prior.nu = If(!_.prior.M,Rand(0,1,0,0), 305 301 { 306 302 //WriteLn("TRACE "+_MID+" 3"); 307 303 SetMat(Extract(_.prior.normal, 6)) 308 304 }); 309 //Inverse of standard deviation vector of inputmissing priors310 Matrix _.prior.si = If( Not(_.prior.M),Rand(0,1,0,0),305 //Inverse of standard deviation vector of missing priors 306 Matrix _.prior.si = If(!_.prior.M,Rand(0,1,0,0), 311 307 { 312 308 //WriteLn("TRACE "+_MID+" 4"); … … 314 310 RPow(s2,-1/2) 315 311 }); 316 //Standarized output of inputmissing priors317 VMatrix _.prior.Y = If( Not(_.prior.M),Rand(0,1,0,0),312 //Standarized output of missing priors 313 VMatrix _.prior.Y = If(!_.prior.M,Rand(0,1,0,0), 318 314 Mat2VMat(_.prior.nu $* _.prior.si)); 319 //Standarized input of inputmissing priors320 VMatrix _.prior.X = If( Not(_.prior.M),Rand(0,_.N,0,0),315 //Standarized input of missing priors 316 VMatrix _.prior.X = If(!_.prior.M,Rand(0,_.N,0,0), 321 317 { 322 318 //WriteLn("TRACE "+_MID+" _.prior.X 1"); 323 //WriteLn("TRACE "+_MID+" 5"); 324 Matrix aux1= SetMat(Traspose([[Set Range(1,_.prior.M,1)]])); 325 //WriteLn("TRACE "+_MID+" 6"); 326 Matrix aux2= SetMat(Extract(_.prior.normal, 2)); 327 Matrix triplet = aux1 | aux2 | _.prior.si; 319 Matrix triplet = SetMat(Traspose([[Set Range(1,_.prior.M,1)]])) | 320 SetMat(Extract(_.prior.normal, 2)) | 321 _.prior.si; 328 322 //WriteLn("TRACE "+_MID+" _.prior.X 2 triplet=\n"<<triplet); 329 323 VMatrix tr = Triplet(triplet,_.prior.M,_.N); -
tol/stdlib/math/stat/models/bayesian/bysMcmc/bsr/gibbs/_outputMissingBlock.tol
r1904f20 rb3d4b55 13 13 // Mandatory members 14 14 //-------------------------------------------------------------------------- 15 //Set of @Bsr.Missing.Info 15 //Set of @Bsr.Missing.Info without repeatitions 16 16 Set _.missingInfo; 17 Real _.prior.M; 18 //Average vector of missing priors 19 Matrix _.prior.nu; 20 //Inverse of standard deviation vector of missing priors 21 Matrix _.prior.si; 22 //Standarized output of missing priors 23 VMatrix _.prior.Y; 24 //Standarized input of missing priors 25 VMatrix _.prior.X; 17 26 //Output missing pairs i,k 18 27 Set _.t; … … 20 29 Matrix _.I; 21 30 //Number of output missing prior equations 22 Real _.prior.M; 23 //Average vector of output missing priors 24 Matrix _.prior.nu; 25 //Inverse of standard deviation vector of output missing priors 26 Matrix _.prior.si; 27 //Standarized output of missing priors 28 VMatrix _.prior.Y; 29 //Standarized input of missing priors 30 VMatrix _.prior.X; 31 32 //-------------------------------------------------------------------------- 33 //Auxiliar members 34 //-------------------------------------------------------------------------- 35 //Auxiliar variable for filter creating 36 VMatrix _.FEye = Rand(0,0,0,0); 31 32 //-------------------------------------------------------------------------- 33 // Auxiliar members 34 //-------------------------------------------------------------------------- 37 35 //Work space 38 36 @WorkSpace.LinReg _.ws = BysMcmc::Bsr::Gibbs::@WorkSpace.LinReg::Null(0); … … 40 38 VMatrix _.prior.X.free = Rand(0,0,0,0); 41 39 40 //Auxiliar variable for filter creating 41 VMatrix _.FEye = Rand(0,0,0,0); 42 42 //-------------------------------------------------------------------------- 43 43 //Methods … … 125 125 Real initialize.subBlocks(unused); 126 126 //WriteLn("TRACE "+_MID+" initialize 1"); 127 VMatrix u = _.store; 128 //Selecting output missing variables with left truncated prior information 127 //WriteLn("TRACE "+_MID+" 7"); 128 VMatrix store = _.store; 129 //Selecting missing variables with left truncated prior information 129 130 Set leftConstrained = 130 131 Select(_.missingInfo, Real(@BSR.MissingBlock b) … … 139 140 }); 140 141 //WriteLn("TRACE "+_MID+" initialize 2"); 141 //Number of outputmissing with left constrained prior142 //Number of missing with left constrained prior 142 143 Real left.R = Card(leftConstrained); 143 //Number of outputmissing with left constrained prior144 //Number of missing with left constrained prior 144 145 Real right.R = Card(rightConstrained); 145 //Number of outputmissing with constrained prior146 //Number of missing with constrained prior 146 147 Real R = left.R + right.R; 147 //Border of outputmissing constrains148 //Border of missing constrains 148 149 VMatrix prior.a = If(!R, Rand(0,0,0,0), 149 150 { 150 If(!left.R, Rand(0,1,0,0), (-Mat2VMat(SetMat(Extract(leftConstrained, 8))))) << 151 If(!right.R, Rand(0,1,0,0), (+Mat2VMat(SetMat(Extract(rightConstrained, 9))))) 151 //WriteLn("TRACE "+_MID+" 8"); 152 VMatrix aux1=If(!left.R, Rand(0,1,0,0), 153 (-Mat2VMat(SetMat(Extract(leftConstrained, 8))))); 154 //WriteLn("TRACE "+_MID+" 9"); 155 VMatrix aux2=If(!right.R, Rand(0,1,0,0), 156 (+Mat2VMat(SetMat(Extract(rightConstrained, 9))))); 157 aux1<<aux2 152 158 }); 153 159 //WriteLn("TRACE "+_MID+" initialize 3"); 154 //Coefficients of outputmissing constrains155 VMatrix prior.A = 160 //Coefficients of missing constrains 161 VMatrix prior.A = If(!R, Rand(0,0,0,0), 156 162 { 157 163 Set left.range = Range(1, left.R, 1); 158 164 Set right.range = Range(1+left.R, R, 1); 159 Matrix left = If(!left.R, Rand(0,3,0,0), 160 SetMat(Traspose([[left.range]])) | 161 SetMat(Extract(leftConstrained, 2)) | 162 Rand(left.R,1,-1,-1)); 165 //WriteLn("TRACE "+_MID+" 10"); 166 Matrix left = If(!left.R, Rand(0,3,0,0), 167 SetMat(Traspose([[left.range]])) | 168 SetMat(Extract(leftConstrained, 2)) | 169 Rand(left.R,1,-1,-1)); 170 //WriteLn("TRACE "+_MID+" 11"); 163 171 Matrix right = If(!right.R, Rand(0,3,0,0), 164 SetMat(Traspose([[right.range]])) |165 SetMat(Extract(rightConstrained, 2)) |166 Rand(right.R,1,+1,+1));172 SetMat(Traspose([[right.range]])) | 173 SetMat(Extract(rightConstrained, 2)) | 174 Rand(right.R,1,+1,+1)); 167 175 Convert(Triplet(left<<right,R,_.N),"Cholmod.R.Sparse") 168 } ;176 }); 169 177 //WriteLn("TRACE "+_MID+" initialize 4"); 170 Real ok = matchConstrains( u,prior.A,prior.a);178 Real ok = matchConstrains(store,prior.A,prior.a); 171 179 //WriteLn("TRACE "+_MID+" initialize 5"); 172 180 ok 173 181 }; 174 182 175 183 //////////////////////////////////////////////////////////////////////////// 176 184 Text _.autodoc.member.filter = 177 "Filter regression outputwith current missing block values. You can set a "185 "Filter regression with current missing block values. You can set a " 178 186 "previously simulated vector of paramters calling before to method " 179 187 "setMcmcRow"; … … 193 201 "Builds a NameBlock that can draw a Gibbs sample of a Output Missing block " 194 202 "of a Bayesian Sparse Regression model"; 195 //////////////////////////////////////////////////////////////////////////// 203 ////////////////////////////////////////////////////////////////////////////// 196 204 Static @BlockStdLin New( 197 205 Text name, … … 206 214 BysMcmc::Bsr::Gibbs::@BlockStdLinEmpty::New(name, numBlock, firstCol, config), 207 215 BysMcmc::Bsr::Gibbs::@BlockOutputMissing blk = [[ 216 //Output missing pairs i,k 217 Set _.t = Traspose(Extract(outputMissingBlock, 3))[1]; 218 //Selecting output missing variables with prior information 219 Matrix _.I = SetCol(_.t); 220 208 221 Set _.missingInfo = outputMissingBlock; 222 223 //Given initial values of block variables 224 VMatrix _.store = Mat2VMat(SetMat(Extract(_.missingInfo, 6))); 209 225 Code _.buildWorkSpace = _buildWorkSpace; 210 VMatrix _.store = Mat2VMat(SetMat(Extract(outputMissingBlock, 6)));211 226 //Defining the block in the Markov Chain 212 227 Real _defined = define( 213 228 name, 214 EvalSet( outputMissingBlock, Text(@BSR.MissingBlock b){ b->Name }),229 EvalSet(_.missingInfo, Text(@BSR.MissingBlock b){ b->Name }), 215 230 mcmcPartialHandler, 216 231 numBlock, 217 232 firstCol, 218 233 config); 219 //Output missing pairs i,k 220 Set _.t = Traspose(Extract(outputMissingBlock, 3))[1]; 221 //Selecting output missing variables with prior information 222 Matrix _.I = SetCol(_.t); 223 Set _.prior.normal = Select(outputMissingBlock, Real(@BSR.MissingBlock b) 234 //Selecting input missing variables with prior information 235 Set _.prior.normal = Select(_.missingInfo, Real(@BSR.MissingBlock b) 224 236 { 225 237 Or(b->Prior == "Normal",b->Prior == "TruncatedNormal") 226 238 }); 227 //Number of outputmissing prior equations239 //Number of missing prior equations 228 240 Real _.prior.M = Card(_.prior.normal); 229 //Average vector of output missing priors 230 Matrix _.prior.nu = If(!_.prior.M, Rand(0,0,0,0), 231 SetMat(Extract(_.prior.normal, 6))); 232 //Inverse of standard deviation vector of output missing priors 233 Matrix _.prior.si = If(!_.prior.M, Rand(0,0,0,0), 234 { 241 //Average vector of missing priors 242 Matrix _.prior.nu = If(!_.prior.M,Rand(0,1,0,0), 243 { 244 //WriteLn("TRACE "+_MID+" 3"); 245 SetMat(Extract(_.prior.normal, 6)) 246 }); 247 //Inverse of standard deviation vector of missing priors 248 Matrix _.prior.si = If(!_.prior.M,Rand(0,1,0,0), 249 { 250 //WriteLn("TRACE "+_MID+" 4"); 235 251 Matrix s2 = SetMat(Extract(_.prior.normal, 7)); 236 252 RPow(s2,-1/2) 237 253 }); 238 //Standarized output of outputmissing priors239 VMatrix _.prior.Y = If(!_.prior.M, Rand(0,1,0,0),254 //Standarized output of missing priors 255 VMatrix _.prior.Y = If(!_.prior.M,Rand(0,1,0,0), 240 256 Mat2VMat(_.prior.nu $* _.prior.si)); 241 //Standarized output of outputmissing priors242 VMatrix _.prior.X = If(!_.prior.M, Rand(0,_.N,0,0),257 //Standarized input of missing priors 258 VMatrix _.prior.X = If(!_.prior.M,Rand(0,_.N,0,0), 243 259 { 244 260 //WriteLn("TRACE "+_MID+" _.prior.X 1"); … … 250 266 //WriteLn("TRACE "+_MID+" _.prior.X 3"); 251 267 VMatrix pX = Convert(tr,"Cholmod.R.Sparse"); 252 //WriteLn("TRACE "+_MID+" _.prior.X 4 prior.X="<<pX);268 //WriteLn("TRACE "+_MID+" _.prior.X 4"); 253 269 pX 254 270 }) 255 256 271 ]])} 257 272
Note: See TracChangeset
for help on using the changeset viewer.
