Finishing to add test to Statistics coming from the GSL source
[Math-GSL.git] / lib / Math / GSL / Statistics / Test.pm
blob052b44ee819e0720cdf3eca69b2ff2854ec58e99
1 package Math::GSL::Statistics::Test;
2 use base q{Test::Class};
3 use Test::More;
4 use Math::GSL::Statistics qw/:all/;
5 use Math::GSL::Sort qw/:all/;
6 use Math::GSL qw/:all/;
7 use strict;
9 sub make_fixture : Test(setup) {
10 my $self = shift;
11 $self->{data} =
12 [17, 18, 16, 18, 12,
13 20, 18, 20, 20, 22,
14 20, 10, 8, 12, 16,
15 16, 18, 20, 18, 21];
16 $self->{datab} =
17 [19, 20, 22, 24, 10,
18 25, 20, 22, 21, 23,
19 20, 10, 12, 14, 12,
20 20, 22, 24, 23, 17];
23 sub teardown : Test(teardown) {
26 sub GSL_STATS_MEAN : Tests {
27 my $x = gsl_stats_mean([2,3,4, 5], 1, 4);
28 ok ($x eq 3.5);
31 sub GSL_STATS_VARIANCE : Tests {
32 my $x = gsl_stats_variance([2,3,4, 5], 1, 4);
33 ok ($x eq 5/3);
36 sub GSL_STATS_SD : Tests {
37 my $self = shift;
38 my $x = gsl_stats_sd($self->{data}, 1, 20);
39 ok($x eq 3.79750610685209);
42 sub GSL_STATS_ABSDEV : Tests {
43 my $self = shift;
44 my $x = gsl_stats_absdev($self->{data},1, 20);
45 ok($x eq 2.9);
48 sub GSL_STATS_SKEW : Tests {
49 my $self = shift;
50 my $x = gsl_stats_skew($self->{data}, 1, 20);
51 ok($x eq -0.909355923168064);
54 sub GSL_STATS_KURTOSIS : Tests {
55 my $self = shift;
56 my $x = gsl_stats_kurtosis($self->{data}, 1, 20);
57 ok(is_similar_relative($x, -0.233692524908094));
60 sub GSL_STATS_COVARIANCE : Tests {
61 my $self = shift;
62 my $x = gsl_stats_covariance($self->{data}, 1, $self->{datab}, 1, 20);
63 ok(is_similar_relative($x, 14.5263157894737));
66 sub GSL_STATS_CORRELATION : Tests {
67 my $self = shift;
68 my $x = gsl_stats_correlation($self->{data}, 1, $self->{datab}, 1, 20);
69 ok(is_similar_relative($x, 0.793090350710101));
72 sub GSL_STATS_PVARIANCE : Tests {
73 my $self = shift;
74 my $x = gsl_stats_pvariance($self->{data}, 1, 20, $self->{datab}, 1, 20);
75 ok(is_similar_relative($x, 18.8421052631579));
78 sub GSL_STATS_TTEST : Tests {
79 my $self = shift;
80 my $x = gsl_stats_ttest($self->{data}, 1, 20, $self->{datab}, 1, 20);
81 ok(is_similar_relative($x, -1.45701922702927));
84 sub GSL_STATS_MAX : Tests {
85 my $self = shift;
86 my $x = gsl_stats_max($self->{data}, 1, 20);
87 ok(is_similar_relative($x, 22));
90 sub GSL_STATS_MIN : Tests {
91 my $self = shift;
92 my $x = gsl_stats_min($self->{data}, 1, 20);
93 ok(is_similar_relative($x, 8));
96 sub GSL_STATS_MINMAX : Tests {
97 my $self = shift;
98 my ($min, $max) = gsl_stats_minmax($self->{data}, 1, 20);
99 ok(is_similar_relative($max, 22));
100 ok(is_similar_relative($min, 8));
103 sub GSL_STATS_MAX_INDEX : Tests {
104 my $self = shift;
105 my $x = gsl_stats_max_index($self->{data}, 1, 20);
106 ok(is_similar_relative($x, 9));
109 sub GSL_STATS_MIN_INDEX : Tests {
110 my $self = shift;
111 my $x = gsl_stats_min_index($self->{data}, 1, 20);
112 ok(is_similar_relative($x, 12));
115 sub GSL_STATS_MINMAX_INDEX : Tests {
116 my $self = shift;
117 my ($min, $max) = gsl_stats_minmax_index($self->{data}, 1, 20);
118 ok(is_similar_relative($min, 12));
119 ok(is_similar_relative($max, 9));
122 sub GSL_STATS_MEDIAN_FROM_SORTED_DATA_EVEN : Tests {
123 my $self = shift;
124 my $sorted = gsl_sort($self->{data}, 1, 20);
125 my $x = gsl_stats_median_from_sorted_data($sorted, 1, 20);
126 ok(is_similar_relative($x, 18));
129 sub GSL_STATS_MEDIAN_FROM_SORTED_DATA_ODD : Tests {
130 my $self = shift;
131 my $sorted = gsl_sort($self->{data}, 1, 20);
132 my $x = gsl_stats_median_from_sorted_data($sorted, 1, 19);
133 ok(is_similar_relative($x, 18));
136 sub GSL_STATS_QUANTILE_FROM_SORTED_DATA_0 : Tests {
137 my $self = shift;
138 my $sorted = gsl_sort($self->{data}, 1, 20);
139 my $x = gsl_stats_quantile_from_sorted_data($sorted, 1, 20, 0);
140 ok(is_similar_relative($x, 8));
143 sub GSL_STATS_QUANTILE_FROM_SORTED_DATA_100 : Tests {
144 my $self = shift;
145 my $sorted = gsl_sort($self->{data}, 1, 20);
146 my $x = gsl_stats_quantile_from_sorted_data($sorted, 1, 20, 1);
147 ok(is_similar_relative($x, 22));
150 sub GSL_STATS_QUANTILE_FROM_SORTED_DATA_50_EVEN : Tests {
151 my $self = shift;
152 my $sorted = gsl_sort($self->{data}, 1, 20);
153 my $x = gsl_stats_quantile_from_sorted_data($sorted, 1, 20, 0.5);
154 ok(is_similar_relative($x, 18));
157 sub GSL_STATS_QUANTILE_FROM_SORTED_DATA_50_ODD : Tests {
158 my $self = shift;
159 my $sorted = gsl_sort($self->{data}, 1, 20);
160 my $x = gsl_stats_quantile_from_sorted_data($sorted, 1, 20, 0.5);
161 ok(is_similar_relative($x, 18));
164 sub GSL_STATS_LAG1_AUTOCORRELATION : Tests {
165 my $nacc3 = 1001 ;
166 my $i;
167 my $numacc3;
168 $numacc3->[0] = 1000000.2 ;
169 for ($i = 1 ; $i < 1000 ; $i += 2)
171 $numacc3->[$i] = 1000000.1 ;
172 $numacc3->[$i+1] = 1000000.3 ; }
173 my $mean = gsl_stats_mean ($numacc3, 1, $nacc3);
174 my $sd = gsl_stats_sd ($numacc3, 1, $nacc3);
175 my $lag1 = gsl_stats_lag1_autocorrelation ($numacc3, 1, $nacc3);
177 my $expected_mean = 1000000.2;
178 my $expected_sd = 0.1;
179 my $expected_lag1 = -0.999;
181 ok(is_similar_relative($mean, $expected_mean));
182 ok(is_similar_relative($sd, $expected_sd));
183 ok(is_similar_relative($lag1, $expected_lag1));