Changeset 412906e in tol
- Timestamp:
- May 11, 2010, 1:31:08 PM (16 years ago)
- Branches:
- 1941-docker-image-to-test, devel, master
- Children:
- 5633d43
- Parents:
- fd471ab
- Location:
- tol_pkg/BysVecLinReg
- Files:
-
- 2 edited
- 1 moved
-
BysVecLinReg.tol (modified) (1 diff)
-
Multivariate.tol (moved) (moved from tol_pkg/BysVecLinReg/Multivariant.tol) (15 diffs)
-
test/test_0002/test.tol (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
-
tol_pkg/BysVecLinReg/BysVecLinReg.tol
rfd471ab r412906e 9 9 Text _.autodoc.url = ""; 10 10 Set _.autodoc.keys = [["MCMC","Markov chain","Bayesian","Metropolis", 11 "Hastings","multivaria nt","linear","regression","inequality","constraints"]];11 "Hastings","multivariate","linear","regression","inequality","constraints"]]; 12 12 Set _.autodoc.authors = [[ 13 13 "vdebuen@tol-project.org"]]; 14 14 15 #Embed "Multivaria nt.tol"15 #Embed "Multivariate.tol" 16 16 17 17 ]]; -
tol_pkg/BysVecLinReg/Multivariate.tol
rfd471ab r412906e 1 1 /* -*- mode: C++ -*- */ 2 2 ////////////////////////////////////////////////////////////////////////////// 3 // FILE : Multivaria nt.tol4 // PURPOSE: Defines Class BysVecLinReg::@Multivaria nt5 ////////////////////////////////////////////////////////////////////////////// 6 7 ////////////////////////////////////////////////////////////////////////////// 8 //Multivaria ntlinear regression3 // FILE : Multivariate.tol 4 // PURPOSE: Defines Class BysVecLinReg::@Multivariate 5 ////////////////////////////////////////////////////////////////////////////// 6 7 ////////////////////////////////////////////////////////////////////////////// 8 //Multivariate linear regression 9 9 // Y = A*X + E 10 10 //where … … 16 16 // V has a prior inverse Wishart W(V0,N0) 17 17 // 18 Class @Multivaria nt18 Class @Multivariate 19 19 ////////////////////////////////////////////////////////////////////////////// 20 20 { … … 25 25 //Definition members 26 26 //////////////////////////////////////////////////////////////////////////// 27 VMatrix _.Y = Rand(0,0,0,0); //Multivaria ntoutput matrix DxN28 VMatrix _.X = Rand(0,0,0,0); //Multivaria ntinput matrix MxN27 VMatrix _.Y = Rand(0,0,0,0); //Multivariate output matrix DxN 28 VMatrix _.X = Rand(0,0,0,0); //Multivariate input matrix MxN 29 29 Real _.alpha = 0; //Prior invariant scaling factor 30 30 Real _.W.weight = 0; //Weight of prior Wishart freedom degrees … … 37 37 //Data length 38 38 Real _.N = ?; 39 //Number of multivaria ntoutput vectors39 //Number of multivariate output vectors 40 40 Real _.d = ?; 41 41 //Number of multivariantinput vectors 42 42 Real _.m = ?; 43 //multivaria ntresiduals (dxN)43 //multivariate residuals (dxN) 44 44 VMatrix _.E = Rand(0,0,0,0); 45 //Instant covariance of multivaria ntresiduals (dxd)45 //Instant covariance of multivariate residuals (dxd) 46 46 VMatrix _.V = Rand(0,0,0,0); 47 //Regression multivaria ntcoefficients (dxm)47 //Regression multivariate coefficients (dxm) 48 48 VMatrix _.A = Rand(0,0,0,0); 49 49 //Stacked columns of A (D*Mx1) … … 96 96 If(And(VRows(M)==nRow, VColumns(M)==nCol), True, 97 97 { 98 WriteLn("[BysVecLinReg::@Multivaria nt::"+method+"] "98 WriteLn("[BysVecLinReg::@Multivariate::"+method+"] " 99 99 "Incongruent dimensions of _.W.V0 that should be " 100 100 "("<<nRow+","<<nCol+") instead of " … … 114 114 VColumns(Y)!=_.N, 115 115 { 116 WriteLn("[BysVecLinReg::@Multivaria nt::set.outputInput] "116 WriteLn("[BysVecLinReg::@Multivariate::set.outputInput] " 117 117 "Incongruent rows data length between input " 118 118 "("<<VRows(X)+","<<VColumns(X)+") " … … 123 123 _.m > _.N, 124 124 { 125 WriteLn("[BysVecLinReg::@Multivaria nt::set.outputInput] "125 WriteLn("[BysVecLinReg::@Multivariate::set.outputInput] " 126 126 "Too much inputs for data length "<<_.N+"<"<<_.m,"E"); 127 127 False … … 133 133 change.alpha(0); 134 134 VMatrix _.vec.A := (_.vec.nu)/(1+_.alpha); 135 VMatrix _.A := @Multivaria nt::vec2vmatrix(_.vec.A,Constant(_.d,_.m,1));135 VMatrix _.A := @Multivariate::vec2vmatrix(_.vec.A,Constant(_.d,_.m,1)); 136 136 change.V(Eye(_.d)); 137 137 True … … 140 140 141 141 //////////////////////////////////////////////////////////////////////////// 142 Static @Multivariant New( 143 Text desc, 144 Set outputNames, 145 Set inputNames, 146 VMatrix Y, 147 VMatrix X) 148 //////////////////////////////////////////////////////////////////////////// 149 { 150 @Multivariant new = [[ 151 Text _.desc = desc; 152 Set _.outputNames = outputNames; 153 Set _.inputNames = inputNames]]; 154 Real new::set.outputInput(Y,X); 155 new 142 Real set.prior.V.none(Real void) 143 //////////////////////////////////////////////////////////////////////////// 144 { 145 Real _.W.N0 := 0; 146 Real _.W.weight := 0; 147 VMatrix _.W.V0 := Constant(_.d,_.d,0); 148 VMatrix gibbs.draw.V(0); 149 True 156 150 }; 157 151 … … 171 165 Real _.W.weight := _.W.N0 / (_.W.N0+_.N); 172 166 VMatrix _.W.V0 := Copy(W.V0); 167 VMatrix gibbs.draw.V(0); 173 168 True 174 169 }) … … 203 198 VMatrix _.nu:=Tra(CholeskiSolve(_.X.Lf,XYt,"PtLLtP")); 204 199 VMatrix _.nuXYt := _.nu*XYt; 205 VMatrix _.vec.nu:=@Multivaria nt::vmatrix2vec(_.nu);200 VMatrix _.vec.nu:=@Multivariate::vmatrix2vec(_.nu); 206 201 True 207 202 }) … … 214 209 If(alpha<0, 215 210 { 216 WriteLn("[BysVecLinReg::@Multivaria nt::change.alpha] "211 WriteLn("[BysVecLinReg::@Multivariate::change.alpha] " 217 212 "scaling invariant parameter alpha must be non negative","E"); 218 213 False … … 230 225 If(!check.dim("change.V",V,_.d,_.d),False, 231 226 { 232 VMatrix _.V := Copy(V);227 VMatrix _.V := (V+Tra(V))/2; 233 228 VMatrix _.VxIm := KroneckerProduct(_.V, Eye(_.m)); 234 229 VMatrix _.VxIm.Lf := CholeskiFactor(_.VxIm,"X"); … … 257 252 //////////////////////////////////////////////////////////////////////////// 258 253 { 259 VMatrix E= _.Y - _.A * _.X;260 VMatrix S2 = MMtSqr( E);254 VMatrix _.E := _.Y - _.A * _.X; 255 VMatrix S2 = MMtSqr(_.E); 261 256 Real change.V(Mat2VMat(RandIWishart(_.N+_.W.N0, VMat2Mat(S2+_.W.V0*_.W.N0)))); 262 257 Copy(_.V) 258 }; 259 260 //////////////////////////////////////////////////////////////////////////// 261 VMatrix gibbs.draw.vec.V(Real numSim) 262 //////////////////////////////////////////////////////////////////////////// 263 { 264 VMatrix gibbs.draw.V(numSim); 265 @Multivariate::vmatrix2vec(_.V) 263 266 }; 264 267 … … 279 282 { 280 283 VMatrix gibbs.draw.vec.A(numSim); 281 VMatrix _.A := @Multivaria nt::vec2vmatrix(_.vec.A,_.A);284 VMatrix _.A := @Multivariate::vec2vmatrix(_.vec.A,_.A); 282 285 Copy(_.A) 283 286 } -
tol_pkg/BysVecLinReg/test/test_0002/test.tol
rfd471ab r412906e 8 8 Text link_ = ""; 9 9 Text summary_ = 10 "test_000 1multivariate linear model with unknown covariance matrix" ;10 "test_0002 multivariate linear model with unknown covariance matrix" ; 11 11 12 12 Real numErr0 = Copy(NError);
Note: See TracChangeset
for help on using the changeset viewer.
