1 package Math::GSL::Statistics::Test;
2 use Math::GSL::Test qw/:all/;
3 use base q{Test::Class};
5 use Math::GSL::Statistics qw/:all/;
6 use Math::GSL::Sort qw/:all/;
7 use Math::GSL qw/:all/;
10 sub make_fixture : Test(setup) {
26 sub teardown : Test(teardown) {
29 sub GSL_STATS_MEAN : Tests {
30 ok_similar( gsl_stats_mean([2 .. 5], 1, 4), 3.5 );
33 sub GSL_STATS_VARIANCE : Tests {
34 ok_similar( gsl_stats_variance([2 .. 5], 1, 4), 5/3);
37 sub GSL_STATS_SD : Tests {
39 my $x = gsl_stats_sd($self->{data}, 1, 20);
40 ok_similar($x, 3.79750610685209);
43 sub GSL_STATS_ABSDEV : Tests {
45 my $x = gsl_stats_absdev($self->{data},1, 20);
49 sub GSL_STATS_SKEW : Tests {
51 my $x = gsl_stats_skew($self->{data}, 1, 20);
52 ok_similar($x, -0.909355923168064);
55 sub GSL_STATS_KURTOSIS : Tests {
57 my $x = gsl_stats_kurtosis($self->{data}, 1, 20);
58 ok_similar_relative($x, -0.233692524908094);
61 sub GSL_STATS_COVARIANCE : Tests {
63 my $x = gsl_stats_covariance($self->{data}, 1, $self->{datab}, 1, 20);
64 ok_similar_relative($x, 14.5263157894737);
67 sub GSL_STATS_CORRELATION : Tests {
69 my $x = gsl_stats_correlation($self->{data}, 1, $self->{datab}, 1, 20);
70 ok_similar_relative($x, 0.793090350710101);
73 sub GSL_STATS_PVARIANCE : Tests {
75 my $x = gsl_stats_pvariance($self->{data}, 1, 20, $self->{datab}, 1, 20);
76 ok_similar_relative($x, 18.8421052631579);
79 sub GSL_STATS_TTEST : Tests {
81 my $x = gsl_stats_ttest($self->{data}, 1, 20, $self->{datab}, 1, 20);
82 ok_similar_relative($x, -1.45701922702927);
85 sub GSL_STATS_MAX : Tests {
87 my $x = gsl_stats_max($self->{data}, 1, 20);
88 ok_similar_relative($x, 22);
91 sub GSL_STATS_MIN : Tests {
93 my $x = gsl_stats_min($self->{data}, 1, 20);
94 ok_similar_relative($x, 8);
97 sub GSL_STATS_MINMAX : Tests {
99 my ($min, $max) = gsl_stats_minmax($self->{data}, 1, 20);
100 ok_similar_relative($max, 22);
101 ok_similar_relative($min, 8);
104 sub GSL_STATS_MAX_INDEX : Tests {
106 my $x = gsl_stats_max_index($self->{data}, 1, 20);
107 ok_similar_relative($x, 9);
110 sub GSL_STATS_MIN_INDEX : Tests {
112 my $x = gsl_stats_min_index($self->{data}, 1, 20);
113 ok_similar_relative($x, 12);
116 sub GSL_STATS_MINMAX_INDEX : Tests {
118 my ($min, $max) = gsl_stats_minmax_index($self->{data}, 1, 20);
119 ok_similar_relative($min, 12);
120 ok_similar_relative($max, 9);
123 sub GSL_STATS_MEDIAN_FROM_SORTED_DATA_EVEN : Tests {
125 my $sorted = gsl_sort($self->{data}, 1, 20);
126 my $x = gsl_stats_median_from_sorted_data($sorted, 1, 20);
127 ok_similar_relative($x, 18);
130 sub GSL_STATS_MEDIAN_FROM_SORTED_DATA_ODD : Tests {
132 my $sorted = gsl_sort($self->{data}, 1, 20);
133 my $x = gsl_stats_median_from_sorted_data($sorted, 1, 19);
134 ok_similar_relative($x, 18);
137 sub GSL_STATS_QUANTILE_FROM_SORTED_DATA_0 : Tests {
139 my $sorted = gsl_sort($self->{data}, 1, 20);
140 my $x = gsl_stats_quantile_from_sorted_data($sorted, 1, 20, 0);
141 ok_similar_relative($x, 8);
144 sub GSL_STATS_QUANTILE_FROM_SORTED_DATA_100 : Tests {
146 my $sorted = gsl_sort($self->{data}, 1, 20);
147 my $x = gsl_stats_quantile_from_sorted_data($sorted, 1, 20, 1);
148 ok_similar_relative($x, 22);
151 sub GSL_STATS_QUANTILE_FROM_SORTED_DATA_50_EVEN : Tests {
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_similar_relative($x, 18);
158 sub GSL_STATS_QUANTILE_FROM_SORTED_DATA_50_ODD : Tests {
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_similar_relative($x, 18);
165 sub GSL_STATS_LAG1_AUTOCORRELATION : Tests {
169 $numacc3->[0] = 1000000.2 ;
170 for ($i = 1 ; $i < 1000 ; $i += 2)
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_similar_relative($mean, $expected_mean);
183 ok_similar_relative($sd, $expected_sd);
184 ok_similar_relative($lag1, $expected_lag1);
186 Test::Class->runtests;