Changeset 878 for library/bdm/stat/exp_family.h
- Timestamp:
- 03/24/10 14:30:43 (14 years ago)
- Files:
-
- 1 modified
Legend:
- Unmodified
- Added
- Removed
-
library/bdm/stat/exp_family.h
r870 r878 369 369 egiw ( int dimx0, ldmat V0, double nu0 = -1.0 ) : eEF() { 370 370 set_parameters ( dimx0, V0, nu0 ); 371 validate(); 371 372 }; 372 373 … … 465 466 UI::get ( dV, set, "dV", UI::compulsory ); 466 467 set_parameters ( dimx, ldmat ( dV ), nu ); 468 validate(); 467 469 468 470 } else { 469 471 set_parameters ( dimx, V, nu ); 472 validate(); 470 473 } 471 474 } … … 479 482 480 483 void validate() { 481 // check sizes, rvs etc. 484 dim = dimx * ( dimx + nPsi ); 485 486 // check sizes, rvs etc. 482 487 // also check if RV are meaningful!!! 483 488 // meaningful = rv for theta and rv for r are split! … … 510 515 eDirich ( const eDirich &D0 ) : eEF () { 511 516 set_parameters ( D0.beta ); 517 validate(); 512 518 }; 513 519 eDirich ( const vec &beta0 ) { 514 520 set_parameters ( beta0 ); 521 validate(); 515 522 }; 516 523 void set_parameters ( const vec &beta0 ) { … … 718 725 egamma ( const vec &a, const vec &b ) { 719 726 set_parameters ( a, b ); 727 validate(); 720 728 }; 721 729 void set_parameters ( const vec &a, const vec &b ) { 722 730 alpha = a, beta = b; 723 dim = alpha.length();724 731 }; 725 732 //!@} … … 845 852 nk = prod ( 1.0 / distance ); 846 853 lnk = log ( nk ); 847 dim = low.length();848 854 } 849 855 //!@} … … 909 915 UI::get ( delta, set, "delta", UI::compulsory ); 910 916 mean = UI::build<fnc> ( set, "mean", UI::compulsory ); 911 912 917 iepdf.set_parameters ( -delta, delta ); 918 } 919 920 void validate(){ 913 921 dimc = mean->dimensionc(); 914 validate(); 915 } 922 iepdf.validate(); 923 } 924 916 925 }; 917 926 UIREGISTER ( mguni ); … … 935 944 mlnorm ( const mat &A, const vec &mu0, const sq_T &R ) : pdf_internal< TEpdf<sq_T> >() { 936 945 set_parameters ( A, mu0, R ); 946 validate(); 937 947 } 938 948 … … 942 952 A = A0; 943 953 mu_const = mu0; 944 this->dimc = A0.cols();945 } 954 } 955 946 956 //!@} 947 957 //! Set value of \c rvc . Result of this operation is stored in \c epdf use function \c _ep to access it. … … 1002 1012 bdm_assert ( A.rows() == mu_const.length(), "mlnorm: A vs. mu mismatch" ); 1003 1013 bdm_assert ( A.rows() == _R().rows(), "mlnorm: A vs. R mismatch" ); 1014 this->dimc = A.cols(); 1004 1015 1005 1016 } … … 1061 1072 void validate() { 1062 1073 bdm_assert ( g->dimension() == this->dimension(), "incompatible function" ); 1074 this->dim = g->dimension(); 1075 this->dimc = g->dimensionc(); 1076 this->iepdf.validate(); 1063 1077 } 1064 1078 }; … … 1202 1216 void set_parameters ( int len, double k0 ) { 1203 1217 k = k0; 1204 iepdf.set_parameters ( ( 1.0 / ( k*k ) + 2.0 ) *ones ( len ) /*alpha*/, ones ( len ) /*beta*/ ); 1218 iepdf.set_parameters ( ( 1.0 / ( k*k ) + 2.0 ) *ones ( len ) /*alpha*/, ones ( len ) /*beta*/ ); 1219 }; 1220 1221 void validate (){ 1222 iepdf.validate(); 1205 1223 dimc = dimension(); 1206 }; 1224 }; 1225 1207 1226 void condition ( const vec &val ) { 1208 1227 _beta = elem_mult ( val, ( _alpha - 1.0 ) ); … … 1235 1254 mgamma::set_parameters ( k0, ref0 ); 1236 1255 refl = pow ( ref0, 1.0 - l0 ); 1237 l = l0; 1256 l = l0; 1257 }; 1258 1259 void validate (){ 1260 mgamma::validate(); 1238 1261 dimc = dimension(); 1239 1262 }; … … 1273 1296 refl = pow ( ref0, 1.0 - l0 ); 1274 1297 l = l0; 1298 }; 1299 1300 void validate(){ 1301 migamma::validate(); 1275 1302 dimc = dimension(); 1276 1303 }; 1277 1304 1278 1305 void condition ( const vec &val ) { 1279 1306 vec mean = elem_mult ( refl, pow ( val, l ) ); … … 1349 1376 sig2 = 0.5 * log ( k * k + 1 ); 1350 1377 iepdf.set_parameters ( zeros ( size ), 2*sig2*eye ( size ) ); 1351 1352 dimc = size; 1353 }; 1378 }; 1379 1380 void validate(){ 1381 iepdf.validate(); 1382 dimc = iepdf.dimension(); 1383 } 1354 1384 1355 1385 void condition ( const vec &val ) { … … 1393 1423 Y = chmat ( Y0 ); 1394 1424 delta = delta0; 1395 p = Y.rows(); 1396 dim = p * p; 1425 p = Y.rows(); 1397 1426 } 1398 1427 //! Set internal structures … … 1401 1430 delta = delta0; 1402 1431 p = Y.rows(); 1432 } 1433 1434 virtual void validate (){ 1403 1435 dim = p * p; 1404 1436 } 1437 1405 1438 //! Sample matrix argument 1406 1439 mat sample_mat() const { … … 1470 1503 1471 1504 virtual void validate (){ 1472 dim = W.dimension(); 1505 W.validate(); 1506 dim = W.dimension(); 1473 1507 } 1474 1508 … … 1540 1574 l = l0; 1541 1575 refl = pow ( ref0, 1 - l ); 1542 1543 1576 iepdf.set_parameters ( eye ( p ), delta ); 1577 }; 1578 1579 void validate(){ 1580 iepdf.validate(); 1544 1581 dimc = iepdf.dimension(); 1545 1582 } 1583 1546 1584 void condition ( const vec &c ) { 1547 1585 vec z = c; … … 1841 1879 void mgnorm<sq_T >::set_parameters ( const shared_ptr<fnc> &g0, const sq_T &R0 ) { 1842 1880 g = g0; 1843 this->dim = g->dimension();1844 this->dimc = g->dimensionc();1845 1881 this->iepdf.set_parameters ( zeros ( g->dimension() ), R0 ); 1846 1882 }