Adding a few tests to Roots.t
[Math-GSL.git] / t / Statistics.t
blob9b00a4186a206d392054e27a1fb0d51e70a0abcb
1 package Math::GSL::Statistics::Test;
2 use Math::GSL::Test qw/:all/;
3 use base q{Test::Class};
4 use Test::More;
5 use Math::GSL::Statistics qw/:all/;
6 use Math::GSL::Sort qw/:all/;
7 use Math::GSL qw/:all/;
8 use strict;
10 sub make_fixture : Test(setup) {
11  my $self = shift;
12  $self->{data} =   
13   [17, 18, 16, 18, 12,
14    20, 18, 20, 20, 22,
15    20, 10, 8, 12, 16,
16    16, 18, 20, 18, 21];
17  $self->{datab} = 
18   [19, 20, 22, 24, 10,
19    25, 20, 22, 21, 23,
20    20, 10, 12, 14, 12,
21    20, 22, 24, 23, 17];
24 sub teardown : Test(teardown) {
27 sub GSL_STATS_MEAN : Tests {
28  my $x = gsl_stats_mean([2,3,4, 5], 1, 4);
29  ok ($x eq 3.5);
32 sub GSL_STATS_VARIANCE : Tests {
33  my $x = gsl_stats_variance([2,3,4, 5], 1, 4);
34  ok ($x eq 5/3);
37 sub GSL_STATS_SD : Tests {
38  my $self = shift;
39  my $x = gsl_stats_sd($self->{data}, 1, 20);
40  ok($x eq 3.79750610685209);
43 sub GSL_STATS_ABSDEV : Tests {
44  my $self = shift;
45  my $x = gsl_stats_absdev($self->{data},1, 20);
46  ok($x eq 2.9); 
49 sub GSL_STATS_SKEW : Tests {
50  my $self = shift;
51  my $x = gsl_stats_skew($self->{data}, 1, 20);
52  ok($x eq -0.909355923168064);
55 sub GSL_STATS_KURTOSIS : Tests {
56  my $self = shift;
57  my $x = gsl_stats_kurtosis($self->{data}, 1, 20);
58  ok(is_similar_relative($x, -0.233692524908094));
61 sub GSL_STATS_COVARIANCE : Tests {
62  my $self = shift;
63  my $x = gsl_stats_covariance($self->{data}, 1, $self->{datab}, 1, 20); 
64  ok(is_similar_relative($x, 14.5263157894737));
67 sub GSL_STATS_CORRELATION : Tests {
68  my $self = shift;
69  my $x = gsl_stats_correlation($self->{data}, 1, $self->{datab}, 1, 20);
70  ok(is_similar_relative($x, 0.793090350710101)); 
73 sub GSL_STATS_PVARIANCE : Tests {
74  my $self = shift;
75  my $x = gsl_stats_pvariance($self->{data}, 1, 20, $self->{datab}, 1, 20); 
76  ok(is_similar_relative($x, 18.8421052631579));
79 sub GSL_STATS_TTEST : Tests {
80  my $self = shift;
81  my $x = gsl_stats_ttest($self->{data}, 1, 20, $self->{datab}, 1, 20); 
82  ok(is_similar_relative($x, -1.45701922702927));
85 sub GSL_STATS_MAX : Tests { 
86  my $self = shift;
87  my $x = gsl_stats_max($self->{data}, 1, 20); 
88  ok(is_similar_relative($x, 22));
91 sub GSL_STATS_MIN : Tests {
92  my $self = shift;
93  my $x = gsl_stats_min($self->{data}, 1, 20); 
94  ok(is_similar_relative($x, 8));
97 sub GSL_STATS_MINMAX : Tests {
98  my $self = shift;
99  my ($min, $max) = gsl_stats_minmax($self->{data}, 1, 20); 
100  ok(is_similar_relative($max, 22));
101  ok(is_similar_relative($min, 8));
104 sub GSL_STATS_MAX_INDEX : Tests {
105  my $self = shift;
106  my $x = gsl_stats_max_index($self->{data}, 1, 20); 
107  ok(is_similar_relative($x, 9));
110 sub GSL_STATS_MIN_INDEX : Tests {
111  my $self = shift;
112  my $x = gsl_stats_min_index($self->{data}, 1, 20); 
113  ok(is_similar_relative($x, 12));
116 sub GSL_STATS_MINMAX_INDEX : Tests {
117  my $self = shift;
118  my ($min, $max) = gsl_stats_minmax_index($self->{data}, 1, 20); 
119  ok(is_similar_relative($min, 12));
120  ok(is_similar_relative($max, 9));
123 sub GSL_STATS_MEDIAN_FROM_SORTED_DATA_EVEN : Tests {
124  my $self = shift;
125  my $sorted = gsl_sort($self->{data}, 1, 20);
126  my $x = gsl_stats_median_from_sorted_data($sorted, 1, 20);
127  ok(is_similar_relative($x, 18));
130 sub GSL_STATS_MEDIAN_FROM_SORTED_DATA_ODD : Tests {
131  my $self = shift;
132  my $sorted = gsl_sort($self->{data}, 1, 20);
133  my $x = gsl_stats_median_from_sorted_data($sorted, 1, 19);
134  ok(is_similar_relative($x, 18));
137 sub GSL_STATS_QUANTILE_FROM_SORTED_DATA_0 : Tests {
138  my $self = shift;
139  my $sorted = gsl_sort($self->{data}, 1, 20);
140  my $x = gsl_stats_quantile_from_sorted_data($sorted, 1, 20, 0);
141  ok(is_similar_relative($x, 8));
144 sub GSL_STATS_QUANTILE_FROM_SORTED_DATA_100 : Tests {
145  my $self = shift;
146  my $sorted = gsl_sort($self->{data}, 1, 20);
147  my $x = gsl_stats_quantile_from_sorted_data($sorted, 1, 20, 1);
148  ok(is_similar_relative($x, 22));
151 sub GSL_STATS_QUANTILE_FROM_SORTED_DATA_50_EVEN : Tests {
152  my $self = shift;
153  my $sorted = gsl_sort($self->{data}, 1, 20);
154  my $x = gsl_stats_quantile_from_sorted_data($sorted, 1, 20, 0.5);
155  ok(is_similar_relative($x, 18));
158 sub GSL_STATS_QUANTILE_FROM_SORTED_DATA_50_ODD : Tests {
159  my $self = shift;
160  my $sorted = gsl_sort($self->{data}, 1, 20);
161  my $x = gsl_stats_quantile_from_sorted_data($sorted, 1, 20, 0.5);
162  ok(is_similar_relative($x, 18));
165 sub GSL_STATS_LAG1_AUTOCORRELATION : Tests {
166   my $nacc3 = 1001 ;
167   my $i;
168   my $numacc3;
169   $numacc3->[0] = 1000000.2 ;
170   for ($i = 1 ; $i < 1000  ; $i += 2) 
171     {
172       $numacc3->[$i] = 1000000.1 ;
173       $numacc3->[$i+1] = 1000000.3 ; }
174   my $mean = gsl_stats_mean ($numacc3, 1, $nacc3);
175   my $sd = gsl_stats_sd ($numacc3, 1, $nacc3);
176   my $lag1 = gsl_stats_lag1_autocorrelation ($numacc3, 1, $nacc3);
178   my $expected_mean = 1000000.2;
179   my $expected_sd = 0.1;
180   my $expected_lag1 = -0.999;
182   ok(is_similar_relative($mean, $expected_mean));
183   ok(is_similar_relative($sd, $expected_sd));
184   ok(is_similar_relative($lag1, $expected_lag1));
186 Test::Class->runtests;