Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
added tests for gamma cdf and minor changes
  • Loading branch information
karlnapf committed Jun 7, 2012
1 parent cdc59d5 commit 13dc395
Showing 1 changed file with 72 additions and 12 deletions.
84 changes: 72 additions & 12 deletions examples/undocumented/libshogun/statistics.cpp
Expand Up @@ -20,8 +20,7 @@ void test_confidence_intervals()
{
int32_t data_size=100;
SGVector<float64_t> data(data_size);

CMath::random_vector(data.vector, data.vlen, 0.0, 1.0);
data.range_fill();

float64_t low, up, mean;
float64_t error_prob=0.1;
Expand All @@ -34,31 +33,92 @@ void test_confidence_intervals()
SG_SPRINT("deviation: %f\n", CStatistics::std_deviation(data));
}

void test_inverse_incomplete_gamma()
void test_inverse_student_t()
{
/* some tests for high precision MATLAB comparison */
float64_t difference=CStatistics::inverse_incomplete_gamma(1, 1-0.95)*2;
difference-=5.991464547107981;
float64_t difference=CStatistics::inverse_student_t(1, 0.99);
SG_SPRINT("inverse_student_t(0.99, 1)=%f\n", difference);
difference-=31.820515953773953;
difference=CMath::abs(difference);
ASSERT(difference<=10E-14);

difference=CStatistics::inverse_student_t(2, 0.99);
SG_SPRINT("inverse_student_t(0.99, 2)=%f\n", difference);
difference-= 6.964556734283233;
difference=CMath::abs(difference);
ASSERT(difference<=10E-14);

difference=CStatistics::inverse_student_t(3, 0.99);
SG_SPRINT("inverse_student_t(0.99, 3)=%f\n", difference);
difference-=4.540702858568132;
difference=CMath::abs(difference);
ASSERT(difference<=10E-20);

difference=CStatistics::inverse_student_t(4, 0.99);
SG_SPRINT("inverse_student_t(0.99, 4)=%f\n", difference);
difference-=3.746947387979196;
difference=CMath::abs(difference);
ASSERT(difference<=10E-20);
}

void test_incomplete_gamma()
{
/* some tests for high precision MATLAB comparison */
float64_t difference=CStatistics::incomplete_gamma(2, 1);
SG_SPRINT("incomplete_gamma(1, 2)=%f\n", difference);
difference-= 0.264241117657115;
difference=CMath::abs(difference);
ASSERT(difference<=10E-16);

difference=CStatistics::incomplete_gamma(3, 2);
SG_SPRINT("incomplete_gamma(3, 2)=%f\n", difference);
difference-= 0.323323583816937;
difference=CMath::abs(difference);
ASSERT(difference<=10E-16);

difference=CStatistics::incomplete_gamma(1, 0.1);
SG_SPRINT("incomplete_gamma(1, 0.1)=%f\n", difference);
difference-=0.095162581964040;
difference=CMath::abs(difference);
ASSERT(difference<=10E-16);
}

void test_gamma_cdf()
{
/* some tests for high precision MATLAB comparison */
float64_t difference=CStatistics::gamma_cdf(0.95, 1, 2);
SG_SPRINT("gamma_cdf(0.95, 1, 2)=%f\n", difference);
difference-=0.378114943534980;
difference=CMath::abs(difference);
ASSERT(difference<=10E-16);

difference=CStatistics::gamma_cdf(0.95, 2, 2);
SG_SPRINT("gamma_cdf(0.95, 2, 2)=%f\n", difference);
difference-= 0.082719541714095;
difference=CMath::abs(difference);
ASSERT(difference<=10E-15);

difference=CStatistics::inverse_incomplete_gamma(0.3, 1-0.95)*3;
difference-=4.117049832302619;
difference=CStatistics::gamma_cdf(1, 1, 1);
SG_SPRINT("gamma_cdf(1, 1, 1)=%f\n", difference);
difference-= 0.632120558828558;
difference=CMath::abs(difference);
ASSERT(difference<=10E-14)
ASSERT(difference<=10E-15);

difference=CStatistics::inverse_incomplete_gamma(2, 1-0.95)*0.1;
difference-=0.474386451839058;
difference=CStatistics::gamma_cdf(0.95, 0.9, 1.1);
SG_SPRINT("gamma_cdf(0.95, 0.9, 1.1=%f\n", difference);
difference-= 0.624727614394445;
difference=CMath::abs(difference);
ASSERT(difference<=10E-15)
ASSERT(difference<=10E-15);
}

int main(int argc, char **argv)
{
init_shogun_with_defaults();

test_confidence_intervals();
test_inverse_incomplete_gamma();
test_inverse_student_t();
test_incomplete_gamma();
test_gamma_cdf();

exit_shogun();

Expand Down

0 comments on commit 13dc395

Please sign in to comment.