statsample 1.4.3 → 1.5.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (82) hide show
  1. checksums.yaml +4 -4
  2. data/History.txt +8 -0
  3. data/benchmarks/correlation_matrix_15_variables.rb +1 -1
  4. data/benchmarks/correlation_matrix_5_variables.rb +1 -1
  5. data/benchmarks/correlation_matrix_methods/correlation_matrix.rb +2 -2
  6. data/examples/dataset.rb +2 -2
  7. data/examples/icc.rb +1 -1
  8. data/examples/levene.rb +2 -2
  9. data/examples/parallel_analysis.rb +1 -1
  10. data/examples/u_test.rb +2 -2
  11. data/examples/vector.rb +1 -1
  12. data/examples/velicer_map_test.rb +1 -1
  13. data/lib/statsample.rb +30 -4
  14. data/lib/statsample/anova/oneway.rb +3 -3
  15. data/lib/statsample/anova/twoway.rb +3 -3
  16. data/lib/statsample/bivariate.rb +7 -7
  17. data/lib/statsample/bivariate/pearson.rb +2 -2
  18. data/lib/statsample/converter/csv.rb +1 -1
  19. data/lib/statsample/converters.rb +7 -7
  20. data/lib/statsample/dataset.rb +8 -8
  21. data/lib/statsample/dominanceanalysis.rb +4 -4
  22. data/lib/statsample/dominanceanalysis/bootstrap.rb +8 -8
  23. data/lib/statsample/factor.rb +2 -4
  24. data/lib/statsample/factor/map.rb +2 -1
  25. data/lib/statsample/factor/parallelanalysis.rb +2 -2
  26. data/lib/statsample/factor/pca.rb +2 -2
  27. data/lib/statsample/factor/principalaxis.rb +2 -2
  28. data/lib/statsample/graph/boxplot.rb +4 -4
  29. data/lib/statsample/graph/histogram.rb +2 -2
  30. data/lib/statsample/graph/scatterplot.rb +4 -4
  31. data/lib/statsample/matrix.rb +20 -6
  32. data/lib/statsample/regression.rb +2 -2
  33. data/lib/statsample/regression/multiple.rb +3 -3
  34. data/lib/statsample/regression/multiple/alglibengine.rb +5 -5
  35. data/lib/statsample/regression/multiple/baseengine.rb +3 -3
  36. data/lib/statsample/regression/multiple/gslengine.rb +5 -5
  37. data/lib/statsample/regression/multiple/rubyengine.rb +4 -4
  38. data/lib/statsample/reliability/icc.rb +1 -1
  39. data/lib/statsample/reliability/multiscaleanalysis.rb +4 -4
  40. data/lib/statsample/reliability/scaleanalysis.rb +6 -6
  41. data/lib/statsample/reliability/skillscaleanalysis.rb +1 -1
  42. data/lib/statsample/resample.rb +1 -1
  43. data/lib/statsample/shorthand.rb +1 -1
  44. data/lib/statsample/test/bartlettsphericity.rb +1 -1
  45. data/lib/statsample/test/levene.rb +4 -4
  46. data/lib/statsample/test/t.rb +3 -3
  47. data/lib/statsample/test/umannwhitney.rb +2 -2
  48. data/lib/statsample/vector.rb +103 -80
  49. data/lib/statsample/vector/gsl.rb +16 -16
  50. data/lib/statsample/version.rb +1 -1
  51. data/test/test_analysis.rb +1 -1
  52. data/test/test_anova_contrast.rb +4 -4
  53. data/test/test_anovatwowaywithdataset.rb +1 -1
  54. data/test/test_anovawithvectors.rb +6 -6
  55. data/test/test_awesome_print_bug.rb +1 -1
  56. data/test/test_bartlettsphericity.rb +3 -3
  57. data/test/test_bivariate.rb +38 -38
  58. data/test/test_crosstab.rb +2 -2
  59. data/test/test_csv.rb +6 -6
  60. data/test/test_dataset.rb +79 -79
  61. data/test/test_factor.rb +55 -49
  62. data/test/test_factor_pa.rb +4 -4
  63. data/test/test_ggobi.rb +3 -3
  64. data/test/test_gsl.rb +3 -3
  65. data/test/test_histogram.rb +3 -3
  66. data/test/test_matrix.rb +5 -5
  67. data/test/test_multiset.rb +19 -19
  68. data/test/test_regression.rb +27 -27
  69. data/test/test_reliability.rb +14 -14
  70. data/test/test_reliability_icc.rb +7 -7
  71. data/test/test_reliability_skillscale.rb +6 -6
  72. data/test/test_resample.rb +1 -1
  73. data/test/test_rserve_extension.rb +4 -4
  74. data/test/test_statistics.rb +5 -5
  75. data/test/test_stest.rb +8 -8
  76. data/test/test_stratified.rb +3 -3
  77. data/test/test_test_t.rb +5 -5
  78. data/test/test_umannwhitney.rb +2 -2
  79. data/test/test_vector.rb +153 -119
  80. data/test/test_wilcoxonsignedrank.rb +4 -4
  81. data/test/test_xls.rb +6 -6
  82. metadata +3 -53
@@ -5,10 +5,10 @@ $reliability_icc = nil
5
5
  class StatsampleReliabilityIccTestCase < Minitest::Test
6
6
  context Statsample::Reliability::ICC do
7
7
  setup do
8
- a = [9, 6, 8, 7, 10, 6].to_scale
9
- b = [2, 1, 4, 1, 5, 2].to_scale
10
- c = [5, 3, 6, 2, 6, 4].to_scale
11
- d = [8, 2, 8, 6, 9, 7].to_scale
8
+ a = [9, 6, 8, 7, 10, 6].to_numeric
9
+ b = [2, 1, 4, 1, 5, 2].to_numeric
10
+ c = [5, 3, 6, 2, 6, 4].to_numeric
11
+ d = [8, 2, 8, 6, 9, 7].to_numeric
12
12
  @ds = { 'a' => a, 'b' => b, 'c' => c, 'd' => d }.to_dataset
13
13
  @icc = Statsample::Reliability::ICC.new(@ds)
14
14
  end
@@ -122,7 +122,7 @@ class StatsampleReliabilityIccTestCase < Minitest::Test
122
122
  setup do
123
123
  if $reliability_icc.nil?
124
124
  size = 100
125
- a = size.times.map { rand(10) }.to_scale
125
+ a = size.times.map { rand(10) }.to_numeric
126
126
  b = a.recode { |i| i + rand(4) - 2 }
127
127
  c = a.recode { |i| i + rand(4) - 2 }
128
128
  d = a.recode { |i| i + rand(4) - 2 }
@@ -182,8 +182,8 @@ class StatsampleReliabilityIccTestCase < Minitest::Test
182
182
  should 'bounds be equal' do
183
183
  @icc.type = t
184
184
  @r_icc = @iccs[t.to_s]
185
- assert_in_delta(@r_icc['lbound'], @icc.lbound)
186
- assert_in_delta(@r_icc['ubound'], @icc.ubound)
185
+ assert_in_delta(@r_icc['lbound'], @icc.lbound, 0.1)
186
+ assert_in_delta(@r_icc['ubound'], @icc.ubound, 0.1)
187
187
  end
188
188
  should 'summary generated' do
189
189
  assert(@icc.summary.size > 0)
@@ -5,7 +5,7 @@ class StatsampleReliabilitySkillScaleTestCase < Minitest::Test
5
5
  setup do
6
6
  options = %w(a b c d e)
7
7
  cases = 20
8
- @id = cases.times.map { |v| v }.to_scale
8
+ @id = cases.times.map { |v| v }.to_numeric
9
9
  @a = cases.times.map { options[rand(5)] }.to_vector
10
10
  @b = cases.times.map { options[rand(5)] }.to_vector
11
11
  @c = cases.times.map { options[rand(5)] }.to_vector
@@ -17,11 +17,11 @@ class StatsampleReliabilitySkillScaleTestCase < Minitest::Test
17
17
  @ds = { 'id' => @id, 'a' => @a, 'b' => @b, 'c' => @c, 'd' => @d, 'e' => @e }.to_dataset
18
18
  @key = { 'a' => 'a', 'b' => options[rand(5)], 'c' => options[rand(5)], 'd' => options[rand(5)], 'e' => options[rand(5)] }
19
19
  @ssa = Statsample::Reliability::SkillScaleAnalysis.new(@ds, @key)
20
- @ac = @a.map { |v| v == @key['a'] ? 1 : 0 }.to_scale
21
- @bc = @b.map { |v| v == @key['b'] ? 1 : 0 }.to_scale
22
- @cc = @c.map { |v| v == @key['c'] ? 1 : 0 }.to_scale
23
- @dc = @d.map { |v| v == @key['d'] ? 1 : 0 }.to_scale
24
- @ec = @e.map { |v| v.nil? ? nil : (v == @key['e'] ? 1 : 0) }.to_scale
20
+ @ac = @a.map { |v| v == @key['a'] ? 1 : 0 }.to_numeric
21
+ @bc = @b.map { |v| v == @key['b'] ? 1 : 0 }.to_numeric
22
+ @cc = @c.map { |v| v == @key['c'] ? 1 : 0 }.to_numeric
23
+ @dc = @d.map { |v| v == @key['d'] ? 1 : 0 }.to_numeric
24
+ @ec = @e.map { |v| v.nil? ? nil : (v == @key['e'] ? 1 : 0) }.to_numeric
25
25
  end
26
26
  should 'return proper corrected dataset' do
27
27
  cds = { 'id' => @id, 'a' => @ac, 'b' => @bc, 'c' => @cc, 'd' => @dc, 'e' => @ec }.to_dataset
@@ -17,7 +17,7 @@ class StatsampleResampleTestCase < Minitest::Test
17
17
  Statsample::Resample.generate(20, 1, 10).count(1)
18
18
  }
19
19
  assert_equal(400, r.size)
20
- v = Statsample::Vector.new(r, :scale)
20
+ v = Statsample::Vector.new(r, :numeric)
21
21
  a = v.count { |x| x > 3 }
22
22
  assert(a >= 30 && a <= 70)
23
23
  end
@@ -12,7 +12,7 @@ begin
12
12
  @r.close
13
13
  end
14
14
  should 'return a valid rexp for numeric vector' do
15
- a = 100.times.map { |i| rand > 0.9 ? nil : i + rand }.to_scale
15
+ a = 100.times.map { |i| rand > 0.9 ? nil : i + rand }.to_numeric
16
16
  rexp = a.to_REXP
17
17
  assert(rexp.is_a? Rserve::REXP::Double)
18
18
  assert_equal(rexp.to_ruby, a.data_with_nils)
@@ -20,9 +20,9 @@ begin
20
20
  assert_equal(a.data_with_nils, @r.eval('a').to_ruby)
21
21
  end
22
22
  should 'return a valid rserve dataframe for statsample datasets' do
23
- a = 100.times.map { |i| rand > 0.9 ? nil : i + rand }.to_scale
24
- b = 100.times.map { |i| rand > 0.9 ? nil : i + rand }.to_scale
25
- c = 100.times.map { |i| rand > 0.9 ? nil : i + rand }.to_scale
23
+ a = 100.times.map { |i| rand > 0.9 ? nil : i + rand }.to_numeric
24
+ b = 100.times.map { |i| rand > 0.9 ? nil : i + rand }.to_numeric
25
+ c = 100.times.map { |i| rand > 0.9 ? nil : i + rand }.to_numeric
26
26
  ds = { 'a' => a, 'b' => b, 'c' => c }.to_dataset
27
27
  rexp = ds.to_REXP
28
28
  assert(rexp.is_a? Rserve::REXP::GenericVector)
@@ -32,7 +32,7 @@ class StatsampleStatisicsTestCase < Minitest::Test
32
32
  end
33
33
 
34
34
  def test_estimation_mean
35
- v = ([42] * 23 + [41] * 4 + [36] * 1 + [32] * 1 + [29] * 1 + [27] * 2 + [23] * 1 + [19] * 1 + [16] * 2 + [15] * 2 + [14, 11, 10, 9, 7] + [6] * 3 + [5] * 2 + [4, 3]).to_vector(:scale)
35
+ v = ([42] * 23 + [41] * 4 + [36] * 1 + [32] * 1 + [29] * 1 + [27] * 2 + [23] * 1 + [19] * 1 + [16] * 2 + [15] * 2 + [14, 11, 10, 9, 7] + [6] * 3 + [5] * 2 + [4, 3]).to_vector(:numeric)
36
36
  assert_equal(50, v.size)
37
37
  assert_equal(1471, v.sum)
38
38
  # limits=Statsample::SRS.mean_confidence_interval_z(v.mean(), v.sds(), v.size,676,0.80)
@@ -57,17 +57,17 @@ class StatsampleStatisicsTestCase < Minitest::Test
57
57
 
58
58
  def test_ml
59
59
  if true
60
- # real=[1,1,1,1].to_vector(:scale)
60
+ # real=[1,1,1,1].to_vector(:numeric)
61
61
 
62
- # pred=[0.0001,0.0001,0.0001,0.0001].to_vector(:scale)
62
+ # pred=[0.0001,0.0001,0.0001,0.0001].to_vector(:numeric)
63
63
  # puts Statsample::Bivariate.maximum_likehood_dichotomic(pred,real)
64
64
 
65
65
  end
66
66
  end
67
67
 
68
68
  def test_simple_linear_regression
69
- a = [1, 2, 3, 4, 5, 6].to_vector(:scale)
70
- b = [6, 2, 4, 10, 12, 8].to_vector(:scale)
69
+ a = [1, 2, 3, 4, 5, 6].to_vector(:numeric)
70
+ b = [6, 2, 4, 10, 12, 8].to_vector(:numeric)
71
71
  reg = Statsample::Regression::Simple.new_from_vectors(a, b)
72
72
  assert_in_delta((reg.ssr + reg.sse).to_f, reg.sst, 0.001)
73
73
  assert_in_delta(Statsample::Bivariate.pearson(a, b), reg.r, 0.001)
@@ -24,25 +24,25 @@ class StatsampleTestTestCase < Minitest::Test
24
24
  end
25
25
 
26
26
  def test_u_mannwhitney
27
- a = [1, 2, 3, 4, 5, 6].to_scale
28
- b = [0, 5, 7, 9, 10, 11].to_scale
27
+ a = [1, 2, 3, 4, 5, 6].to_numeric
28
+ b = [0, 5, 7, 9, 10, 11].to_numeric
29
29
  assert_equal(7.5, Statsample::Test.u_mannwhitney(a, b).u)
30
30
  assert_equal(7.5, Statsample::Test.u_mannwhitney(b, a).u)
31
- a = [1, 7, 8, 9, 10, 11].to_scale
32
- b = [2, 3, 4, 5, 6, 12].to_scale
31
+ a = [1, 7, 8, 9, 10, 11].to_numeric
32
+ b = [2, 3, 4, 5, 6, 12].to_numeric
33
33
  assert_equal(11, Statsample::Test.u_mannwhitney(a, b).u)
34
34
  end
35
35
 
36
36
  def test_levene
37
- a = [1, 2, 3, 4, 5, 6, 7, 8, 100, 10].to_scale
38
- b = [30, 40, 50, 60, 70, 80, 90, 100, 110, 120].to_scale
37
+ a = [1, 2, 3, 4, 5, 6, 7, 8, 100, 10].to_numeric
38
+ b = [30, 40, 50, 60, 70, 80, 90, 100, 110, 120].to_numeric
39
39
  levene = Statsample::Test::Levene.new([a, b])
40
40
  assert_levene(levene)
41
41
  end
42
42
 
43
43
  def test_levene_dataset
44
- a = [1, 2, 3, 4, 5, 6, 7, 8, 100, 10].to_scale
45
- b = [30, 40, 50, 60, 70, 80, 90, 100, 110, 120].to_scale
44
+ a = [1, 2, 3, 4, 5, 6, 7, 8, 100, 10].to_numeric
45
+ b = [30, 40, 50, 60, 70, 80, 90, 100, 110, 120].to_numeric
46
46
  ds = { 'a' => a, 'b' => b }.to_dataset
47
47
  levene = Statsample::Test::Levene.new(ds)
48
48
  assert_levene(levene)
@@ -9,9 +9,9 @@ class StatsampleStratifiedTestCase < Minitest::Test
9
9
  a = [10, 20, 30, 40, 50]
10
10
  b = [110, 120, 130, 140]
11
11
  pop = a + b
12
- av = a.to_vector(:scale)
13
- bv = b.to_vector(:scale)
14
- popv = pop.to_vector(:scale)
12
+ av = a.to_vector(:numeric)
13
+ bv = b.to_vector(:numeric)
14
+ popv = pop.to_vector(:numeric)
15
15
  assert_equal(popv.mean, Statsample::StratifiedSample.mean(av, bv))
16
16
  end
17
17
  end
@@ -4,8 +4,8 @@ class StatsampleTestTTestCase < Minitest::Test
4
4
  include Math
5
5
  context T do
6
6
  setup do
7
- @a = [30.02, 29.99, 30.11, 29.97, 30.01, 29.99].to_scale
8
- @b = [29.89, 29.93, 29.72, 29.98, 30.02, 29.98].to_scale
7
+ @a = [30.02, 29.99, 30.11, 29.97, 30.01, 29.99].to_numeric
8
+ @b = [29.89, 29.93, 29.72, 29.98, 30.02, 29.98].to_numeric
9
9
  @x1 = @a.mean
10
10
  @x2 = @b.mean
11
11
  @s1 = @a.sd
@@ -20,8 +20,8 @@ class StatsampleTestTTestCase < Minitest::Test
20
20
  assert(t.summary.size > 0)
21
21
  end
22
22
  should 'calculate correctly t for one sample' do
23
- t1 = [6, 4, 6, 7, 4, 5, 5, 12, 6, 1].to_scale
24
- t2 = [9, 6, 5, 10, 10, 8, 7, 10, 6, 5].to_scale
23
+ t1 = [6, 4, 6, 7, 4, 5, 5, 12, 6, 1].to_numeric
24
+ t2 = [9, 6, 5, 10, 10, 8, 7, 10, 6, 5].to_numeric
25
25
  d = t1 - t2
26
26
  t = Statsample::Test::T::OneSample.new(d)
27
27
  assert_in_delta(-2.631, t.t, 0.001)
@@ -48,7 +48,7 @@ class StatsampleTestTTestCase < Minitest::Test
48
48
  assert_in_delta(0.09095, t.probability_not_equal_variance, 0.001)
49
49
  end
50
50
  should 'be the same using shorthand' do
51
- v = 100.times.map { rand(100) }.to_scale
51
+ v = 100.times.map { rand(100) }.to_numeric
52
52
  assert_equal(Statsample::Test.t_one_sample(v).t, T::OneSample.new(v).t)
53
53
  end
54
54
  should 'calculate all values for one sample T test' do
@@ -4,8 +4,8 @@ class StatsampleUMannWhitneyTestCase < Minitest::Test
4
4
  include Statsample::Test
5
5
  context Statsample::Test::UMannWhitney do
6
6
  setup do
7
- @v1 = [1, 2, 3, 4, 7, 8, 9, 10, 14, 15].to_scale
8
- @v2 = [5, 6, 11, 12, 13, 16, 17, 18, 19].to_scale
7
+ @v1 = [1, 2, 3, 4, 7, 8, 9, 10, 14, 15].to_numeric
8
+ @v2 = [5, 6, 11, 12, 13, 16, 17, 18, 19].to_numeric
9
9
  @u = Statsample::Test::UMannWhitney.new(@v1, @v2)
10
10
  end
11
11
  should 'have same result using class or Test#u_mannwhitney' do
@@ -4,7 +4,7 @@ class StatsampleTestVector < Minitest::Test
4
4
  include Statsample::Shorthand
5
5
 
6
6
  def setup
7
- @c = Statsample::Vector.new([5, 5, 5, 5, 5, 6, 6, 7, 8, 9, 10, 1, 2, 3, 4, nil, -99, -99], :nominal)
7
+ @c = Statsample::Vector.new([5, 5, 5, 5, 5, 6, 6, 7, 8, 9, 10, 1, 2, 3, 4, nil, -99, -99], :object)
8
8
  @c.name = 'Test Vector'
9
9
  @c.missing_values = [-99]
10
10
  end
@@ -19,8 +19,8 @@ class StatsampleTestVector < Minitest::Test
19
19
  context Statsample do
20
20
  setup do
21
21
  @sample = 100
22
- @a = @sample.times.map { |i| (i + rand(10)) % 10 == 0 ? nil : rand(100) }.to_scale
23
- @b = @sample.times.map { |i| (i + rand(10)) % 10 == 0 ? nil : rand(100) }.to_scale
22
+ @a = @sample.times.map { |i| (i + rand(10)) % 10 == 0 ? nil : rand(100) }.to_numeric
23
+ @b = @sample.times.map { |i| (i + rand(10)) % 10 == 0 ? nil : rand(100) }.to_numeric
24
24
  @correct_a = []
25
25
  @correct_b = []
26
26
  @a.each_with_index do |_v, i|
@@ -29,8 +29,8 @@ class StatsampleTestVector < Minitest::Test
29
29
  @correct_b.push(@b[i])
30
30
  end
31
31
  end
32
- @correct_a = @correct_a.to_scale
33
- @correct_b = @correct_b.to_scale
32
+ @correct_a = @correct_a.to_numeric
33
+ @correct_b = @correct_b.to_numeric
34
34
 
35
35
  @common = lambda do |av, bv|
36
36
  assert_equal(@correct_a, av, 'A no es esperado')
@@ -58,7 +58,7 @@ class StatsampleTestVector < Minitest::Test
58
58
  end
59
59
  context Statsample::Vector do
60
60
  setup do
61
- @c = Statsample::Vector.new([5, 5, 5, 5, 5, 6, 6, 7, 8, 9, 10, 1, 2, 3, 4, nil, -99, -99], :nominal)
61
+ @c = Statsample::Vector.new([5, 5, 5, 5, 5, 6, 6, 7, 8, 9, 10, 1, 2, 3, 4, nil, -99, -99], :object)
62
62
  @c.name = 'Test Vector'
63
63
  @c.missing_values = [-99]
64
64
  end
@@ -71,7 +71,7 @@ class StatsampleTestVector < Minitest::Test
71
71
 
72
72
  context 'using matrix operations' do
73
73
  setup do
74
- @a = [1, 2, 3, 4, 5].to_scale
74
+ @a = [1, 2, 3, 4, 5].to_numeric
75
75
  end
76
76
  should 'to_matrix returns a matrix with 1 row' do
77
77
  mh = Matrix[[1, 2, 3, 4, 5]]
@@ -83,22 +83,22 @@ class StatsampleTestVector < Minitest::Test
83
83
  end
84
84
  should 'returns valid submatrixes' do
85
85
  # 3*4 + 2*5 = 22
86
- a = [3, 2].to_vector(:scale)
87
- b = [4, 5].to_vector(:scale)
86
+ a = [3, 2].to_vector(:numeric)
87
+ b = [4, 5].to_vector(:numeric)
88
88
  assert_equal(22, (a.to_matrix * b.to_matrix(:vertical))[0, 0])
89
89
  end
90
90
  end
91
91
  context 'when initializing' do
92
92
  setup do
93
93
  @data = (10.times.map { rand(100) }) + [nil]
94
- @original = Statsample::Vector.new(@data, :scale)
94
+ @original = Statsample::Vector.new(@data, :numeric)
95
95
  end
96
96
  should 'be the sample using []' do
97
97
  second = Statsample::Vector[*@data]
98
98
  assert_equal(@original, second)
99
99
  end
100
100
  should '[] returns same results as R-c()' do
101
- reference = [0, 4, 5, 6, 10].to_scale
101
+ reference = [0, 4, 5, 6, 10].to_numeric
102
102
  assert_equal(reference, Statsample::Vector[0, 4, 5, 6, 10])
103
103
  assert_equal(reference, Statsample::Vector[0, 4..6, 10])
104
104
  assert_equal(reference, Statsample::Vector[[0], [4, 5, 6], [10]])
@@ -107,36 +107,82 @@ class StatsampleTestVector < Minitest::Test
107
107
  assert_equal(reference, Statsample::Vector[[0], [4, 5, 6].to_vector, [10]])
108
108
  end
109
109
  should 'be the same usign #to_vector' do
110
- lazy1 = @data.to_vector(:scale)
110
+ lazy1 = @data.to_vector(:numeric)
111
111
  assert_equal(@original, lazy1)
112
112
  end
113
- should 'be the same using #to_scale' do
114
- lazy2 = @data.to_scale
113
+ should 'be the same using #to_numeric' do
114
+ lazy2 = @data.to_numeric
115
115
  assert_equal(@original, lazy2)
116
- assert_equal(:scale, lazy2.type)
116
+ assert_equal(:numeric, lazy2.type)
117
117
  assert_equal(@data.find_all { |v| !v.nil? }, lazy2.valid_data)
118
118
  end
119
- should 'could use new_scale with size only' do
120
- v1 = 10.times.map { nil }.to_scale
121
- v2 = Statsample::Vector.new_scale(10)
119
+ should 'could use new_numeric with size only' do
120
+ v1 = 10.times.map { nil }.to_numeric
121
+ v2 = Statsample::Vector.new_numeric(10)
122
122
  assert_equal(v1, v2)
123
123
  end
124
- should 'could use new_scale with size and value' do
124
+ should 'could use new_numeric with size and value' do
125
125
  a = rand
126
- v1 = 10.times.map { a }.to_scale
127
- v2 = Statsample::Vector.new_scale(10, a)
126
+ v1 = 10.times.map { a }.to_numeric
127
+ v2 = Statsample::Vector.new_numeric(10, a)
128
128
  assert_equal(v1, v2)
129
129
  end
130
- should 'could use new_scale with func' do
131
- v1 = 10.times.map { |i| i * 2 }.to_scale
132
- v2 = Statsample::Vector.new_scale(10) { |i| i * 2 }
130
+ should 'could use new_numeric with func' do
131
+ v1 = 10.times.map { |i| i * 2 }.to_numeric
132
+ v2 = Statsample::Vector.new_numeric(10) { |i| i * 2 }
133
133
  assert_equal(v1, v2)
134
134
  end
135
135
  end
136
136
 
137
+ context "new types :numeric and :object" do
138
+ should "set default type of vector to :object" do
139
+ v = Statsample::Vector.new [1,2,3,4,5]
140
+ assert_equal(:object, v.type)
141
+ end
142
+
143
+ should "initialize Vector with :numeric type" do
144
+ v = Statsample::Vector.new [1,2,3,4,5,nil], :numeric
145
+ assert_equal(:numeric, v.type)
146
+ assert_equal([1,2,3,4,5], v.valid_data)
147
+ end
148
+
149
+ should "show a warning when initializing with :nominal, :numeric or :ordinal" do
150
+ assert_output(nil,"WARNING: nominal has been deprecated. Use :object instead.\n") do
151
+ Statsample::Vector.new [1,2,3,4,5,nil,'hello'], :nominal
152
+ end
153
+
154
+ assert_output(nil,"WARNING: scale has been deprecated. Use :numeric instead.\n") do
155
+ Statsample::Vector.new [1,2,3,4,nil,5], :scale
156
+ end
157
+
158
+ assert_output(nil,"WARNING: ordinal has been deprecated. Use :numeric instead.\n") do
159
+ Statsample::Vector.new [1,2,3,4,5], :ordinal
160
+ end
161
+
162
+ assert_output(nil,"WARNING: .new_scale has been deprecated. Use .new_numeric instead.\n") do
163
+ Statsample::Vector.new_scale 10, 1
164
+ end
165
+ end
166
+
167
+ should "test that new shorthands work" do
168
+ numeric = Statsample::Vector.new([1,2,3,4,nil,5], :numeric)
169
+ assert_equal(numeric, [1,2,3,4,nil,5].to_numeric)
170
+ assert_equal(numeric, [1,2,3,4,nil,5].to_vector(:numeric))
171
+
172
+ obj = Statsample::Vector.new([1,2,3,4,'one','two'], :object)
173
+ assert_equal(obj, [1,2,3,4,'one','two'].to_vector(:object))
174
+ end
175
+
176
+ should "test that old shorthands raise warnings" do
177
+ assert_output(nil,"WARNING: to_scale has been deprecated. Use to_numeric instead.\n") do
178
+ [1,2,3,4,nil,5].to_scale
179
+ end
180
+ end
181
+ end
182
+
137
183
  context '#split_by_separator' do
138
184
  setup do
139
- @a = Statsample::Vector.new(['a', 'a,b', 'c,d', 'a,d', 10, nil], :nominal)
185
+ @a = Statsample::Vector.new(['a', 'a,b', 'c,d', 'a,d', 10, nil], :object)
140
186
  @b = @a.split_by_separator(',')
141
187
  end
142
188
  should 'returns a Hash' do
@@ -157,17 +203,17 @@ class StatsampleTestVector < Minitest::Test
157
203
  assert_equal({ 'a' => 3, 'b' => 1, 'c' => 1, 'd' => 2, 10 => 1 }, @a.split_by_separator_freq)
158
204
  end
159
205
  should 'using a different separator give the same values' do
160
- a = Statsample::Vector.new(['a', 'a*b', 'c*d', 'a*d', 10, nil], :nominal)
206
+ a = Statsample::Vector.new(['a', 'a*b', 'c*d', 'a*d', 10, nil], :object)
161
207
  b = a.split_by_separator('*')
162
208
  assert_counting_tokens(b)
163
209
  end
164
210
  end
165
211
  should 'return correct median_absolute_deviation' do
166
- a = [1, 1, 2, 2, 4, 6, 9].to_scale
212
+ a = [1, 1, 2, 2, 4, 6, 9].to_numeric
167
213
  assert_equal(1, a.median_absolute_deviation)
168
214
  end
169
215
  should 'return correct histogram' do
170
- a = 10.times.map { |v| v }.to_scale
216
+ a = 10.times.map { |v| v }.to_numeric
171
217
  hist = a.histogram(2)
172
218
  assert_equal([5, 5], hist.bin)
173
219
  3.times do |i|
@@ -178,8 +224,8 @@ class StatsampleTestVector < Minitest::Test
178
224
  @c.name == 'Test Vector'
179
225
  end
180
226
  should 'without explicit name, returns vector with succesive numbers' do
181
- a = 10.times.map { rand(100) }.to_scale
182
- b = 10.times.map { rand(100) }.to_scale
227
+ a = 10.times.map { rand(100) }.to_numeric
228
+ b = 10.times.map { rand(100) }.to_numeric
183
229
  assert_match(/Vector \d+/, a.name)
184
230
  a.name =~ /Vector (\d+)/
185
231
  next_number = Regexp.last_match(1).to_i + 1
@@ -205,7 +251,7 @@ class StatsampleTestVector < Minitest::Test
205
251
  assert_equal(exp2, exp)
206
252
  end
207
253
  should '#product returns the * of all values' do
208
- a = [1, 2, 3, 4, 5].to_vector(:scale)
254
+ a = [1, 2, 3, 4, 5].to_vector(:numeric)
209
255
  assert_equal(120, a.product)
210
256
  end
211
257
 
@@ -248,7 +294,7 @@ class StatsampleTestVector < Minitest::Test
248
294
 
249
295
  should 'GSL::Vector based should push correcty' do
250
296
  if Statsample.has_gsl?
251
- v = GSL::Vector[1, 2, 3, 4, 5].to_scale
297
+ v = GSL::Vector[1, 2, 3, 4, 5].to_numeric
252
298
  v.push(nil)
253
299
  assert_equal([1, 2, 3, 4, 5, nil], v.to_a)
254
300
  assert(v.flawed?)
@@ -258,36 +304,32 @@ class StatsampleTestVector < Minitest::Test
258
304
  end
259
305
 
260
306
  should 'split correctly' do
261
- a = Statsample::Vector.new(['a', 'a,b', 'c,d', 'a,d', 'd', 10, nil], :nominal)
307
+ a = Statsample::Vector.new(['a', 'a,b', 'c,d', 'a,d', 'd', 10, nil], :object)
262
308
  assert_equal([%w(a), %w(a b), %w(c d), %w(a d), %w(d), [10], nil], a.splitted)
263
309
  end
264
310
  should 'multiply correct for scalar' do
265
- a = [1, 2, 3].to_scale
266
- assert_equal([5, 10, 15].to_scale, a * 5)
311
+ a = [1, 2, 3].to_numeric
312
+ assert_equal([5, 10, 15].to_numeric, a * 5)
267
313
  end
268
314
  should 'multiply correct with other vector' do
269
- a = [1, 2, 3].to_scale
270
- b = [2, 4, 6].to_scale
315
+ a = [1, 2, 3].to_numeric
316
+ b = [2, 4, 6].to_numeric
271
317
 
272
- assert_equal([2, 8, 18].to_scale, a * b)
318
+ assert_equal([2, 8, 18].to_numeric, a * b)
273
319
  end
274
320
  should 'sum correct for scalar' do
275
- a = [1, 2, 3].to_scale
276
- assert_equal([11, 12, 13].to_scale, a + 10)
321
+ a = [1, 2, 3].to_numeric
322
+ assert_equal([11, 12, 13].to_numeric, a + 10)
277
323
  end
278
324
 
279
- should 'raise NoMethodError when method requires ordinal and vector is nominal' do
280
- @c.type = :nominal
325
+ should 'raise NoMethodError when method requires numeric and vector is object' do
326
+ @c.type = :object
281
327
  assert_raise(::NoMethodError) { @c.median }
282
328
  end
283
329
 
284
- should 'raise NoMethodError when method requires scalar and vector is ordinal' do
285
- @c.type = :ordinal
286
- assert_raise(::NoMethodError) { @c.mean }
287
- end
288
330
  should 'jacknife correctly with named method' do
289
331
  # First example
290
- a = [1, 2, 3, 4].to_scale
332
+ a = [1, 2, 3, 4].to_numeric
291
333
  ds = a.jacknife(:mean)
292
334
  assert_equal(a.mean, ds[:mean].mean)
293
335
  ds = a.jacknife([:mean, :sd])
@@ -296,9 +338,9 @@ class StatsampleTestVector < Minitest::Test
296
338
  end
297
339
  should 'jacknife correctly with custom method' do
298
340
  # Second example
299
- a = [17.23, 18.71, 13.93, 18.81, 15.78, 11.29, 14.91, 13.39, 18.21, 11.57, 14.28, 10.94, 18.83, 15.52, 13.45, 15.25].to_scale
341
+ a = [17.23, 18.71, 13.93, 18.81, 15.78, 11.29, 14.91, 13.39, 18.21, 11.57, 14.28, 10.94, 18.83, 15.52, 13.45, 15.25].to_numeric
300
342
  ds = a.jacknife(log_s2: ->(v) { Math.log(v.variance) })
301
- exp = [1.605, 2.972, 1.151, 3.097, 0.998, 3.308, 0.942, 1.393, 2.416, 2.951, 1.043, 3.806, 3.122, 0.958, 1.362, 0.937].to_scale
343
+ exp = [1.605, 2.972, 1.151, 3.097, 0.998, 3.308, 0.942, 1.393, 2.416, 2.951, 1.043, 3.806, 3.122, 0.958, 1.362, 0.937].to_numeric
302
344
 
303
345
  assert_similar_vector(exp, ds[:log_s2], 0.001)
304
346
  assert_in_delta(2.00389, ds[:log_s2].mean, 0.00001)
@@ -308,7 +350,7 @@ class StatsampleTestVector < Minitest::Test
308
350
  a = rnorm(6)
309
351
  ds = a.jacknife(:mean, 2)
310
352
  mean = a.mean
311
- exp = [3 * mean - 2 * (a[2] + a[3] + a[4] + a[5]) / 4, 3 * mean - 2 * (a[0] + a[1] + a[4] + a[5]) / 4, 3 * mean - 2 * (a[0] + a[1] + a[2] + a[3]) / 4].to_scale
353
+ exp = [3 * mean - 2 * (a[2] + a[3] + a[4] + a[5]) / 4, 3 * mean - 2 * (a[0] + a[1] + a[4] + a[5]) / 4, 3 * mean - 2 * (a[0] + a[1] + a[2] + a[3]) / 4].to_numeric
312
354
  assert_similar_vector(exp, ds[:mean], 1e-13)
313
355
  end
314
356
  should 'bootstrap should return a vector with mean=mu and sd=se' do
@@ -320,7 +362,7 @@ class StatsampleTestVector < Minitest::Test
320
362
  end
321
363
  end
322
364
 
323
- def test_nominal
365
+ def test_object
324
366
  assert_equal(@c[1], 5)
325
367
  assert_equal({ 1 => 1, 2 => 1, 3 => 1, 4 => 1, 5 => 5, 6 => 2, 7 => 1, 8 => 1, 9 => 1, 10 => 1 }, @c.frequencies)
326
368
  assert_equal({ 1 => 1, 2 => 1, 3 => 1, 4 => 1, 5 => 5, 6 => 2, 7 => 1, 8 => 1, 9 => 1, 10 => 1 }, @c._frequencies)
@@ -336,8 +378,8 @@ class StatsampleTestVector < Minitest::Test
336
378
  v1 = [1, 2, 3].to_vector
337
379
  v2 = [1, 2, 3].to_vector
338
380
  assert_equal(v1, v2)
339
- v1 = [1, 2, 3].to_vector(:nominal)
340
- v2 = [1, 2, 3].to_vector(:ordinal)
381
+ v1 = [1, 2, 3].to_vector(:object)
382
+ v2 = [1, 2, 3].to_vector(:numeric)
341
383
  assert_not_equal(v1, v2)
342
384
  v2 = [1, 2, 3]
343
385
  assert_not_equal(v1, v2)
@@ -348,23 +390,23 @@ class StatsampleTestVector < Minitest::Test
348
390
  end
349
391
 
350
392
  def test_vector_percentil
351
- a = [1, 2, 2, 3, 4, 5, 5, 5, 6, 10].to_scale
352
- expected = [10, 25, 25, 40, 50, 70, 70, 70, 90, 100].to_scale
393
+ a = [1, 2, 2, 3, 4, 5, 5, 5, 6, 10].to_numeric
394
+ expected = [10, 25, 25, 40, 50, 70, 70, 70, 90, 100].to_numeric
353
395
  assert_equal(expected, a.vector_percentil)
354
- a = [1, nil, nil, 2, 2, 3, 4, nil, nil, 5, 5, 5, 6, 10].to_scale
355
- expected = [10, nil, nil, 25, 25, 40, 50, nil, nil, 70, 70, 70, 90, 100].to_scale
396
+ a = [1, nil, nil, 2, 2, 3, 4, nil, nil, 5, 5, 5, 6, 10].to_numeric
397
+ expected = [10, nil, nil, 25, 25, 40, 50, nil, nil, 70, 70, 70, 90, 100].to_numeric
356
398
  assert_equal(expected, a.vector_percentil)
357
399
  end
358
400
 
359
- def test_ordinal
360
- @c.type = :ordinal
401
+ def test_numeric
402
+ @c.type = :numeric
361
403
  assert_equal(5, @c.median)
362
404
  assert_equal(4, @c.percentil(25))
363
405
  assert_equal(7, @c.percentil(75))
364
406
 
365
- v = [200_000, 200_000, 210_000, 220_000, 230_000, 250_000, 250_000, 250_000, 270_000, 300_000, 450_000, 130_000, 140_000, 140_000, 140_000, 145_000, 148_000, 165_000, 170_000, 180_000, 180_000, 180_000, 180_000, 180_000, 180_000].to_scale
407
+ v = [200_000, 200_000, 210_000, 220_000, 230_000, 250_000, 250_000, 250_000, 270_000, 300_000, 450_000, 130_000, 140_000, 140_000, 140_000, 145_000, 148_000, 165_000, 170_000, 180_000, 180_000, 180_000, 180_000, 180_000, 180_000].to_numeric
366
408
  assert_equal(180_000, v.median)
367
- a = [7.0, 7.0, 7.0, 7.0, 7.0, 8.0, 8.0, 8.0, 9.0, 9.0, 10.0, 10.0, 10.0, 10.0, 10.0, 12.0, 12.0, 13.0, 14.0, 14.0, 2.0, 3.0, 3.0, 3.0, 3.0, 4.0, 4.0, 4.0, 4.0, 4.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 6.0, 6.0, 6.0].to_scale
409
+ a = [7.0, 7.0, 7.0, 7.0, 7.0, 8.0, 8.0, 8.0, 9.0, 9.0, 10.0, 10.0, 10.0, 10.0, 10.0, 12.0, 12.0, 13.0, 14.0, 14.0, 2.0, 3.0, 3.0, 3.0, 3.0, 4.0, 4.0, 4.0, 4.0, 4.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 6.0, 6.0, 6.0].to_numeric
368
410
  assert_equal(4.5, a.percentil(25))
369
411
  assert_equal(6.5, a.percentil(50))
370
412
  assert_equal(9.5, a.percentil(75))
@@ -372,14 +414,14 @@ class StatsampleTestVector < Minitest::Test
372
414
  end
373
415
 
374
416
  def test_linear_percentil_strategy
375
- values = [102, 104, 105, 107, 108, 109, 110, 112, 115, 116].shuffle.to_scale
417
+ values = [102, 104, 105, 107, 108, 109, 110, 112, 115, 116].shuffle.to_numeric
376
418
  assert_equal 102, values.percentil(0, :linear)
377
419
  assert_equal 104.75, values.percentil(25, :linear)
378
420
  assert_equal 108.5, values.percentil(50, :linear)
379
421
  assert_equal 112.75, values.percentil(75, :linear)
380
422
  assert_equal 116, values.percentil(100, :linear)
381
423
 
382
- values = [102, 104, 105, 107, 108, 109, 110, 112, 115, 116, 118].shuffle.to_scale
424
+ values = [102, 104, 105, 107, 108, 109, 110, 112, 115, 116, 118].shuffle.to_numeric
383
425
  assert_equal 102, values.percentil(0, :linear)
384
426
  assert_equal 105, values.percentil(25, :linear)
385
427
  assert_equal 109, values.percentil(50, :linear)
@@ -388,16 +430,16 @@ class StatsampleTestVector < Minitest::Test
388
430
  end
389
431
 
390
432
  def test_ranked
391
- v1 = [0.8, 1.2, 1.2, 2.3, 18].to_vector(:ordinal)
392
- expected = [1, 2.5, 2.5, 4, 5].to_vector(:ordinal)
433
+ v1 = [0.8, 1.2, 1.2, 2.3, 18].to_vector(:numeric)
434
+ expected = [1, 2.5, 2.5, 4, 5].to_vector(:numeric)
393
435
  assert_equal(expected, v1.ranked)
394
- v1 = [nil, 0.8, 1.2, 1.2, 2.3, 18, nil].to_vector(:ordinal)
395
- expected = [nil, 1, 2.5, 2.5, 4, 5, nil].to_vector(:ordinal)
436
+ v1 = [nil, 0.8, 1.2, 1.2, 2.3, 18, nil].to_vector(:numeric)
437
+ expected = [nil, 1, 2.5, 2.5, 4, 5, nil].to_vector(:numeric)
396
438
  assert_equal(expected, v1.ranked)
397
439
  end
398
440
 
399
- def test_scale
400
- a = Statsample::Vector.new([1, 2, 3, 4, 'STRING'], :scale)
441
+ def test_numeric
442
+ a = Statsample::Vector.new([1, 2, 3, 4, 'STRING'], :numeric)
401
443
  assert_equal(10, a.sum)
402
444
  i = 0
403
445
  factors = a.factors.sort
@@ -411,7 +453,7 @@ class StatsampleTestVector < Minitest::Test
411
453
  def test_vector_centered
412
454
  mean = rand
413
455
  samples = 11
414
- centered = samples.times.map { |i| i - ((samples / 2).floor).to_i }.to_scale
456
+ centered = samples.times.map { |i| i - ((samples / 2).floor).to_i }.to_numeric
415
457
  not_centered = centered.recode { |v| v + mean }
416
458
  obs = not_centered.centered
417
459
  centered.each_with_index do |v, i|
@@ -420,9 +462,9 @@ class StatsampleTestVector < Minitest::Test
420
462
  end
421
463
 
422
464
  def test_vector_standarized
423
- v1 = [1, 2, 3, 4, nil].to_vector(:scale)
465
+ v1 = [1, 2, 3, 4, nil].to_vector(:numeric)
424
466
  sds = v1.sds
425
- expected = [((1 - 2.5).quo(sds)), ((2 - 2.5).quo(sds)), ((3 - 2.5).quo(sds)), ((4 - 2.5).quo(sds)), nil].to_vector(:scale)
467
+ expected = [((1 - 2.5).quo(sds)), ((2 - 2.5).quo(sds)), ((3 - 2.5).quo(sds)), ((4 - 2.5).quo(sds)), nil].to_vector(:numeric)
426
468
  vs = v1.vector_standarized
427
469
  assert_equal(expected, vs)
428
470
  assert_equal(0, vs.mean)
@@ -430,39 +472,31 @@ class StatsampleTestVector < Minitest::Test
430
472
  end
431
473
 
432
474
  def test_vector_standarized_with_zero_variance
433
- v1 = 100.times.map { |_i| 1 }.to_scale
434
- exp = 100.times.map { nil }.to_scale
475
+ v1 = 100.times.map { |_i| 1 }.to_numeric
476
+ exp = 100.times.map { nil }.to_numeric
435
477
  assert_equal(exp, v1.standarized)
436
478
  end
437
479
 
438
480
  def test_check_type
439
481
  v = Statsample::Vector.new
440
- v.type = :nominal
441
- assert_raise(NoMethodError) { v.check_type(:scale) }
442
- assert_raise(NoMethodError) { v.check_type(:ordinal) }
443
- assert(v.check_type(:nominal).nil?)
444
-
445
- v.type = :ordinal
446
-
447
- assert_raise(NoMethodError) { v.check_type(:scale) }
482
+ v.type = :object
483
+ assert_raise(NoMethodError) { v.check_type(:numeric) }
484
+ assert(v.check_type(:object).nil?)
448
485
 
449
- assert(v.check_type(:ordinal).nil?)
450
- assert(v.check_type(:nominal).nil?)
486
+ v.type = :numeric
451
487
 
452
- v.type = :scale
453
- assert(v.check_type(:scale).nil?)
454
- assert(v.check_type(:ordinal).nil?)
455
- assert(v.check_type(:nominal).nil?)
488
+ assert(v.check_type(:numeric).nil?)
489
+ assert(v.check_type(:object).nil?)
456
490
 
457
491
  v.type = :date
458
- assert_raise(NoMethodError) { v.check_type(:scale) }
459
- assert_raise(NoMethodError) { v.check_type(:ordinal) }
460
- assert_raise(NoMethodError) { v.check_type(:nominal) }
492
+ assert_raise(NoMethodError) { v.check_type(:numeric) }
493
+ assert_raise(NoMethodError) { v.check_type(:numeric) }
494
+ assert_raise(NoMethodError) { v.check_type(:object) }
461
495
  end
462
496
 
463
497
  def test_add
464
- a = Statsample::Vector.new([1, 2, 3, 4, 5], :scale)
465
- b = Statsample::Vector.new([11, 12, 13, 14, 15], :scale)
498
+ a = Statsample::Vector.new([1, 2, 3, 4, 5], :numeric)
499
+ b = Statsample::Vector.new([11, 12, 13, 14, 15], :numeric)
466
500
  assert_equal([3, 4, 5, 6, 7], (a + 2).to_a)
467
501
  assert_equal([12, 14, 16, 18, 20], (a + b).to_a)
468
502
  assert_raise ArgumentError do
@@ -471,15 +505,15 @@ end
471
505
  assert_raise TypeError do
472
506
  a + 'string'
473
507
  end
474
- a = Statsample::Vector.new([nil, 1, 2, 3, 4, 5], :scale)
475
- b = Statsample::Vector.new([11, 12, nil, 13, 14, 15], :scale)
508
+ a = Statsample::Vector.new([nil, 1, 2, 3, 4, 5], :numeric)
509
+ b = Statsample::Vector.new([11, 12, nil, 13, 14, 15], :numeric)
476
510
  assert_equal([nil, 13, nil, 16, 18, 20], (a + b).to_a)
477
511
  assert_equal([nil, 13, nil, 16, 18, 20], (a + b.to_a).to_a)
478
512
  end
479
513
 
480
514
  def test_minus
481
- a = Statsample::Vector.new([1, 2, 3, 4, 5], :scale)
482
- b = Statsample::Vector.new([11, 12, 13, 14, 15], :scale)
515
+ a = Statsample::Vector.new([1, 2, 3, 4, 5], :numeric)
516
+ b = Statsample::Vector.new([11, 12, 13, 14, 15], :numeric)
483
517
  assert_equal([-1, 0, 1, 2, 3], (a - 2).to_a)
484
518
  assert_equal([10, 10, 10, 10, 10], (b - a).to_a)
485
519
  assert_raise ArgumentError do
@@ -488,19 +522,19 @@ end
488
522
  assert_raise TypeError do
489
523
  a - 'string'
490
524
  end
491
- a = Statsample::Vector.new([nil, 1, 2, 3, 4, 5], :scale)
492
- b = Statsample::Vector.new([11, 12, nil, 13, 14, 15], :scale)
525
+ a = Statsample::Vector.new([nil, 1, 2, 3, 4, 5], :numeric)
526
+ b = Statsample::Vector.new([11, 12, nil, 13, 14, 15], :numeric)
493
527
  assert_equal([nil, 11, nil, 10, 10, 10], (b - a).to_a)
494
528
  assert_equal([nil, 11, nil, 10, 10, 10], (b - a.to_a).to_a)
495
529
  end
496
530
 
497
531
  def test_sum_of_squares
498
- a = [1, 2, 3, 4, 5, 6].to_vector(:scale)
532
+ a = [1, 2, 3, 4, 5, 6].to_vector(:numeric)
499
533
  assert_equal(17.5, a.sum_of_squared_deviation)
500
534
  end
501
535
 
502
536
  def test_average_deviation
503
- a = [1, 2, 3, 4, 5, 6, 7, 8, 9].to_scale
537
+ a = [1, 2, 3, 4, 5, 6, 7, 8, 9].to_numeric
504
538
  assert_equal(20.quo(9), a.average_deviation_population)
505
539
  end
506
540
 
@@ -511,7 +545,7 @@ end
511
545
  assert_raise ArgumentError do
512
546
  @c.sample_without_replacement(20)
513
547
  end
514
- @c.type = :scale
548
+ @c.type = :numeric
515
549
  srand(1)
516
550
  assert_equal(100, @c.sample_with_replacement(100).size)
517
551
  assert_equal(@c.valid_data.to_a.sort, @c.sample_without_replacement(15).sort)
@@ -542,7 +576,7 @@ end
542
576
 
543
577
  def test_gsl
544
578
  if Statsample.has_gsl?
545
- a = Statsample::Vector.new([1, 2, 3, 4, 'STRING'], :scale)
579
+ a = Statsample::Vector.new([1, 2, 3, 4, 'STRING'], :numeric)
546
580
 
547
581
  assert_equal(2, a.mean)
548
582
  assert_equal(a.variance_sample_ruby, a.variance_sample)
@@ -550,17 +584,17 @@ end
550
584
  assert_equal(a.variance_population_ruby, a.variance_population)
551
585
  assert_equal(a.standard_deviation_population_ruby, a.standard_deviation_population)
552
586
  assert_nothing_raised do
553
- a = [].to_vector(:scale)
587
+ a = [].to_vector(:numeric)
554
588
  end
555
589
  a.add(1, false)
556
590
  a.add(2, false)
557
591
  a.set_valid_data
558
592
  assert_equal(3, a.sum)
559
- b = [1, 2, nil, 3, 4, 5, nil, 6].to_vector(:scale)
593
+ b = [1, 2, nil, 3, 4, 5, nil, 6].to_vector(:numeric)
560
594
  assert_equal(21, b.sum)
561
595
  assert_equal(3.5, b.mean)
562
596
  assert_equal(6, b.gsl.size)
563
- c = [10, 20, 30, 40, 50, 100, 1000, 2000, 5000].to_scale
597
+ c = [10, 20, 30, 40, 50, 100, 1000, 2000, 5000].to_numeric
564
598
  assert_in_delta(c.skew, c.skew_ruby, 0.0001)
565
599
  assert_in_delta(c.kurtosis, c.kurtosis_ruby, 0.0001)
566
600
  end
@@ -575,7 +609,7 @@ end
575
609
  end
576
610
 
577
611
  def test_marshalling
578
- v1 = (0..100).to_a.collect { |_n| rand(100) }.to_vector(:scale)
612
+ v1 = (0..100).to_a.collect { |_n| rand(100) }.to_vector(:numeric)
579
613
  v2 = Marshal.load(Marshal.dump(v1))
580
614
  assert_equal(v1, v2)
581
615
  end
@@ -587,7 +621,7 @@ end
587
621
  assert_not_same(v1.data, v2.data)
588
622
  assert_equal(v1.type, v2.type)
589
623
 
590
- v1.type = :ordinal
624
+ v1.type = :numeric
591
625
  assert_not_equal(v1.type, v2.type)
592
626
  assert_equal(v1.missing_values, v2.missing_values)
593
627
  assert_not_same(v1.missing_values, v2.missing_values)
@@ -599,8 +633,8 @@ end
599
633
  assert_not_equal(v1.data, v3.data)
600
634
  assert_not_same(v1.data, v3.data)
601
635
  assert_equal(v1.type, v3.type)
602
- v1.type = :ordinal
603
- v3.type = :nominal
636
+ v1.type = :numeric
637
+ v3.type = :object
604
638
  assert_not_equal(v1.type, v3.type)
605
639
  assert_equal(v1.missing_values, v3.missing_values)
606
640
  assert_not_same(v1.missing_values, v3.missing_values)
@@ -609,33 +643,33 @@ end
609
643
  end
610
644
 
611
645
  def test_paired_ties
612
- a = [0, 0, 0, 1, 1, 2, 3, 3, 4, 4, 4].to_vector(:ordinal)
613
- expected = [2, 2, 2, 4.5, 4.5, 6, 7.5, 7.5, 10, 10, 10].to_vector(:ordinal)
646
+ a = [0, 0, 0, 1, 1, 2, 3, 3, 4, 4, 4].to_vector(:numeric)
647
+ expected = [2, 2, 2, 4.5, 4.5, 6, 7.5, 7.5, 10, 10, 10].to_vector(:numeric)
614
648
  assert_equal(expected, a.ranked)
615
649
  end
616
650
 
617
651
  def test_dichotomize
618
652
  a = [0, 0, 0, 1, 2, 3, nil].to_vector
619
- exp = [0, 0, 0, 1, 1, 1, nil].to_scale
653
+ exp = [0, 0, 0, 1, 1, 1, nil].to_numeric
620
654
  assert_equal(exp, a.dichotomize)
621
655
  a = [1, 1, 1, 2, 2, 2, 3].to_vector
622
- exp = [0, 0, 0, 1, 1, 1, 1].to_scale
656
+ exp = [0, 0, 0, 1, 1, 1, 1].to_numeric
623
657
  assert_equal(exp, a.dichotomize)
624
658
  a = [0, 0, 0, 1, 2, 3, nil].to_vector
625
- exp = [0, 0, 0, 0, 1, 1, nil].to_scale
659
+ exp = [0, 0, 0, 0, 1, 1, nil].to_numeric
626
660
  assert_equal(exp, a.dichotomize(1))
627
661
  a = %w(a a a b c d).to_vector
628
- exp = [0, 0, 0, 1, 1, 1].to_scale
662
+ exp = [0, 0, 0, 1, 1, 1].to_numeric
629
663
  assert_equal(exp, a.dichotomize)
630
664
  end
631
665
 
632
666
  def test_can_be_methods
633
667
  a = [0, 0, 0, 1, 2, 3, nil].to_vector
634
- assert(a.can_be_scale?)
668
+ assert(a.can_be_numeric?)
635
669
  a = [0, 's', 0, 1, 2, 3, nil].to_vector
636
- assert(!a.can_be_scale?)
670
+ assert(!a.can_be_numeric?)
637
671
  a.missing_values = ['s']
638
- assert(a.can_be_scale?)
672
+ assert(a.can_be_numeric?)
639
673
 
640
674
  a = [Date.new(2009, 10, 10), Date.today, '2009-10-10', '2009-1-1', nil, 'NOW'].to_vector
641
675
  assert(a.can_be_date?)