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
|