File: nmatrix_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 (88 lines) | stat: -rw-r--r-- 4,261 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
require 'test_helper'

class NMatrixStatsTest < GSL::TestCase
  def setup
    @lew = NMatrix.new([200],
      [-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], dtype: :float64
    )

    @rawa = NMatrix.new([14],
      [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], dtype: :float64
    )

    @rawb = NMatrix.new([14],
      [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], dtype: :float64
    )

    @raww = NMatrix.new([14],
      [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], dtype: :float64
    )
  end

  def test_stats
    assert_rel GSL::Stats.mean(@lew), -177.435000000000,    1e-15, 'lew gsl_stats_mean'
    assert_rel GSL::Stats.sd(@lew),    277.332168044316,    1e-15, 'lew gsl_stats_sd'
    assert_rel GSL::Stats.lag1_autocorrelation(@lew), -0.307304800605679, 1e-14, 'lew autocorrelation'

    rel = 1e-10
    rawa_mean = GSL::Stats.mean(@rawa)

    assert_rel GSL::Stats.variance_with_fixed_mean(@rawa, rawa_mean), 0.00113837428571429,
      rel, 'gsl_stats_variance_with_fixed_mean'

    assert_rel GSL::Stats.sd_with_fixed_mean(@rawa, rawa_mean), 0.0337398026922845,
      rel, 'gsl_stats_sd_with_fixed_mean'

    assert_rel GSL::Stats.variance(@rawb),         0.00124956615384615,  rel, 'gsl_stats_variance'
    assert_rel GSL::Stats.sd(@rawa),               0.0350134479659107,   rel, 'gsl_stats_sd'
    assert_rel GSL::Stats.absdev(@rawa),           0.0287571428571429,   rel, 'gsl_stats_absdev'
    assert_rel GSL::Stats.skew(@rawa),             0.0954642051479004,   rel, 'gsl_stats_skew'
    assert_rel GSL::Stats.kurtosis(@rawa),        -1.38583851548909,     rel, 'gsl_stats_kurtosis'
    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 GSL::Stats.max(@rawa), 0.1331, rel, 'gsl_stats_max'
    assert_rel GSL::Stats.min(@rawa), 0.0242, rel, 'gsl_stats_min'

    assert GSL::Stats.max_index(@rawa) == 4, 'gsl_stats_max'
    assert GSL::Stats.min_index(@rawa) == 3, 'gsl_stats_min'

    rawa_sorted = NMatrix.new([@rawa.size], @rawa.sort, dtype: :float64)

    sorted = NMatrix.new([@rawa.size], @rawa.to_a.sort, dtype: :float64)
    assert_rel GSL::Stats.median_from_sorted_data(sorted), 0.07505,
      rel, 'gsl_stats_median_from_sorted_data'

    assert_rel GSL::Stats.median_from_sorted_data(sorted[0..(sorted.size - 2)]), 0.0728,
      rel, 'gsl_stats_median_from_sorted_data'

    #TODO: Expose quantile_from_sorted_data
  end
end