Changeset 524

Show
Ignore:
Timestamp:
08/13/09 12:23:30 (15 years ago)
Author:
vbarta
Message:

moved test of mepdf of emix from testSmp to mpdf_test

Files:
1 modified

Legend:

Unmodified
Added
Removed
  • library/tests/mpdf_test.cpp

    r516 r524  
    99using namespace bdm; 
    1010 
    11 static void check_mean(mmix &mMix, const vec &mu0, int nsamples, const vec &mean, double tolerance); 
     11static void check_mean(mpdf &distrib_obj, const vec &mu0, int nsamples, const vec &mean, double tolerance); 
    1212 
    13 static void check_covariance(mmix &mMix, const vec &mu0, int nsamples, const mat &R, double tolerance); 
     13static void check_covariance(mmix &distrib_obj, const vec &mu0, int nsamples, const mat &R, double tolerance); 
    1414 
    1515TEST ( test_mepdf ) { 
     
    6868} 
    6969 
    70 static void check_mean(mmix &mMix, const vec &mu0, int nsamples, const vec &mean, double tolerance) { 
     70// not using mpdf_harness because emix isn't configurable (yet?) 
     71TEST ( test_mepdf_emix ) { 
     72        int N = 10000; //number of samples 
     73        vec mu0 ( "1.5 1.7" ); 
     74        mat V0 ( "1.2 0.3; 0.3 5" ); 
     75        ldmat R = ldmat ( V0 ); 
     76 
     77        shared_ptr<enorm<ldmat> > eN = new enorm<ldmat>(); 
     78        eN->set_parameters ( mu0, R ); 
     79 
     80        vec a = "100000,10000"; 
     81        vec b = a / 10.0; 
     82        shared_ptr<egamma> eG = new egamma(); 
     83        eG->set_parameters ( a, b ); 
     84 
     85        shared_ptr<emix> eMix = new emix(); 
     86        Array<shared_ptr<epdf> > Coms ( 2 ); 
     87        Coms ( 0 ) = eG; 
     88        Coms ( 1 ) = eN; 
     89 
     90        eMix->set_parameters ( vec_2 ( 0.5, 0.5 ), Coms ); 
     91        mepdf meMix ( eMix ); 
     92        check_mean ( meMix, mu0, N, eMix->mean(), 0.1 ); 
     93} 
     94 
     95static void check_mean(mpdf &distrib_obj, const vec &mu0, int nsamples, const vec &mean, double tolerance) { 
    7196        int tc = 0; 
    7297        Array<vec> actual(CurrentContext::max_trial_count); 
    7398        do { 
    74                 mat smp = mMix.samplecond_m ( mu0, nsamples ); 
     99                mat smp = distrib_obj.samplecond_m ( mu0, nsamples ); 
    75100                vec emu = smp * ones ( nsamples ) / nsamples ; 
    76101                actual( tc ) = emu; 
     
    88113} 
    89114 
    90 static void check_covariance(mmix &mMix, const vec &mu0, int nsamples, const mat &R, double tolerance) { 
     115static void check_covariance(mmix &distrib_obj, const vec &mu0, int nsamples, const mat &R, double tolerance) { 
    91116        int tc = 0; 
    92117        Array<mat> actual(CurrentContext::max_trial_count); 
    93118        do { 
    94                 mat smp = mMix.samplecond_m ( mu0, nsamples ); 
     119                mat smp = distrib_obj.samplecond_m ( mu0, nsamples ); 
    95120                vec emu = smp * ones ( nsamples ) / nsamples ; 
    96121                mat er = ( smp * smp.T() ) / nsamples - outer_product ( emu, emu );