File: stats_test.rb

package info (click to toggle)
ruby-gsl 2.1.0.3%2Bdfsg1-2
  • links: PTS, VCS
  • area: main
  • in suites: buster
  • size: 4,988 kB
  • sloc: ansic: 62,105; ruby: 15,859; sh: 19; makefile: 10
file content (122 lines) | stat: -rw-r--r-- 5,305 bytes parent folder | download | duplicates (5)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
require 'test_helper'

class StatsTest < GSL::TestCase

  def test_stats
    lew = GSL::Vector.alloc(
      -213, -564,  -35,  -15,  141,  115, -420, -360,  203, -338, -431,  194,
      -220, -513,  154, -125, -559,   92,  -21, -579,  -52,   99, -543, -175,
       162, -457, -346,  204, -300, -474,  164, -107, -572,   -8,   83, -541,
      -224,  180, -420, -374,  201, -236, -531,   83,   27, -564, -112,  131,
      -507, -254,  199, -311, -495,  143,  -46, -579,  -90,  136, -472, -338,
       202, -287, -477,  169, -124, -568,   17,   48, -568, -135,  162, -430,
      -422,  172,  -74, -577,  -13,   92, -534, -243,  194, -355, -465,  156,
       -81, -578,  -64,  139, -449, -384,  193, -198, -538,  110,  -44, -577,
        -6,   66, -552, -164,  161, -460, -344,  205, -281, -504,  134,  -28,
      -576, -118,  156, -437, -381,  200, -220, -540,   83,   11, -568, -160,
       172, -414, -408,  188, -125, -572,  -32,  139, -492, -321,  205, -262,
      -504,  142,  -83, -574,    0,   48, -571, -106,  137, -501, -266,  190,
      -391, -406,  194, -186, -553,   83,  -13, -577,  -49,  103, -515, -280,
       201,  300, -506,  131,  -45, -578,  -80,  138, -462, -361,  201, -211,
      -554,   32,   74, -533, -235,  187, -372, -442,  182, -147, -566,   25,
        68, -535, -244,  194, -351, -463,  174, -125, -570,   15,   72, -550,
      -190,  172, -424, -385,  198, -218, -536,   96
    )

    mean = lew.mean
    sd   = lew.sd
    lag1 = lew.lag1_autocorrelation

    assert_rel mean, -177.435000000000,    1e-15, 'lew gsl_stats_mean'
    assert_rel sd,    277.332168044316,    1e-15, 'lew gsl_stats_sd'
    assert_rel lag1,   -0.307304800605679, 1e-14, 'lew autocorrelation'

    rel = 1e-10

    rawa = GSL::Vector.alloc(
      0.0421, 0.0941, 0.1064, 0.0242, 0.1331,
      0.0773, 0.0243, 0.0815, 0.1186, 0.0356,
      0.0728, 0.0999, 0.0614, 0.0479
    )

    rawb = GSL::Vector.alloc(
      0.1081, 0.0986, 0.1566, 0.1961, 0.1125,
      0.1942, 0.1079, 0.1021, 0.1583, 0.1673,
      0.1675, 0.1856, 0.1688, 0.1512
    )

    raww = GSL::Vector.alloc(
      0.0000, 0.0000, 0.0000, 3.000, 0.0000,
      1.0000, 1.0000, 1.0000, 0.000, 0.5000,
      7.0000, 5.0000, 4.0000, 0.123
    )

    assert_rel mean = rawa.mean, 0.0728, rel, 'gsl_stats_mean'

    assert_rel rawa.variance_with_fixed_mean(mean), 0.00113837428571429,
      rel, 'gsl_stats_variance_with_fixed_mean'

    assert_rel rawa.sd_with_fixed_mean(mean), 0.0337398026922845,
      rel, 'gsl_stats_sd_with_fixed_mean'

    assert_rel rawb.variance,         0.00124956615384615,  rel, 'gsl_stats_variance'
    assert_rel rawa.sd,               0.0350134479659107,   rel, 'gsl_stats_sd'
    assert_rel rawa.absdev,           0.0287571428571429,   rel, 'gsl_stats_absdev'
    assert_rel rawa.skew,             0.0954642051479004,   rel, 'gsl_stats_skew'
    assert_rel rawa.kurtosis,        -1.38583851548909,     rel, 'gsl_stats_kurtosis'
    assert_rel rawa.wmean(raww),      0.0678111523670601,   rel, 'gsl_stats_wmean'
    assert_rel rawa.wvariance(raww),  0.000769562962860317, rel, 'gsl_stats_wvariance'
    assert_rel rawa.wsd(raww),        0.0277409978706664,   rel, 'gsl_stats_wsd'
    assert_rel rawa.wabsdev(raww),    0.0193205027504008,   rel, 'gsl_stats_wabsdev'
    assert_rel rawa.wskew(raww),     -0.373631000307076,    rel, 'gsl_stats_wskew'
    assert_rel rawa.wkurtosis(raww), -1.48114233353963,     rel, 'gsl_stats_wkurtosis'

    assert_rel GSL::Stats.covariance(rawa, rawb), -0.000139021538461539, rel, 'gsl_stats_covariance'

    if GSL::GSL_VERSION >= '1.9.90'
      assert_rel GSL::Stats.correlation(rawa, rawb), -0.112322712666074171, rel, 'gsl_stats_correlation'
      assert_rel GSL::Stats.pvariance(rawa, rawb),    0.00123775384615385,  rel, 'gsl_stats_pvariance'
      assert_rel GSL::Stats.ttest(rawa, rawb),       -5.67026326985851,     rel, 'gsl_stats_ttest'
    end

    assert_rel rawa.max, 0.1331, rel, 'gsl_stats_max'
    assert_rel rawa.min, 0.0242, rel, 'gsl_stats_min'

    min, max = rawa.minmax
    assert_rel max, 0.1331, rel, 'gsl_stats_minmax: max'
    assert_rel min, 0.0242, rel, 'gsl_stats_minmax: min'

    assert rawa.max_index == 4, 'gsl_stats_max_index'
    assert rawa.min_index == 3, 'gsl_stats_min_index'

    min_index, max_index = rawa.minmax_index
    assert max_index == 4, 'gsl_stats_minmax_index: max'
    assert min_index == 3, 'gsl_stats_minmax_index: min'

    rawa.sort!

    assert_rel rawa.median_from_sorted_data, 0.07505,
      rel, 'gsl_stats_median_from_sorted_data'

    assert_rel rawa.subvector(0, rawa.size - 1).median_from_sorted_data, 0.0728,
      rel, 'gsl_stats_median_from_sorted_data'

    assert_rel rawa.quantile_from_sorted_data(0.0), 0.0242,
      rel, 'gsl_stats_quantile_from_sorted_data'

    assert_rel rawa.quantile_from_sorted_data(1.0), 0.1331,
      rel, 'gsl_stats_quantile_from_sorted_data (100)'

    assert_rel rawa.quantile_from_sorted_data(0.5), 0.07505,
      rel, 'gsl_stats_quantile_from_sorted_data (50even)'

    assert_rel rawa.subvector(0, rawa.size-1).quantile_from_sorted_data(0.5), 0.0728,
      rel, 'gsl_stats_quantile_from_sorted_data (50odd)'
  end

  def test_variance_with_fixed_mean
    v = GSL::Vector[1..8]
    assert_raises(ArgumentError, 'check for no args') { v.variance_with_fixed_mean }
  end

end