statsample 1.5.0 → 2.0.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 (114) hide show
  1. checksums.yaml +4 -4
  2. data/.build.sh +15 -0
  3. data/.gitignore +1 -0
  4. data/.travis.yml +19 -7
  5. data/CONTRIBUTING.md +33 -0
  6. data/History.txt +5 -0
  7. data/README.md +41 -53
  8. data/benchmarks/correlation_matrix_15_variables.rb +6 -5
  9. data/benchmarks/correlation_matrix_5_variables.rb +6 -5
  10. data/benchmarks/correlation_matrix_methods/correlation_matrix.rb +23 -26
  11. data/examples/boxplot.rb +17 -5
  12. data/examples/correlation_matrix.rb +36 -7
  13. data/examples/dataset.rb +25 -5
  14. data/examples/dominance_analysis.rb +8 -7
  15. data/examples/dominance_analysis_bootstrap.rb +16 -11
  16. data/examples/histogram.rb +16 -2
  17. data/examples/icc.rb +5 -6
  18. data/examples/levene.rb +17 -3
  19. data/examples/multiple_regression.rb +6 -3
  20. data/examples/parallel_analysis.rb +11 -6
  21. data/examples/polychoric.rb +26 -13
  22. data/examples/principal_axis.rb +8 -4
  23. data/examples/reliability.rb +10 -10
  24. data/examples/scatterplot.rb +8 -0
  25. data/examples/t_test.rb +7 -0
  26. data/examples/u_test.rb +10 -2
  27. data/examples/vector.rb +9 -6
  28. data/examples/velicer_map_test.rb +12 -8
  29. data/lib/statsample.rb +13 -47
  30. data/lib/statsample/analysis/suite.rb +1 -1
  31. data/lib/statsample/anova/oneway.rb +6 -6
  32. data/lib/statsample/anova/twoway.rb +26 -24
  33. data/lib/statsample/bivariate.rb +78 -61
  34. data/lib/statsample/bivariate/pearson.rb +2 -2
  35. data/lib/statsample/codification.rb +45 -32
  36. data/lib/statsample/converter/csv.rb +15 -53
  37. data/lib/statsample/converter/spss.rb +6 -5
  38. data/lib/statsample/converters.rb +50 -211
  39. data/lib/statsample/crosstab.rb +26 -25
  40. data/lib/statsample/daru.rb +117 -0
  41. data/lib/statsample/dataset.rb +70 -942
  42. data/lib/statsample/dominanceanalysis.rb +16 -17
  43. data/lib/statsample/dominanceanalysis/bootstrap.rb +26 -28
  44. data/lib/statsample/factor/parallelanalysis.rb +17 -19
  45. data/lib/statsample/factor/pca.rb +21 -20
  46. data/lib/statsample/factor/principalaxis.rb +3 -3
  47. data/lib/statsample/graph/boxplot.rb +8 -16
  48. data/lib/statsample/graph/histogram.rb +4 -4
  49. data/lib/statsample/graph/scatterplot.rb +8 -7
  50. data/lib/statsample/histogram.rb +128 -119
  51. data/lib/statsample/matrix.rb +20 -16
  52. data/lib/statsample/multiset.rb +39 -38
  53. data/lib/statsample/regression.rb +3 -3
  54. data/lib/statsample/regression/multiple.rb +8 -10
  55. data/lib/statsample/regression/multiple/alglibengine.rb +96 -89
  56. data/lib/statsample/regression/multiple/baseengine.rb +32 -32
  57. data/lib/statsample/regression/multiple/gslengine.rb +33 -36
  58. data/lib/statsample/regression/multiple/matrixengine.rb +7 -9
  59. data/lib/statsample/regression/multiple/rubyengine.rb +39 -41
  60. data/lib/statsample/reliability.rb +23 -25
  61. data/lib/statsample/reliability/icc.rb +8 -7
  62. data/lib/statsample/reliability/multiscaleanalysis.rb +14 -12
  63. data/lib/statsample/reliability/scaleanalysis.rb +58 -60
  64. data/lib/statsample/reliability/skillscaleanalysis.rb +34 -29
  65. data/lib/statsample/resample.rb +1 -1
  66. data/lib/statsample/shorthand.rb +29 -25
  67. data/lib/statsample/test/kolmogorovsmirnov.rb +5 -3
  68. data/lib/statsample/test/levene.rb +28 -27
  69. data/lib/statsample/test/t.rb +7 -9
  70. data/lib/statsample/test/umannwhitney.rb +28 -28
  71. data/lib/statsample/test/wilcoxonsignedrank.rb +45 -43
  72. data/lib/statsample/vector.rb +70 -1013
  73. data/lib/statsample/version.rb +1 -1
  74. data/statsample.gemspec +12 -16
  75. data/test/helpers_tests.rb +1 -1
  76. data/test/test_analysis.rb +17 -17
  77. data/test/test_anova_contrast.rb +6 -6
  78. data/test/test_anovatwowaywithdataset.rb +8 -8
  79. data/test/test_anovawithvectors.rb +8 -8
  80. data/test/test_awesome_print_bug.rb +1 -1
  81. data/test/test_bartlettsphericity.rb +4 -4
  82. data/test/test_bivariate.rb +48 -43
  83. data/test/test_codification.rb +33 -33
  84. data/test/test_crosstab.rb +9 -9
  85. data/test/test_dataset.rb +28 -458
  86. data/test/test_factor.rb +46 -38
  87. data/test/test_factor_pa.rb +22 -13
  88. data/test/test_ggobi.rb +4 -4
  89. data/test/test_gsl.rb +4 -4
  90. data/test/test_histogram.rb +3 -3
  91. data/test/test_matrix.rb +13 -13
  92. data/test/test_multiset.rb +103 -91
  93. data/test/test_regression.rb +57 -52
  94. data/test/test_reliability.rb +55 -45
  95. data/test/test_reliability_icc.rb +8 -8
  96. data/test/test_reliability_skillscale.rb +26 -24
  97. data/test/test_resample.rb +1 -1
  98. data/test/test_statistics.rb +3 -13
  99. data/test/test_stest.rb +9 -9
  100. data/test/test_stratified.rb +3 -3
  101. data/test/test_test_t.rb +12 -12
  102. data/test/test_umannwhitney.rb +2 -2
  103. data/test/test_vector.rb +76 -613
  104. data/test/test_wilcoxonsignedrank.rb +4 -4
  105. metadata +57 -28
  106. data/lib/statsample/rserve_extension.rb +0 -20
  107. data/lib/statsample/vector/gsl.rb +0 -106
  108. data/test/fixtures/repeated_fields.csv +0 -7
  109. data/test/fixtures/scientific_notation.csv +0 -4
  110. data/test/fixtures/test_csv.csv +0 -7
  111. data/test/fixtures/test_xls.xls +0 -0
  112. data/test/test_csv.rb +0 -63
  113. data/test/test_rserve_extension.rb +0 -42
  114. data/test/test_xls.rb +0 -52
@@ -5,8 +5,8 @@ class StatsampleUMannWhitneyTestCase < Minitest::Test
5
5
  context Statsample::Test::WilcoxonSignedRank do
6
6
  context 'Example 1' do
7
7
  setup do
8
- @v1 = [110, 122, 125, 120, 140, 124, 123, 137, 135, 145].to_numeric
9
- @v2 = [125, 115, 130, 140, 140, 115, 140, 125, 140, 135].to_numeric
8
+ @v1 = Daru::Vector.new([110, 122, 125, 120, 140, 124, 123, 137, 135, 145])
9
+ @v2 = Daru::Vector.new([125, 115, 130, 140, 140, 115, 140, 125, 140, 135])
10
10
  @u = Statsample::Test::WilcoxonSignedRank.new(@v1, @v2)
11
11
  end
12
12
  should 'have same result using class or Test#u_mannwhitney' do
@@ -34,8 +34,8 @@ class StatsampleUMannWhitneyTestCase < Minitest::Test
34
34
 
35
35
  context 'Example 2' do
36
36
  setup do
37
- @v2 = [78, 24, 64, 45, 64, 52, 30, 50, 64, 50, 78, 22, 84, 40, 90, 72].to_numeric
38
- @v1 = [78, 24, 62, 48, 68, 56, 25, 44, 56, 40, 68, 36, 68, 20, 58, 32].to_numeric
37
+ @v2 = Daru::Vector.new([78, 24, 64, 45, 64, 52, 30, 50, 64, 50, 78, 22, 84, 40, 90, 72])
38
+ @v1 = Daru::Vector.new([78, 24, 62, 48, 68, 56, 25, 44, 56, 40, 68, 36, 68, 20, 58, 32])
39
39
  @u = Statsample::Test::WilcoxonSignedRank.new(@v1, @v2)
40
40
  end
41
41
  should 'have same result using class or Test#u_mannwhitney' do
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: statsample
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.5.0
4
+ version: 2.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Claudio Bustos
@@ -9,22 +9,36 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2015-06-11 00:00:00.000000000 Z
12
+ date: 2015-06-22 00:00:00.000000000 Z
13
13
  dependencies:
14
+ - !ruby/object:Gem::Dependency
15
+ name: daru
16
+ requirement: !ruby/object:Gem::Requirement
17
+ requirements:
18
+ - - "~>"
19
+ - !ruby/object:Gem::Version
20
+ version: '0.1'
21
+ type: :runtime
22
+ prerelease: false
23
+ version_requirements: !ruby/object:Gem::Requirement
24
+ requirements:
25
+ - - "~>"
26
+ - !ruby/object:Gem::Version
27
+ version: '0.1'
14
28
  - !ruby/object:Gem::Dependency
15
29
  name: spreadsheet
16
30
  requirement: !ruby/object:Gem::Requirement
17
31
  requirements:
18
32
  - - "~>"
19
33
  - !ruby/object:Gem::Version
20
- version: 0.6.5
34
+ version: 1.0.3
21
35
  type: :runtime
22
36
  prerelease: false
23
37
  version_requirements: !ruby/object:Gem::Requirement
24
38
  requirements:
25
39
  - - "~>"
26
40
  - !ruby/object:Gem::Version
27
- version: 0.6.5
41
+ version: 1.0.3
28
42
  - !ruby/object:Gem::Dependency
29
43
  name: reportbuilder
30
44
  requirement: !ruby/object:Gem::Requirement
@@ -73,14 +87,14 @@ dependencies:
73
87
  requirements:
74
88
  - - "~>"
75
89
  - !ruby/object:Gem::Version
76
- version: '0.3'
90
+ version: '0.4'
77
91
  type: :runtime
78
92
  prerelease: false
79
93
  version_requirements: !ruby/object:Gem::Requirement
80
94
  requirements:
81
95
  - - "~>"
82
96
  - !ruby/object:Gem::Version
83
- version: '0.3'
97
+ version: '0.4'
84
98
  - !ruby/object:Gem::Dependency
85
99
  name: rserve-client
86
100
  requirement: !ruby/object:Gem::Requirement
@@ -101,14 +115,14 @@ dependencies:
101
115
  requirements:
102
116
  - - "~>"
103
117
  - !ruby/object:Gem::Version
104
- version: 0.5.0
118
+ version: 0.6.1
105
119
  type: :runtime
106
120
  prerelease: false
107
121
  version_requirements: !ruby/object:Gem::Requirement
108
122
  requirements:
109
123
  - - "~>"
110
124
  - !ruby/object:Gem::Version
111
- version: 0.5.0
125
+ version: 0.6.1
112
126
  - !ruby/object:Gem::Dependency
113
127
  name: distribution
114
128
  requirement: !ruby/object:Gem::Requirement
@@ -143,14 +157,14 @@ dependencies:
143
157
  requirements:
144
158
  - - "~>"
145
159
  - !ruby/object:Gem::Version
146
- version: '1.7'
160
+ version: '1.10'
147
161
  type: :development
148
162
  prerelease: false
149
163
  version_requirements: !ruby/object:Gem::Requirement
150
164
  requirements:
151
165
  - - "~>"
152
166
  - !ruby/object:Gem::Version
153
- version: '1.7'
167
+ version: '1.10'
154
168
  - !ruby/object:Gem::Dependency
155
169
  name: rake
156
170
  requirement: !ruby/object:Gem::Requirement
@@ -213,14 +227,14 @@ dependencies:
213
227
  requirements:
214
228
  - - "~>"
215
229
  - !ruby/object:Gem::Version
216
- version: '5.5'
230
+ version: '5.7'
217
231
  type: :development
218
232
  prerelease: false
219
233
  version_requirements: !ruby/object:Gem::Requirement
220
234
  requirements:
221
235
  - - "~>"
222
236
  - !ruby/object:Gem::Version
223
- version: '5.5'
237
+ version: '5.7'
224
238
  - !ruby/object:Gem::Dependency
225
239
  name: gettext
226
240
  requirement: !ruby/object:Gem::Requirement
@@ -249,6 +263,34 @@ dependencies:
249
263
  - - "~>"
250
264
  - !ruby/object:Gem::Version
251
265
  version: '1.1'
266
+ - !ruby/object:Gem::Dependency
267
+ name: nmatrix
268
+ requirement: !ruby/object:Gem::Requirement
269
+ requirements:
270
+ - - "~>"
271
+ - !ruby/object:Gem::Version
272
+ version: 0.1.0
273
+ type: :development
274
+ prerelease: false
275
+ version_requirements: !ruby/object:Gem::Requirement
276
+ requirements:
277
+ - - "~>"
278
+ - !ruby/object:Gem::Version
279
+ version: 0.1.0
280
+ - !ruby/object:Gem::Dependency
281
+ name: gsl-nmatrix
282
+ requirement: !ruby/object:Gem::Requirement
283
+ requirements:
284
+ - - "~>"
285
+ - !ruby/object:Gem::Version
286
+ version: 1.17.0
287
+ type: :development
288
+ prerelease: false
289
+ version_requirements: !ruby/object:Gem::Requirement
290
+ requirements:
291
+ - - "~>"
292
+ - !ruby/object:Gem::Version
293
+ version: 1.17.0
252
294
  description: |
253
295
  A suite for basic and advanced statistics on Ruby. Tested on CRuby 1.9.3, 2.0.0
254
296
  and 2.1.1. See `.travis.yml` for more information.
@@ -257,7 +299,6 @@ description: |
257
299
 
258
300
  - Descriptive statistics: frequencies, median, mean,
259
301
  standard error, skew, kurtosis (and many others).
260
- - Imports and exports datasets from and to Excel, CSV and plain text files.
261
302
  - Correlations: Pearson's r, Spearman's rank correlation (rho), point biserial,
262
303
  tau a, tau b and gamma. Tetrachoric and Polychoric correlation provides by
263
304
  statsample-bivariate-extension gem.
@@ -287,8 +328,10 @@ extra_rdoc_files:
287
328
  - README.md
288
329
  - references.txt
289
330
  files:
331
+ - ".build.sh"
290
332
  - ".gitignore"
291
333
  - ".travis.yml"
334
+ - CONTRIBUTING.md
292
335
  - Gemfile
293
336
  - History.txt
294
337
  - LICENSE.txt
@@ -344,6 +387,7 @@ files:
344
387
  - lib/statsample/converter/spss.rb
345
388
  - lib/statsample/converters.rb
346
389
  - lib/statsample/crosstab.rb
390
+ - lib/statsample/daru.rb
347
391
  - lib/statsample/dataset.rb
348
392
  - lib/statsample/dominanceanalysis.rb
349
393
  - lib/statsample/dominanceanalysis/bootstrap.rb
@@ -374,7 +418,6 @@ files:
374
418
  - lib/statsample/reliability/scaleanalysis.rb
375
419
  - lib/statsample/reliability/skillscaleanalysis.rb
376
420
  - lib/statsample/resample.rb
377
- - lib/statsample/rserve_extension.rb
378
421
  - lib/statsample/shorthand.rb
379
422
  - lib/statsample/srs.rb
380
423
  - lib/statsample/test.rb
@@ -387,7 +430,6 @@ files:
387
430
  - lib/statsample/test/umannwhitney.rb
388
431
  - lib/statsample/test/wilcoxonsignedrank.rb
389
432
  - lib/statsample/vector.rb
390
- - lib/statsample/vector/gsl.rb
391
433
  - lib/statsample/version.rb
392
434
  - po/es/statsample.mo
393
435
  - po/es/statsample.po
@@ -397,11 +439,7 @@ files:
397
439
  - test/fixtures/bank2.dat
398
440
  - test/fixtures/correlation_matrix.rb
399
441
  - test/fixtures/hartman_23.matrix
400
- - test/fixtures/repeated_fields.csv
401
- - test/fixtures/scientific_notation.csv
402
442
  - test/fixtures/stock_data.csv
403
- - test/fixtures/test_csv.csv
404
- - test/fixtures/test_xls.xls
405
443
  - test/fixtures/tetmat_matrix.txt
406
444
  - test/fixtures/tetmat_test.txt
407
445
  - test/helpers_tests.rb
@@ -416,7 +454,6 @@ files:
416
454
  - test/test_bivariate.rb
417
455
  - test/test_codification.rb
418
456
  - test/test_crosstab.rb
419
- - test/test_csv.rb
420
457
  - test/test_dataset.rb
421
458
  - test/test_dominance_analysis.rb
422
459
  - test/test_factor.rb
@@ -432,7 +469,6 @@ files:
432
469
  - test/test_reliability_icc.rb
433
470
  - test/test_reliability_skillscale.rb
434
471
  - test/test_resample.rb
435
- - test/test_rserve_extension.rb
436
472
  - test/test_srs.rb
437
473
  - test/test_statistics.rb
438
474
  - test/test_stest.rb
@@ -443,7 +479,6 @@ files:
443
479
  - test/test_umannwhitney.rb
444
480
  - test/test_vector.rb
445
481
  - test/test_wilcoxonsignedrank.rb
446
- - test/test_xls.rb
447
482
  homepage: https://github.com/sciruby/statsample
448
483
  licenses: []
449
484
  metadata: {}
@@ -452,12 +487,6 @@ post_install_message: |
452
487
 
453
488
  Thanks for installing statsample.
454
489
 
455
- On *nix, you could install statsample-optimization
456
- to retrieve gems gsl, statistics2 and a C extension
457
- to speed some methods.
458
-
459
- $ [sudo] gem install statsample-optimization
460
-
461
490
  *****************************************************
462
491
  rdoc_options:
463
492
  - "--main"
@@ -1,20 +0,0 @@
1
- # Several additions to Statsample objects, to support
2
- # rserve-client
3
-
4
- module Statsample
5
- class Vector
6
- def to_REXP
7
- Rserve::REXP::Wrapper.wrap(data_with_nils)
8
- end
9
- end
10
- class Dataset
11
- def to_REXP
12
- names=@fields
13
- data=@fields.map {|f|
14
- Rserve::REXP::Wrapper.wrap(@vectors[f].data_with_nils)
15
- }
16
- l=Rserve::Rlist.new(data,names)
17
- Rserve::REXP.create_data_frame(l)
18
- end
19
- end
20
- end
@@ -1,106 +0,0 @@
1
- module Statsample
2
- class Vector
3
- module GSL_
4
- def clear_gsl
5
- @gsl=nil
6
- end
7
-
8
- def set_valid_data
9
- clear_gsl
10
- set_valid_data_ruby
11
- end
12
- def push(v)
13
- # If data is GSL::Vector, should be converted first to an Array
14
- if @data.is_a? GSL::Vector
15
- @data=@data.to_a
16
- end
17
- push_ruby(v)
18
- end
19
-
20
- def gsl
21
- @gsl||=GSL::Vector.alloc(@numeric_data) if @numeric_data.size>0
22
- end
23
-
24
- alias :to_gsl :gsl
25
- def vector_standarized_compute(m,sd)
26
- if flawed?
27
- vector_standarized_compute_ruby(m,sd)
28
- else
29
- gsl.collect {|x| (x.to_f - m).quo(sd)}.to_numeric
30
- end
31
- end
32
-
33
- def vector_centered_compute(m)
34
- if flawed?
35
- vector_centered_compute_ruby(m)
36
- else
37
- gsl.collect {|x| (x.to_f - m)}.to_numeric
38
- end
39
- end
40
- def sample_with_replacement(sample=1)
41
- if(@type!=:numeric)
42
- sample_with_replacement_ruby(sample)
43
- else
44
- r = GSL::Rng.alloc(GSL::Rng::MT19937,rand(10000))
45
- Statsample::Vector.new(r.sample(gsl, sample).to_a,:numeric)
46
- end
47
- end
48
-
49
- def sample_without_replacement(sample=1)
50
- if(@type!=:numeric)
51
- sample_without_replacement_ruby(sample)
52
- else
53
- r = GSL::Rng.alloc(GSL::Rng::MT19937,rand(10000))
54
- r.choose(gsl, sample).to_a
55
- end
56
- end
57
- def median
58
- if @type!=:numeric
59
- median_ruby
60
- else
61
- sorted=GSL::Vector.alloc(@numeric_data.sort)
62
- GSL::Stats::median_from_sorted_data(sorted)
63
- end
64
- end
65
-
66
- def sum
67
- check_type :numeric
68
- gsl.nil? ? nil : gsl.sum
69
- end
70
- def mean
71
- check_type :numeric
72
- gsl.nil? ? nil : gsl.mean
73
- end
74
- def variance_sample(m=nil)
75
- check_type :numeric
76
- m||=mean
77
- gsl.nil? ? nil : gsl.variance_m
78
- end
79
-
80
- def standard_deviation_sample(m=nil)
81
- check_type :numeric
82
- m||=mean
83
- gsl.nil? ? nil : gsl.sd(m)
84
- end
85
-
86
- def variance_population(m=nil) # :nodoc:
87
- check_type :numeric
88
- m||=mean
89
- gsl.nil? ? nil : gsl.variance_with_fixed_mean(m)
90
- end
91
- def standard_deviation_population(m=nil) # :nodoc:
92
- check_type :numeric
93
- m||=mean
94
- gsl.nil? ? nil : gsl.sd_with_fixed_mean(m)
95
- end
96
- def skew # :nodoc:
97
- check_type :numeric
98
- gsl.nil? ? nil : gsl.skew
99
- end
100
- def kurtosis # :nodoc:
101
- check_type :numeric
102
- gsl.nil? ? nil : gsl.kurtosis
103
- end
104
- end
105
- end
106
- end
@@ -1,7 +0,0 @@
1
- "id","name","age","city","a1","name","age"
2
- 1,"Alex",20,"New York","a,b","a",3
3
- 2,"Claude",23,"London","b,c","b",4
4
- 3,"Peter",25,"London","a","c",5
5
- 4,"Franz",27,"Paris",,"d",6
6
- 5,"George","5,5","Tome","a,b,c","f",
7
- 6,"Fernand",20,"London","c,b","f",8
@@ -1,4 +0,0 @@
1
- x,y
2
- 1,9.629587310436753e+127
3
- 2,1.9341543147883677e+129
4
- 3,3.88485279048245e+130
@@ -1,7 +0,0 @@
1
- "id","name","age","city","a1"
2
- 1,"Alex",20,"New York","a,b"
3
- 2,"Claude",23,"London","b,c"
4
- 3,"Peter",25,"London","a"
5
- 4,"Franz",27,"Paris",
6
- 5,"George","5,5","Tome","a,b,c"
7
- 6,"Fernand",,,
Binary file
@@ -1,63 +0,0 @@
1
- require 'helpers_tests.rb'
2
-
3
- class StatsampleCSVTestCase < Minitest::Test
4
- def setup
5
- @ds = Statsample::CSV.read('test/fixtures/test_csv.csv')
6
- end
7
-
8
- def test_read
9
- header = %w(id name age city a1)
10
- data = {
11
- 'id' => [1, 2, 3, 4, 5, 6].to_vector(:numeric),
12
- 'name' => %w(Alex Claude Peter Franz George Fernand).to_vector(:object),
13
- 'age' => [20, 23, 25, 27, 5.5, nil].to_vector(:numeric),
14
- 'city' => ['New York', 'London', 'London', 'Paris', 'Tome', nil].to_vector(:object),
15
- 'a1' => ['a,b', 'b,c', 'a', nil, 'a,b,c', nil].to_vector(:object)
16
- }
17
-
18
- ds_exp = Statsample::Dataset.new(data, header)
19
-
20
- assert_equal(6, @ds.cases)
21
- assert_equal(header, @ds.fields)
22
-
23
- ds_exp.fields.each do |f|
24
- assert_equal(ds_exp[f], @ds[f])
25
- end
26
-
27
- assert_equal(ds_exp, @ds)
28
- end
29
-
30
- def test_nil
31
- assert_equal(nil, @ds['age'][5])
32
- end
33
-
34
- def test_repeated
35
- ds = Statsample::CSV.read('test/fixtures/repeated_fields.csv')
36
- assert_equal(%w(id name_1 age_1 city a1 name_2 age_2), ds.fields)
37
- age = [3, 4, 5, 6, nil, 8].to_vector(:numeric)
38
- assert_equal(age, ds['age_2'])
39
- end
40
-
41
- # Testing fix for SciRuby/statsample#19.
42
- def test_accept_scientific_notation_as_float
43
- ds = Statsample::CSV.read('test/fixtures/scientific_notation.csv')
44
- assert_equal(%w(x y), ds.fields)
45
- y = [9.629587310436753e+127, 1.9341543147883677e+129, 3.88485279048245e+130]
46
- y.zip(ds['y']).each do |y_expected, y_ds|
47
- assert_in_delta(y_expected, y_ds)
48
- end
49
-
50
- end
51
-
52
- def test_write
53
- filename = Tempfile.new('afile')
54
- Statsample::CSV.write(@ds, filename.path)
55
- ds2 = Statsample::CSV.read(filename.path)
56
- i = 0
57
-
58
- ds2.each_array do |row|
59
- assert_equal(@ds.case_as_array(i), row)
60
- i += 1
61
- end
62
- end
63
- end