statsample 1.4.3 → 1.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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
@@ -18,8 +18,8 @@ class StatsampleFactorTestCase < Minitest::Test
18
18
  pca = Statsample::Factor::PCA.new(cm, m: 6)
19
19
  # puts pca.summary
20
20
  # puts pca.feature_matrix
21
- exp_eig = [2.985, 0.931, 0.242, 0.194, 0.085, 0.035].to_scale
22
- assert_similar_vector(exp_eig, pca.eigenvalues.to_scale, 0.1)
21
+ exp_eig = [2.985, 0.931, 0.242, 0.194, 0.085, 0.035].to_numeric
22
+ assert_similar_vector(exp_eig, pca.eigenvalues.to_numeric, 0.1)
23
23
  pcs = pca.principal_components(ds)
24
24
  k = 6
25
25
  comp_matrix = pca.component_matrix
@@ -34,59 +34,61 @@ class StatsampleFactorTestCase < Minitest::Test
34
34
  end
35
35
 
36
36
  def test_principalcomponents_ruby_gsl
37
- ran = Distribution::Normal.rng
38
-
39
- # @r=::Rserve::Connection.new
40
-
41
- samples = 20
42
- [3, 5, 7].each {|k|
43
- v = {}
44
- v['x0'] = samples.times.map { ran.call }.to_scale.centered
45
- (1...k).each {|i|
46
- v["x#{i}"] = samples.times.map { |ii| ran.call * 0.5 + v["x#{i - 1}"][ii] * 0.5 }.to_scale.centered
47
- }
48
-
49
- ds = v.to_dataset
50
- cm = ds.covariance_matrix
51
- # @r.assign('ds',ds)
52
- # @r.eval('cm<-cor(ds);sm<-eigen(cm, sym=TRUE);v<-sm$vectors')
53
- # puts "eigenvalues"
54
- # puts @r.eval('v').to_ruby.to_s
55
- pca_ruby = Statsample::Factor::PCA.new(cm, m: k, use_gsl: false)
56
- pca_gsl = Statsample::Factor::PCA.new(cm, m: k, use_gsl: true)
57
- pc_ruby = pca_ruby.principal_components(ds)
58
- pc_gsl = pca_gsl.principal_components(ds)
59
- # Test component matrix correlation!
60
- cm_ruby = pca_ruby.component_matrix
61
- # puts cm_ruby.summary
62
- k.times {|i|
63
- pc_id = "PC_#{i + 1}"
64
- assert_in_delta(pca_ruby.eigenvalues[i], pca_gsl.eigenvalues[i], 1e-10)
65
- # Revert gsl component values
66
- pc_gsl_data = (pc_gsl[pc_id][0] - pc_ruby[pc_id][0]).abs > 1e-6 ? pc_gsl[pc_id].recode(&:-@) : pc_gsl[pc_id]
67
- assert_similar_vector(pc_gsl_data, pc_ruby[pc_id], 1e-6, "PC for #{k} variables")
68
- if false
69
- k.times {|j| # variable
70
- ds_id = "x#{j}"
71
- r = Statsample::Bivariate.correlation(ds[ds_id], pc_ruby[pc_id])
72
- puts "#{pc_id}-#{ds_id}:#{r}"
73
- }
74
- end
37
+ if Statsample.has_gsl?
38
+ ran = Distribution::Normal.rng
39
+
40
+ # @r=::Rserve::Connection.new
41
+
42
+ samples = 20
43
+ [3, 5, 7].each {|k|
44
+ v = {}
45
+ v['x0'] = samples.times.map { ran.call }.to_numeric.centered
46
+ (1...k).each {|i|
47
+ v["x#{i}"] = samples.times.map { |ii| ran.call * 0.5 + v["x#{i - 1}"][ii] * 0.5 }.to_numeric.centered
48
+ }
49
+
50
+ ds = v.to_dataset
51
+ cm = ds.covariance_matrix
52
+ # @r.assign('ds',ds)
53
+ # @r.eval('cm<-cor(ds);sm<-eigen(cm, sym=TRUE);v<-sm$vectors')
54
+ # puts "eigenvalues"
55
+ # puts @r.eval('v').to_ruby.to_s
56
+ pca_ruby = Statsample::Factor::PCA.new(cm, m: k, use_gsl: false)
57
+ pca_gsl = Statsample::Factor::PCA.new(cm, m: k, use_gsl: true)
58
+ pc_ruby = pca_ruby.principal_components(ds)
59
+ pc_gsl = pca_gsl.principal_components(ds)
60
+ # Test component matrix correlation!
61
+ cm_ruby = pca_ruby.component_matrix
62
+ # puts cm_ruby.summary
63
+ k.times {|i|
64
+ pc_id = "PC_#{i + 1}"
65
+ assert_in_delta(pca_ruby.eigenvalues[i], pca_gsl.eigenvalues[i], 1e-10)
66
+ # Revert gsl component values
67
+ pc_gsl_data = (pc_gsl[pc_id][0] - pc_ruby[pc_id][0]).abs > 1e-6 ? pc_gsl[pc_id].recode(&:-@) : pc_gsl[pc_id]
68
+ assert_similar_vector(pc_gsl_data, pc_ruby[pc_id], 1e-6, "PC for #{k} variables")
69
+ if false
70
+ k.times {|j| # variable
71
+ ds_id = "x#{j}"
72
+ r = Statsample::Bivariate.correlation(ds[ds_id], pc_ruby[pc_id])
73
+ puts "#{pc_id}-#{ds_id}:#{r}"
74
+ }
75
+ end
76
+ }
75
77
  }
76
- }
78
+ end
77
79
  # @r.close
78
80
  end
79
81
 
80
82
  def test_principalcomponents
81
- principalcomponents(true)
83
+ principalcomponents(true) if Statsample.has_gsl?
82
84
  principalcomponents(false)
83
85
  end
84
86
 
85
87
  def principalcomponents(gsl)
86
88
  ran = Distribution::Normal.rng
87
89
  samples = 50
88
- x1 = samples.times.map { ran.call }.to_scale
89
- x2 = samples.times.map { |i| ran.call * 0.5 + x1[i] * 0.5 }.to_scale
90
+ x1 = samples.times.map { ran.call }.to_numeric
91
+ x2 = samples.times.map { |i| ran.call * 0.5 + x1[i] * 0.5 }.to_numeric
90
92
  ds = { 'x1' => x1, 'x2' => x2 }.to_dataset
91
93
 
92
94
  cm = ds.correlation_matrix
@@ -119,9 +121,9 @@ class StatsampleFactorTestCase < Minitest::Test
119
121
  end
120
122
 
121
123
  def test_kmo
122
- @v1 = [1, 2, 3, 4, 7, 8, 9, 10, 14, 15, 20, 50, 60, 70].to_scale
123
- @v2 = [5, 6, 11, 12, 13, 16, 17, 18, 19, 20, 30, 0, 0, 0].to_scale
124
- @v3 = [10, 3, 20, 30, 40, 50, 80, 10, 20, 30, 40, 2, 3, 4].to_scale
124
+ @v1 = [1, 2, 3, 4, 7, 8, 9, 10, 14, 15, 20, 50, 60, 70].to_numeric
125
+ @v2 = [5, 6, 11, 12, 13, 16, 17, 18, 19, 20, 30, 0, 0, 0].to_numeric
126
+ @v3 = [10, 3, 20, 30, 40, 50, 80, 10, 20, 30, 40, 2, 3, 4].to_numeric
125
127
  # KMO: 0.490
126
128
  ds = { 'v1' => @v1, 'v2' => @v2, 'v3' => @v3 }.to_dataset
127
129
  cor = Statsample::Bivariate.correlation_matrix(ds)
@@ -139,11 +141,13 @@ class StatsampleFactorTestCase < Minitest::Test
139
141
  end
140
142
  # Tested with SPSS and R
141
143
  def test_pca
142
- a = [2.5, 0.5, 2.2, 1.9, 3.1, 2.3, 2.0, 1.0, 1.5, 1.1].to_scale
143
- b = [2.4, 0.7, 2.9, 2.2, 3.0, 2.7, 1.6, 1.1, 1.6, 0.9].to_scale
144
+
145
+ a = [2.5, 0.5, 2.2, 1.9, 3.1, 2.3, 2.0, 1.0, 1.5, 1.1].to_numeric
146
+ b = [2.4, 0.7, 2.9, 2.2, 3.0, 2.7, 1.6, 1.1, 1.6, 0.9].to_numeric
144
147
  a.recode! { |c| c - a.mean }
145
148
  b.recode! { |c| c - b.mean }
146
149
  ds = { 'a' => a, 'b' => b }.to_dataset
150
+
147
151
  cov_matrix = Statsample::Bivariate.covariance_matrix(ds)
148
152
  if Statsample.has_gsl?
149
153
  pca = Statsample::Factor::PCA.new(cov_matrix, use_gsl: true)
@@ -156,6 +160,8 @@ class StatsampleFactorTestCase < Minitest::Test
156
160
  end
157
161
 
158
162
  def pca_set(pca, _type)
163
+
164
+
159
165
  expected_eigenvalues = [1.284, 0.0490]
160
166
  expected_eigenvalues.each_with_index{|ev, i|
161
167
  assert_in_delta(ev, pca.eigenvalues[i], 0.001)
@@ -15,18 +15,18 @@ class StatsampleFactorTestCase < Minitest::Test
15
15
  variables = 10
16
16
  iterations = 50
17
17
  rng = Distribution::Normal.rng
18
- f1 = samples.times.collect { rng.call }.to_scale
19
- f2 = samples.times.collect { rng.call }.to_scale
18
+ f1 = samples.times.collect { rng.call }.to_numeric
19
+ f2 = samples.times.collect { rng.call }.to_numeric
20
20
  vectors = {}
21
21
  variables.times do |i|
22
22
  if i < 5
23
23
  vectors["v#{i}"] = samples.times.collect {|nv|
24
24
  f1[nv] * 5 + f2[nv] * 2 + rng.call
25
- }.to_scale
25
+ }.to_numeric
26
26
  else
27
27
  vectors["v#{i}"] = samples.times.collect {|nv|
28
28
  f2[nv] * 5 + f1[nv] * 2 + rng.call
29
- }.to_scale
29
+ }.to_numeric
30
30
  end
31
31
  end
32
32
  ds = vectors.to_dataset
@@ -2,10 +2,10 @@ require(File.expand_path(File.dirname(__FILE__) + '/helpers_tests.rb'))
2
2
  require 'ostruct'
3
3
  class StatsampleGGobiTestCase < Minitest::Test
4
4
  def setup
5
- v1 = ([10.2, 20.3, 10, 20, 30, 40, 30, 20, 30, 40] * 10).to_vector(:scale)
6
- @v2 = (%w(a b c a a a b b c d) * 10).to_vector(:nominal)
5
+ v1 = ([10.2, 20.3, 10, 20, 30, 40, 30, 20, 30, 40] * 10).to_vector(:numeric)
6
+ @v2 = (%w(a b c a a a b b c d) * 10).to_vector(:object)
7
7
  @v2.labels = { 'a' => 'letter a', 'd' => 'letter d' }
8
- v3 = ([1, 2, 3, 4, 5, 4, 3, 2, 1, 2] * 10).to_vector(:ordinal)
8
+ v3 = ([1, 2, 3, 4, 5, 4, 3, 2, 1, 2] * 10).to_vector(:numeric)
9
9
  @ds = { 'v1' => v1, 'v2' => @v2, 'v3' => v3 }.to_dataset
10
10
  end
11
11
 
@@ -1,9 +1,9 @@
1
1
  require(File.expand_path(File.dirname(__FILE__) + '/helpers_tests.rb'))
2
2
  class StatsampleGSLTestCase < Minitest::Test
3
3
  should_with_gsl 'matrix with gsl' do
4
- a = [1, 2, 3, 4, 20].to_vector(:scale)
5
- b = [3, 2, 3, 4, 50].to_vector(:scale)
6
- c = [6, 2, 3, 4, 3].to_vector(:scale)
4
+ a = [1, 2, 3, 4, 20].to_vector(:numeric)
5
+ b = [3, 2, 3, 4, 50].to_vector(:numeric)
6
+ c = [6, 2, 3, 4, 3].to_vector(:numeric)
7
7
  ds = { 'a' => a, 'b' => b, 'c' => c }.to_dataset
8
8
  gsl = ds.to_matrix.to_gsl
9
9
  assert_equal(5, gsl.size1)
@@ -75,13 +75,13 @@ class StatsampleHistogramTestCase < Minitest::Test
75
75
  assert_equal(min, h.min_val)
76
76
  end
77
77
  should 'return correct estimated mean' do
78
- a = [1.5, 1.5, 1.5, 3.5, 3.5, 3.5].to_scale
78
+ a = [1.5, 1.5, 1.5, 3.5, 3.5, 3.5].to_numeric
79
79
  h = Statsample::Histogram.alloc(5, [0, 5])
80
80
  h.increment(a)
81
81
  assert_equal(2.5, h.estimated_mean)
82
82
  end
83
83
  should 'return correct estimated standard deviation' do
84
- a = [0.5, 1.5, 1.5, 1.5, 2.5, 3.5, 3.5, 3.5, 4.5].to_scale
84
+ a = [0.5, 1.5, 1.5, 1.5, 2.5, 3.5, 3.5, 3.5, 4.5].to_numeric
85
85
  h = Statsample::Histogram.alloc(5, [0, 5])
86
86
  h.increment(a)
87
87
  assert_equal(a.sd, h.estimated_standard_deviation)
@@ -100,7 +100,7 @@ class StatsampleHistogramTestCase < Minitest::Test
100
100
  end
101
101
  should 'not raise exception when all values equal' do
102
102
  assert_nothing_raised do
103
- a = [5, 5, 5, 5, 5, 5].to_scale
103
+ a = [5, 5, 5, 5, 5, 5].to_numeric
104
104
  h = Statsample::Graph::Histogram.new(a)
105
105
  h.to_svg
106
106
  end
@@ -7,8 +7,8 @@ class StatsampleMatrixTestCase < Minitest::Test
7
7
  m.fields_y = %w(x1 x2)
8
8
  m.name = 'test'
9
9
  samples = 100
10
- x1 = [1, 2, 3].to_scale
11
- x2 = [4, 5, 6].to_scale
10
+ x1 = [1, 2, 3].to_numeric
11
+ x2 = [4, 5, 6].to_numeric
12
12
  ds = { 'x1' => x1, 'x2' => x2 }.to_dataset
13
13
  ds.name = 'test'
14
14
  obs = m.to_dataset
@@ -33,9 +33,9 @@ class StatsampleMatrixTestCase < Minitest::Test
33
33
 
34
34
  assert_equal(:covariance, a._type)
35
35
 
36
- a = 50.times.collect { rand }.to_scale
37
- b = 50.times.collect { rand }.to_scale
38
- c = 50.times.collect { rand }.to_scale
36
+ a = 50.times.collect { rand }.to_numeric
37
+ b = 50.times.collect { rand }.to_numeric
38
+ c = 50.times.collect { rand }.to_numeric
39
39
  ds = { 'a' => a, 'b' => b, 'c' => c }.to_dataset
40
40
  corr = Statsample::Bivariate.correlation_matrix(ds)
41
41
  real = Statsample::Bivariate.covariance_matrix(ds).correlation
@@ -3,8 +3,8 @@ require(File.expand_path(File.dirname(__FILE__) + '/helpers_tests.rb'))
3
3
  class StatsampleMultisetTestCase < Minitest::Test
4
4
  def setup
5
5
  @x = %w(a a a a b b b b).to_vector
6
- @y = [1, 2, 3, 4, 5, 6, 7, 8].to_scale
7
- @z = [10, 11, 12, 13, 14, 15, 16, 17].to_scale
6
+ @y = [1, 2, 3, 4, 5, 6, 7, 8].to_numeric
7
+ @z = [10, 11, 12, 13, 14, 15, 16, 17].to_numeric
8
8
  @ds = { 'x' => @x, 'y' => @y, 'z' => @z }.to_dataset
9
9
  @ms = @ds.to_multiset_by_split('x')
10
10
  end
@@ -44,9 +44,9 @@ class StatsampleMultisetTestCase < Minitest::Test
44
44
  end
45
45
 
46
46
  def test_to_multiset_by_split_one
47
- sex = %w(m m m m m f f f f m).to_vector(:nominal)
48
- city = %w(London Paris NY London Paris NY London Paris NY Tome).to_vector(:nominal)
49
- age = [10, 10, 20, 30, 34, 34, 33, 35, 36, 40].to_vector(:scale)
47
+ sex = %w(m m m m m f f f f m).to_vector(:object)
48
+ city = %w(London Paris NY London Paris NY London Paris NY Tome).to_vector(:object)
49
+ age = [10, 10, 20, 30, 34, 34, 33, 35, 36, 40].to_vector(:numeric)
50
50
  ds = { 'sex' => sex, 'city' => city, 'age' => age }.to_dataset
51
51
  ms = ds.to_multiset_by_split('sex')
52
52
  assert_equal(2, ms.n_datasets)
@@ -58,10 +58,10 @@ class StatsampleMultisetTestCase < Minitest::Test
58
58
  end
59
59
 
60
60
  def test_to_multiset_by_split_multiple
61
- sex = %w(m m m m m m m m m m f f f f f f f f f f).to_vector(:nominal)
62
- city = %w(London London London Paris Paris London London London Paris Paris London London London Paris Paris London London London Paris Paris).to_vector(:nominal)
63
- hair = %w(blonde blonde black black blonde blonde black black blonde blonde black black blonde blonde black black blonde blonde black black).to_vector(:nominal)
64
- age = [10, 10, 20, 30, 34, 34, 33, 35, 36, 40, 10, 10, 20, 30, 34, 34, 33, 35, 36, 40].to_vector(:scale)
61
+ sex = %w(m m m m m m m m m m f f f f f f f f f f).to_vector(:object)
62
+ city = %w(London London London Paris Paris London London London Paris Paris London London London Paris Paris London London London Paris Paris).to_vector(:object)
63
+ hair = %w(blonde blonde black black blonde blonde black black blonde blonde black black blonde blonde black black blonde blonde black black).to_vector(:object)
64
+ age = [10, 10, 20, 30, 34, 34, 33, 35, 36, 40, 10, 10, 20, 30, 34, 34, 33, 35, 36, 40].to_vector(:numeric)
65
65
  ds = { 'sex' => sex, 'city' => city, 'hair' => hair, 'age' => age }.to_dataset(%w(sex city hair age))
66
66
  ms = ds.to_multiset_by_split('sex', 'city', 'hair')
67
67
  assert_equal(8, ms.n_datasets)
@@ -84,8 +84,8 @@ class StatsampleMultisetTestCase < Minitest::Test
84
84
  end
85
85
 
86
86
  def test_stratum_scale
87
- boys = { 'test' => [50, 55, 60, 62, 62, 65, 67, 67, 70, 70, 73, 73, 75, 78, 78, 80, 85, 90].to_vector(:scale) }.to_dataset
88
- girls = { 'test' => [70, 70, 72, 72, 75, 75, 78, 78, 80, 80, 82, 82, 85, 85, 88, 88, 90, 90].to_vector(:scale) }.to_dataset
87
+ boys = { 'test' => [50, 55, 60, 62, 62, 65, 67, 67, 70, 70, 73, 73, 75, 78, 78, 80, 85, 90].to_vector(:numeric) }.to_dataset
88
+ girls = { 'test' => [70, 70, 72, 72, 75, 75, 78, 78, 80, 80, 82, 82, 85, 85, 88, 88, 90, 90].to_vector(:numeric) }.to_dataset
89
89
  ms = Statsample::Multiset.new(['test'])
90
90
  ms.add_dataset('boys', boys)
91
91
  ms.add_dataset('girls', girls)
@@ -106,12 +106,12 @@ class StatsampleMultisetTestCase < Minitest::Test
106
106
  'b' => %w(b b b b).to_vector
107
107
  }
108
108
  ype = {
109
- 'a' => [1, 2, 3, 4].to_scale,
110
- 'b' => [5, 6, 7, 8].to_scale
109
+ 'a' => [1, 2, 3, 4].to_numeric,
110
+ 'b' => [5, 6, 7, 8].to_numeric
111
111
  }
112
112
  zpe = {
113
- 'a' => [10, 11, 12, 13].to_scale,
114
- 'b' => [14, 15, 16, 17].to_scale
113
+ 'a' => [10, 11, 12, 13].to_numeric,
114
+ 'b' => [14, 15, 16, 17].to_numeric
115
115
  }
116
116
  xp, yp, zp = {}, {}, {}
117
117
  @ms.each {|k, ds|
@@ -127,9 +127,9 @@ class StatsampleMultisetTestCase < Minitest::Test
127
127
  def test_multiset_union_with_block
128
128
  r1 = rand
129
129
  r2 = rand
130
- ye = [1 * r1, 2 * r1, 3 * r1, 4 * r1, 5 * r2, 6 * r2, 7 * r2, 8 * r2].to_scale
130
+ ye = [1 * r1, 2 * r1, 3 * r1, 4 * r1, 5 * r2, 6 * r2, 7 * r2, 8 * r2].to_numeric
131
131
 
132
- ze = [10 * r1, 11 * r1, 12 * r1, 13 * r1, 14 * r2, 15 * r2, 16 * r2, 17 * r2].to_scale
132
+ ze = [10 * r1, 11 * r1, 12 * r1, 13 * r1, 14 * r2, 15 * r2, 16 * r2, 17 * r2].to_numeric
133
133
 
134
134
  ds2 = @ms.union {|k, ds|
135
135
  ds['y'].recode!{|v|
@@ -146,9 +146,9 @@ class StatsampleMultisetTestCase < Minitest::Test
146
146
  def test_multiset_union
147
147
  r1 = rand
148
148
  r2 = rand
149
- ye = [1 * r1, 2 * r1, 3 * r1, 4 * r1, 5 * r2, 6 * r2, 7 * r2, 8 * r2].to_scale
149
+ ye = [1 * r1, 2 * r1, 3 * r1, 4 * r1, 5 * r2, 6 * r2, 7 * r2, 8 * r2].to_numeric
150
150
 
151
- ze = [10 * r1, 11 * r1, 12 * r1, 13 * r1, 14 * r2, 15 * r2, 16 * r2, 17 * r2].to_scale
151
+ ze = [10 * r1, 11 * r1, 12 * r1, 13 * r1, 14 * r2, 15 * r2, 16 * r2, 17 * r2].to_numeric
152
152
  @ms.each {|k, ds|
153
153
  ds['y'].recode!{|v|
154
154
  k == 'a' ? v * r1 : v * r2
@@ -3,9 +3,9 @@ require(File.expand_path(File.dirname(__FILE__) + '/helpers_tests.rb'))
3
3
  class StatsampleRegressionTestCase < Minitest::Test
4
4
  context 'Example with missing data' do
5
5
  setup do
6
- @x = [0.285714285714286, 0.114285714285714, 0.314285714285714, 0.2, 0.2, 0.228571428571429, 0.2, 0.4, 0.714285714285714, 0.285714285714286, 0.285714285714286, 0.228571428571429, 0.485714285714286, 0.457142857142857, 0.257142857142857, 0.228571428571429, 0.285714285714286, 0.285714285714286, 0.285714285714286, 0.142857142857143, 0.285714285714286, 0.514285714285714, 0.485714285714286, 0.228571428571429, 0.285714285714286, 0.342857142857143, 0.285714285714286, 0.0857142857142857].to_scale
6
+ @x = [0.285714285714286, 0.114285714285714, 0.314285714285714, 0.2, 0.2, 0.228571428571429, 0.2, 0.4, 0.714285714285714, 0.285714285714286, 0.285714285714286, 0.228571428571429, 0.485714285714286, 0.457142857142857, 0.257142857142857, 0.228571428571429, 0.285714285714286, 0.285714285714286, 0.285714285714286, 0.142857142857143, 0.285714285714286, 0.514285714285714, 0.485714285714286, 0.228571428571429, 0.285714285714286, 0.342857142857143, 0.285714285714286, 0.0857142857142857].to_numeric
7
7
 
8
- @y = [nil, 0.233333333333333, nil, 0.266666666666667, 0.366666666666667, nil, 0.333333333333333, 0.3, 0.666666666666667, 0.0333333333333333, 0.333333333333333, nil, nil, 0.533333333333333, 0.433333333333333, 0.4, 0.4, 0.5, 0.4, 0.266666666666667, 0.166666666666667, 0.666666666666667, 0.433333333333333, 0.166666666666667, nil, 0.4, 0.366666666666667, nil].to_scale
8
+ @y = [nil, 0.233333333333333, nil, 0.266666666666667, 0.366666666666667, nil, 0.333333333333333, 0.3, 0.666666666666667, 0.0333333333333333, 0.333333333333333, nil, nil, 0.533333333333333, 0.433333333333333, 0.4, 0.4, 0.5, 0.4, 0.266666666666667, 0.166666666666667, 0.666666666666667, 0.433333333333333, 0.166666666666667, nil, 0.4, 0.366666666666667, nil].to_numeric
9
9
  @ds = { 'x' => @x, 'y' => @y }.to_dataset
10
10
  @lr = Statsample::Regression::Multiple::RubyEngine.new(@ds, 'y')
11
11
  end
@@ -26,10 +26,10 @@ class StatsampleRegressionTestCase < Minitest::Test
26
26
 
27
27
  a, b = rand, rand
28
28
 
29
- x1 = samples.times.map { rand }.to_scale
30
- x2 = samples.times.map { rand }.to_scale
31
- x3 = samples.times.map { |i| x1[i] * (1 + a) + x2[i] * (1 + b) }.to_scale
32
- y = samples.times.map { |i| x1[i] + x2[i] + x3[i] + rand }.to_scale
29
+ x1 = samples.times.map { rand }.to_numeric
30
+ x2 = samples.times.map { rand }.to_numeric
31
+ x3 = samples.times.map { |i| x1[i] * (1 + a) + x2[i] * (1 + b) }.to_numeric
32
+ y = samples.times.map { |i| x1[i] + x2[i] + x3[i] + rand }.to_numeric
33
33
 
34
34
  ds = { 'x1' => x1, 'x2' => x2, 'x3' => x3, 'y' => y }.to_dataset
35
35
 
@@ -38,8 +38,8 @@ class StatsampleRegressionTestCase < Minitest::Test
38
38
  }
39
39
  end
40
40
  def test_parameters
41
- @x = [13, 20, 10, 33, 15].to_vector(:scale)
42
- @y = [23, 18, 35, 10, 27].to_vector(:scale)
41
+ @x = [13, 20, 10, 33, 15].to_vector(:numeric)
42
+ @y = [23, 18, 35, 10, 27].to_vector(:numeric)
43
43
  reg = Statsample::Regression::Simple.new_from_vectors(@x, @y)
44
44
  _test_simple_regression(reg)
45
45
  ds = { 'x' => @x, 'y' => @y }.to_dataset
@@ -57,9 +57,9 @@ class StatsampleRegressionTestCase < Minitest::Test
57
57
  end
58
58
 
59
59
  def test_summaries
60
- a = 10.times.map { rand(100) }.to_scale
61
- b = 10.times.map { rand(100) }.to_scale
62
- y = 10.times.map { rand(100) }.to_scale
60
+ a = 10.times.map { rand(100) }.to_numeric
61
+ b = 10.times.map { rand(100) }.to_numeric
62
+ y = 10.times.map { rand(100) }.to_numeric
63
63
  ds = { 'a' => a, 'b' => b, 'y' => y }.to_dataset
64
64
  lr = Statsample::Regression::Multiple::RubyEngine.new(ds, 'y')
65
65
  assert(lr.summary.size > 0)
@@ -87,10 +87,10 @@ class StatsampleRegressionTestCase < Minitest::Test
87
87
  end
88
88
 
89
89
  def test_multiple_regression_pairwise_2
90
- @a = [1, 3, 2, 4, 3, 5, 4, 6, 5, 7, 3, nil, 3, nil, 3].to_vector(:scale)
91
- @b = [3, 3, 4, 4, 5, 5, 6, 6, 4, 4, 2, 2, nil, 6, 2].to_vector(:scale)
92
- @c = [11, 22, 30, 40, 50, 65, 78, 79, 99, 100, nil, 3, 7, nil, 7].to_vector(:scale)
93
- @y = [3, 4, 5, 6, 7, 8, 9, 10, 20, 30, 30, 40, nil, 50, nil].to_vector(:scale)
90
+ @a = [1, 3, 2, 4, 3, 5, 4, 6, 5, 7, 3, nil, 3, nil, 3].to_vector(:numeric)
91
+ @b = [3, 3, 4, 4, 5, 5, 6, 6, 4, 4, 2, 2, nil, 6, 2].to_vector(:numeric)
92
+ @c = [11, 22, 30, 40, 50, 65, 78, 79, 99, 100, nil, 3, 7, nil, 7].to_vector(:numeric)
93
+ @y = [3, 4, 5, 6, 7, 8, 9, 10, 20, 30, 30, 40, nil, 50, nil].to_vector(:numeric)
94
94
  ds = { 'a' => @a, 'b' => @b, 'c' => @c, 'y' => @y }.to_dataset
95
95
  lr = Statsample::Regression::Multiple::RubyEngine.new(ds, 'y')
96
96
  assert_in_delta(2407.436, lr.sst, 0.001)
@@ -103,10 +103,10 @@ class StatsampleRegressionTestCase < Minitest::Test
103
103
 
104
104
  def test_multiple_regression_gsl
105
105
  if Statsample.has_gsl?
106
- @a = [1, 3, 2, 4, 3, 5, 4, 6, 5, 7].to_vector(:scale)
107
- @b = [3, 3, 4, 4, 5, 5, 6, 6, 4, 4].to_vector(:scale)
108
- @c = [11, 22, 30, 40, 50, 65, 78, 79, 99, 100].to_vector(:scale)
109
- @y = [3, 4, 5, 6, 7, 8, 9, 10, 20, 30].to_vector(:scale)
106
+ @a = [1, 3, 2, 4, 3, 5, 4, 6, 5, 7].to_vector(:numeric)
107
+ @b = [3, 3, 4, 4, 5, 5, 6, 6, 4, 4].to_vector(:numeric)
108
+ @c = [11, 22, 30, 40, 50, 65, 78, 79, 99, 100].to_vector(:numeric)
109
+ @y = [3, 4, 5, 6, 7, 8, 9, 10, 20, 30].to_vector(:numeric)
110
110
  ds = { 'a' => @a, 'b' => @b, 'c' => @c, 'y' => @y }.to_dataset
111
111
  lr = Statsample::Regression::Multiple::GslEngine.new(ds, 'y')
112
112
  assert(lr.summary.size > 0)
@@ -174,10 +174,10 @@ class StatsampleRegressionTestCase < Minitest::Test
174
174
  end
175
175
 
176
176
  def test_regression_matrix
177
- @a = [1, 3, 2, 4, 3, 5, 4, 6, 5, 7].to_vector(:scale)
178
- @b = [3, 3, 4, 4, 5, 5, 6, 6, 4, 4].to_vector(:scale)
179
- @c = [11, 22, 30, 40, 50, 65, 78, 79, 99, 100].to_vector(:scale)
180
- @y = [3, 4, 5, 6, 7, 8, 9, 10, 20, 30].to_vector(:scale)
177
+ @a = [1, 3, 2, 4, 3, 5, 4, 6, 5, 7].to_vector(:numeric)
178
+ @b = [3, 3, 4, 4, 5, 5, 6, 6, 4, 4].to_vector(:numeric)
179
+ @c = [11, 22, 30, 40, 50, 65, 78, 79, 99, 100].to_vector(:numeric)
180
+ @y = [3, 4, 5, 6, 7, 8, 9, 10, 20, 30].to_vector(:numeric)
181
181
  ds = { 'a' => @a, 'b' => @b, 'c' => @c, 'y' => @y }.to_dataset
182
182
  cor = Statsample::Bivariate.correlation_matrix(ds)
183
183
 
@@ -194,10 +194,10 @@ class StatsampleRegressionTestCase < Minitest::Test
194
194
  end
195
195
 
196
196
  def test_regression_rubyengine
197
- @a = [nil, 1, 3, 2, 4, 3, 5, 4, 6, 5, 7].to_vector(:scale)
198
- @b = [nil, 3, 3, 4, 4, 5, 5, 6, 6, 4, 4].to_vector(:scale)
199
- @c = [nil, 11, 22, 30, 40, 50, 65, 78, 79, 99, 100].to_vector(:scale)
200
- @y = [nil, 3, 4, 5, 6, 7, 8, 9, 10, 20, 30].to_vector(:scale)
197
+ @a = [nil, 1, 3, 2, 4, 3, 5, 4, 6, 5, 7].to_vector(:numeric)
198
+ @b = [nil, 3, 3, 4, 4, 5, 5, 6, 6, 4, 4].to_vector(:numeric)
199
+ @c = [nil, 11, 22, 30, 40, 50, 65, 78, 79, 99, 100].to_vector(:numeric)
200
+ @y = [nil, 3, 4, 5, 6, 7, 8, 9, 10, 20, 30].to_vector(:numeric)
201
201
  ds = { 'a' => @a, 'b' => @b, 'c' => @c, 'y' => @y }.to_dataset
202
202
  lr = Statsample::Regression::Multiple::RubyEngine.new(ds, 'y')
203
203
  assert_equal(11, lr.total_cases)
@@ -16,9 +16,9 @@ class StatsampleReliabilityTestCase < Minitest::Test
16
16
  @samples = 40
17
17
  @n_variables = rand(10) + 2
18
18
  @ds = Statsample::Dataset.new
19
- base = @samples.times.collect { |_a| rand }.to_scale
19
+ base = @samples.times.collect { |_a| rand }.to_numeric
20
20
  @n_variables.times do |i|
21
- @ds[i] = base.collect { |v| v + rand }.to_scale
21
+ @ds[i] = base.collect { |v| v + rand }.to_numeric
22
22
  end
23
23
 
24
24
  @ds.update_valid_data
@@ -67,9 +67,9 @@ class StatsampleReliabilityTestCase < Minitest::Test
67
67
  @samples = 100
68
68
  @points = rand(10) + 3
69
69
  @max_point = (@points - 1) * 3
70
- @x1 = @samples.times.map { rand(@points) }.to_scale
71
- @x2 = @samples.times.map { rand(@points) }.to_scale
72
- @x3 = @samples.times.map { rand(@points) }.to_scale
70
+ @x1 = @samples.times.map { rand(@points) }.to_numeric
71
+ @x2 = @samples.times.map { rand(@points) }.to_numeric
72
+ @x3 = @samples.times.map { rand(@points) }.to_numeric
73
73
  @ds = { 'a' => @x1, 'b' => @x2, 'c' => @x3 }.to_dataset
74
74
  @icc = Statsample::Reliability::ItemCharacteristicCurve.new(@ds)
75
75
  end
@@ -77,11 +77,11 @@ class StatsampleReliabilityTestCase < Minitest::Test
77
77
  assert_equal(@ds.vector_sum, @icc.vector_total)
78
78
  end
79
79
  should 'have a correct different vector_total' do
80
- x2 = @samples.times.map { rand(10) }.to_scale
80
+ x2 = @samples.times.map { rand(10) }.to_numeric
81
81
  @icc = Statsample::Reliability::ItemCharacteristicCurve.new(@ds, x2)
82
82
  assert_equal(x2, @icc.vector_total)
83
83
  assert_raises(ArgumentError) do
84
- inc = (@samples + 10).times.map { rand(10) }.to_scale
84
+ inc = (@samples + 10).times.map { rand(10) }.to_numeric
85
85
  @icc = Statsample::Reliability::ItemCharacteristicCurve.new(@ds, inc)
86
86
  end
87
87
  end
@@ -119,7 +119,7 @@ class StatsampleReliabilityTestCase < Minitest::Test
119
119
  h = {}
120
120
  @scales.times {|s|
121
121
  @items_per_scale.times {|i|
122
- h["#{s}_#{i}"] = (size.times.map { (s * 2) + rand }).to_scale
122
+ h["#{s}_#{i}"] = (size.times.map { (s * 2) + rand }).to_numeric
123
123
  }
124
124
  }
125
125
  @ds = h.to_dataset
@@ -177,10 +177,10 @@ class StatsampleReliabilityTestCase < Minitest::Test
177
177
  end
178
178
  context Statsample::Reliability::ScaleAnalysis do
179
179
  setup do
180
- @x1 = [1, 1, 1, 1, 2, 2, 2, 2, 3, 3, 3, 30].to_scale
181
- @x2 = [1, 1, 1, 2, 2, 3, 3, 3, 3, 4, 4, 50].to_scale
182
- @x3 = [2, 2, 1, 1, 1, 2, 2, 2, 3, 4, 5, 40].to_scale
183
- @x4 = [1, 2, 3, 4, 4, 4, 4, 3, 4, 4, 5, 30].to_scale
180
+ @x1 = [1, 1, 1, 1, 2, 2, 2, 2, 3, 3, 3, 30].to_numeric
181
+ @x2 = [1, 1, 1, 2, 2, 3, 3, 3, 3, 4, 4, 50].to_numeric
182
+ @x3 = [2, 2, 1, 1, 1, 2, 2, 2, 3, 4, 5, 40].to_numeric
183
+ @x4 = [1, 2, 3, 4, 4, 4, 4, 3, 4, 4, 5, 30].to_numeric
184
184
  @ds = { 'x1' => @x1, 'x2' => @x2, 'x3' => @x3, 'x4' => @x4 }.to_dataset
185
185
  @ia = Statsample::Reliability::ScaleAnalysis.new(@ds)
186
186
  @cov_matrix = @ia.cov_m
@@ -188,7 +188,7 @@ class StatsampleReliabilityTestCase < Minitest::Test
188
188
  should 'return correct values for item analysis' do
189
189
  assert_in_delta(0.980, @ia.alpha, 0.001)
190
190
  assert_in_delta(0.999, @ia.alpha_standarized, 0.001)
191
- var_mean = 4.times.map { |m| @cov_matrix[m, m] }.to_scale.mean
191
+ var_mean = 4.times.map { |m| @cov_matrix[m, m] }.to_numeric.mean
192
192
  assert_in_delta(var_mean, @ia.variances_mean)
193
193
  assert_equal(@x1.mean, @ia.item_statistics['x1'][:mean])
194
194
  assert_equal(@x4.mean, @ia.item_statistics['x4'][:mean])
@@ -211,7 +211,7 @@ class StatsampleReliabilityTestCase < Minitest::Test
211
211
  end
212
212
  }
213
213
  }
214
- assert_in_delta(covariances.to_scale.mean, @ia.covariances_mean)
214
+ assert_in_delta(covariances.to_numeric.mean, @ia.covariances_mean)
215
215
  assert_in_delta(0.999, @ia.item_total_correlation['x1'], 0.001)
216
216
  assert_in_delta(1050.455, @ia.stats_if_deleted['x1'][:variance_sample], 0.001)
217
217
  end