1 package Math
::GSL
::Statistics
::Test
;
2 use base
q{Test::Class};
4 use Math
::GSL
::Statistics qw
/:all/;
5 use Math
::GSL
::Sort qw
/:all/;
6 use Math
::GSL qw
/:all/;
9 sub make_fixture
: Test
(setup
) {
23 sub teardown
: Test
(teardown
) {
26 sub GSL_STATS_MEAN
: Tests
{
27 my $x = gsl_stats_mean
([2,3,4, 5], 1, 4);
31 sub GSL_STATS_VARIANCE
: Tests
{
32 my $x = gsl_stats_variance
([2,3,4, 5], 1, 4);
36 sub GSL_STATS_SD
: Tests
{
38 my $x = gsl_stats_sd
($self->{data
}, 1, 20);
39 ok
($x eq 3.79750610685209);
42 sub GSL_STATS_ABSDEV
: Tests
{
44 my $x = gsl_stats_absdev
($self->{data
},1, 20);
48 sub GSL_STATS_SKEW
: Tests
{
50 my $x = gsl_stats_skew
($self->{data
}, 1, 20);
51 ok
($x eq -0.909355923168064);
54 sub GSL_STATS_KURTOSIS
: Tests
{
56 my $x = gsl_stats_kurtosis
($self->{data
}, 1, 20);
57 ok
(is_similar_relative
($x, -0.233692524908094));
60 sub GSL_STATS_COVARIANCE
: Tests
{
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
{
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
{
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
{
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
{
86 my $x = gsl_stats_max
($self->{data
}, 1, 20);
87 ok
(is_similar_relative
($x, 22));
90 sub GSL_STATS_MIN
: Tests
{
92 my $x = gsl_stats_min
($self->{data
}, 1, 20);
93 ok
(is_similar_relative
($x, 8));
96 sub GSL_STATS_MINMAX
: Tests
{
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
{
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
{
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
{
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
{
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
{
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
{
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
{
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
{
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
{
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
{
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));