statsample 0.7.0 → 0.8.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.
- data/History.txt +7 -0
- data/Manifest.txt +15 -9
- data/README.txt +6 -0
- data/Rakefile +8 -0
- data/{demo → examples}/correlation_matrix.rb +0 -0
- data/{demo/dominanceanalysis.rb → examples/dominance_analysis.rb} +0 -0
- data/{demo → examples}/dominance_analysis_bootstrap.rb +0 -0
- data/{demo → examples}/levene.rb +0 -0
- data/{demo → examples}/multiple_regression.rb +5 -3
- data/{demo → examples}/multivariate_correlation.rb +0 -0
- data/{demo → examples}/polychoric.rb +0 -0
- data/{demo → examples}/principal_axis.rb +0 -0
- data/examples/t_test.rb +11 -0
- data/{demo → examples}/tetrachoric.rb +0 -0
- data/lib/statistics2.rb +1 -1
- data/lib/statsample.rb +57 -6
- data/lib/statsample/bivariate/polychoric.rb +12 -25
- data/lib/statsample/bivariate/tetrachoric.rb +1 -3
- data/lib/statsample/converter/csv.rb +11 -12
- data/lib/statsample/dominanceanalysis/bootstrap.rb +2 -3
- data/lib/statsample/factor/principalaxis.rb +0 -2
- data/lib/statsample/factor/rotation.rb +6 -8
- data/lib/statsample/graph.rb +8 -0
- data/lib/statsample/graph/svggraph.rb +0 -4
- data/lib/statsample/regression/multiple/baseengine.rb +25 -28
- data/lib/statsample/regression/multiple/matrixengine.rb +30 -34
- data/lib/statsample/test.rb +36 -1
- data/lib/statsample/test/levene.rb +11 -7
- data/lib/statsample/test/t.rb +189 -0
- data/test/test_anova.rb +8 -10
- data/test/test_bivariate.rb +40 -37
- data/test/test_codification.rb +9 -13
- data/test/test_combination.rb +37 -39
- data/test/test_crosstab.rb +46 -48
- data/test/test_csv.rb +40 -45
- data/test/test_dataset.rb +150 -152
- data/test/test_distribution.rb +24 -21
- data/test/test_dominance_analysis.rb +10 -12
- data/test/test_factor.rb +95 -91
- data/test/test_ggobi.rb +30 -33
- data/test/test_gsl.rb +4 -4
- data/test/test_helpers.rb +26 -0
- data/test/test_histogram.rb +5 -6
- data/test/test_logit.rb +20 -21
- data/test/test_matrix.rb +47 -48
- data/test/test_mle.rb +130 -131
- data/test/test_multiset.rb +95 -96
- data/test/test_permutation.rb +35 -36
- data/test/test_promise_after.rb +39 -0
- data/test/test_regression.rb +49 -51
- data/test/test_reliability.rb +29 -30
- data/test/test_resample.rb +22 -23
- data/test/test_srs.rb +8 -9
- data/test/test_statistics.rb +12 -6
- data/test/test_stest.rb +18 -10
- data/test/test_stratified.rb +15 -16
- data/test/test_svg_graph.rb +11 -22
- data/test/test_test_t.rb +40 -0
- data/test/test_umannwhitney.rb +14 -15
- data/test/test_vector.rb +33 -37
- data/test/test_xls.rb +34 -41
- metadata +22 -11
data/test/test_statistics.rb
CHANGED
@@ -1,11 +1,19 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
|
4
|
-
class StatsampleStatisicsTestCase < Test::Unit::TestCase
|
1
|
+
require(File.dirname(__FILE__)+'/test_helpers.rb')
|
2
|
+
|
3
|
+
class StatsampleStatisicsTestCase < MiniTest::Unit::TestCase
|
5
4
|
|
6
5
|
def initialize(*args)
|
7
6
|
super
|
8
7
|
end
|
8
|
+
def test_p_using_cdf
|
9
|
+
assert_equal(0.25, Statsample::Test.p_using_cdf(0.25, tails=:left))
|
10
|
+
assert_equal(0.75, Statsample::Test.p_using_cdf(0.25, tails=:right))
|
11
|
+
assert_equal(0.50, Statsample::Test.p_using_cdf(0.25, tails=:both))
|
12
|
+
assert_equal(1, Statsample::Test.p_using_cdf(0.50, tails=:both))
|
13
|
+
assert_equal(0.05, Statsample::Test.p_using_cdf(0.025, tails=:both))
|
14
|
+
assert_in_delta(0.05, Statsample::Test.p_using_cdf(0.975, tails=:both),0.0001)
|
15
|
+
|
16
|
+
end
|
9
17
|
def test_recode_repeated
|
10
18
|
a=%w{a b c c d d d e}
|
11
19
|
exp=["a","b","c_1","c_2","d_1","d_2","d_3","e"]
|
@@ -23,8 +31,6 @@ class StatsampleStatisicsTestCase < Test::Unit::TestCase
|
|
23
31
|
assert(!"".is_number?)
|
24
32
|
|
25
33
|
end
|
26
|
-
|
27
|
-
|
28
34
|
def test_estimation_mean
|
29
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)
|
30
36
|
assert_equal(50,v.size)
|
data/test/test_stest.rb
CHANGED
@@ -1,9 +1,7 @@
|
|
1
|
-
|
2
|
-
require 'statsample'
|
3
|
-
require "tempfile"
|
4
|
-
require 'test/unit'
|
1
|
+
require(File.dirname(__FILE__)+'/test_helpers.rb')
|
5
2
|
|
6
|
-
|
3
|
+
|
4
|
+
class StatsampleTestTestCase < MiniTest::Unit::TestCase
|
7
5
|
def test_chi_square
|
8
6
|
real=Matrix[[95,95],[45,155]]
|
9
7
|
expected=Matrix[[68,122],[72,128]]
|
@@ -22,14 +20,24 @@ class StatsampleStatisticalTestCase < Test::Unit::TestCase
|
|
22
20
|
b=[2,3,4,5,6,12].to_scale
|
23
21
|
assert_equal(11, Statsample::Test.u_mannwhitney(a,b).u)
|
24
22
|
end
|
25
|
-
|
26
|
-
|
23
|
+
|
24
|
+
|
27
25
|
def test_levene
|
28
|
-
|
29
26
|
a=[1,2,3,4,5,6,7,8,100,10].to_scale
|
30
|
-
b=[30,40,50,60,70,80,90,100,110,120].to_scale
|
27
|
+
b=[30,40,50,60,70,80,90,100,110,120].to_scale
|
31
28
|
levene=Statsample::Test::Levene.new([a,b])
|
29
|
+
assert_levene(levene)
|
30
|
+
end
|
31
|
+
def test_levene_dataset
|
32
|
+
a=[1,2,3,4,5,6,7,8,100,10].to_scale
|
33
|
+
b=[30,40,50,60,70,80,90,100,110,120].to_scale
|
34
|
+
ds={'a'=>a,'b'=>b}.to_dataset
|
35
|
+
levene=Statsample::Test::Levene.new(ds)
|
36
|
+
assert_levene(levene)
|
37
|
+
end
|
38
|
+
def assert_levene(levene)
|
32
39
|
assert_in_delta(0.778, levene.f, 0.001)
|
33
40
|
assert_in_delta(0.389, levene.probability, 0.001)
|
34
41
|
end
|
35
|
-
|
42
|
+
|
43
|
+
end
|
data/test/test_stratified.rb
CHANGED
@@ -1,19 +1,18 @@
|
|
1
|
-
|
2
|
-
require 'statsample'
|
3
|
-
require 'test/unit'
|
1
|
+
require(File.dirname(__FILE__)+'/test_helpers.rb')
|
4
2
|
|
5
|
-
class StatsampleStratifiedTestCase < Test::Unit::TestCase
|
6
3
|
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
4
|
+
class StatsampleStratifiedTestCase < MiniTest::Unit::TestCase
|
5
|
+
|
6
|
+
def initialize(*args)
|
7
|
+
super
|
8
|
+
end
|
9
|
+
def test_mean
|
10
|
+
a=[10,20,30,40,50]
|
11
|
+
b=[110,120,130,140]
|
12
|
+
pop=a+b
|
13
|
+
av=a.to_vector(:scale)
|
14
|
+
bv=b.to_vector(:scale)
|
15
|
+
popv=pop.to_vector(:scale)
|
16
|
+
assert_equal(popv.mean,Statsample::StratifiedSample.mean(av,bv))
|
17
|
+
end
|
19
18
|
end
|
data/test/test_svg_graph.rb
CHANGED
@@ -1,36 +1,28 @@
|
|
1
|
-
|
2
|
-
require
|
3
|
-
|
4
|
-
require 'tempfile'
|
5
|
-
require 'tempfile'
|
6
|
-
require 'fileutils'
|
7
|
-
require 'test/unit'
|
8
|
-
begin
|
9
|
-
require 'statsample/graph/svggraph'
|
10
|
-
class StatsampleSvgGraphTestCase < Test::Unit::TestCase
|
1
|
+
require(File.dirname(__FILE__)+'/test_helpers.rb')
|
2
|
+
require('statsample/graph')
|
3
|
+
class StatsampleSvgGraphTestCase < MiniTest::Unit::TestCase
|
11
4
|
|
12
|
-
def
|
13
|
-
|
14
|
-
|
15
|
-
super
|
5
|
+
def setup
|
6
|
+
@image_path=Dir::tmpdir+"/images"
|
7
|
+
FileUtils.mkdir(@image_path) if !File.exists? @image_path
|
16
8
|
end
|
17
9
|
def test_histogram
|
18
10
|
if Statsample.has_gsl?
|
19
11
|
ar=(1..1000).to_a.collect {|a|
|
20
|
-
|
21
|
-
|
12
|
+
rand(10)
|
13
|
+
}.to_vector(:scale)
|
22
14
|
h=ar.histogram([0,2,5,11])
|
23
15
|
file=Tempfile.new("svg_histogram_only.svg")
|
24
16
|
graph = Statsample::Graph::SvgHistogram.new({})
|
25
17
|
graph.histogram=h
|
26
18
|
file.puts(graph.burn)
|
27
19
|
else
|
28
|
-
|
20
|
+
puts "Statsample::Graph::SvgHistogram.new not tested (no ruby-gsl)"
|
29
21
|
end
|
30
22
|
end
|
31
23
|
def assert_svg(msg=nil)
|
32
24
|
msg||="%s isn't a svg file"
|
33
|
-
Tempfile.open("svg") do |fp|
|
25
|
+
Tempfile.open("svg") do |fp|
|
34
26
|
yield fp
|
35
27
|
fp.close
|
36
28
|
fp.open
|
@@ -49,7 +41,7 @@ class StatsampleSvgGraphTestCase < Test::Unit::TestCase
|
|
49
41
|
assert_svg {|file| vector.svggraph_frequencies(file,800,600, SVG::Graph::PieNoOp, :graph_title=>'Pie') }
|
50
42
|
vector.type=:scale
|
51
43
|
if Statsample.has_gsl?
|
52
|
-
|
44
|
+
file=Tempfile.new("svg_histogram.svg").path
|
53
45
|
hist=vector.svggraph_histogram(5)
|
54
46
|
File.open(file,"wb") {|fp|
|
55
47
|
fp.write(hist.burn)
|
@@ -60,6 +52,3 @@ class StatsampleSvgGraphTestCase < Test::Unit::TestCase
|
|
60
52
|
end
|
61
53
|
end
|
62
54
|
end
|
63
|
-
rescue LoadError
|
64
|
-
puts "You should install SVG::Graph"
|
65
|
-
end
|
data/test/test_test_t.rb
ADDED
@@ -0,0 +1,40 @@
|
|
1
|
+
require(File.dirname(__FILE__)+'/test_helpers.rb')
|
2
|
+
|
3
|
+
class StatsampleTestTTestCase < MiniTest::Unit::TestCase
|
4
|
+
def setup
|
5
|
+
@a=[30.02, 29.99, 30.11, 29.97, 30.01, 29.99].to_scale
|
6
|
+
@b=[29.89, 29.93, 29.72, 29.98, 30.02, 29.98].to_scale
|
7
|
+
@x1=@a.mean
|
8
|
+
@x2=@b.mean
|
9
|
+
@s1=@a.sd
|
10
|
+
@s2=@b.sd
|
11
|
+
@n1=@a.n
|
12
|
+
@n2=@b.n
|
13
|
+
end
|
14
|
+
def test_t_sample_independent_t
|
15
|
+
assert_in_delta(1.959, Statsample::Test::T.two_sample_independent(@x1, @x2, @s1, @s2, @n1, @n2))
|
16
|
+
assert_in_delta(1.959, Statsample::Test::T.two_sample_independent(@x1, @x2, @s1, @s2, @n1, @n2,true))
|
17
|
+
end
|
18
|
+
def test_t_sample_independent_df
|
19
|
+
assert_equal(10, Statsample::Test::T.df_equal_variance(@n1,@n2))
|
20
|
+
assert_in_delta(7.03, Statsample::Test::T.df_not_equal_variance(@s1,@s2,@n1,@n2))
|
21
|
+
end
|
22
|
+
def test_t_sample_independent_object
|
23
|
+
t=Statsample::Test.t_two_samples_independent(@a,@b)
|
24
|
+
assert(t.summary.size>0)
|
25
|
+
assert_in_delta(1.959, t.t_equal_variance)
|
26
|
+
assert_in_delta(1.959, t.t_not_equal_variance)
|
27
|
+
assert_in_delta(10, t.df_equal_variance)
|
28
|
+
assert_in_delta(7.03, t.df_not_equal_variance)
|
29
|
+
assert_in_delta(0.07856, t.probability_equal_variance)
|
30
|
+
assert_in_delta(0.09095, t.probability_not_equal_variance)
|
31
|
+
|
32
|
+
end
|
33
|
+
def test_t_one_sample
|
34
|
+
u=@a.mean+(1-rand*2)
|
35
|
+
tos=Statsample::Test::T::OneSample.new(@a,{:u=>u})
|
36
|
+
assert_equal((@a.mean-u).quo(@a.sd.quo(Math::sqrt(@a.n))), tos.t)
|
37
|
+
assert_equal(@a.n-1, tos.df)
|
38
|
+
assert(tos.summary.size>0)
|
39
|
+
end
|
40
|
+
end
|
data/test/test_umannwhitney.rb
CHANGED
@@ -1,17 +1,16 @@
|
|
1
|
-
|
2
|
-
require 'statsample'
|
3
|
-
require 'test/unit'
|
1
|
+
require(File.dirname(__FILE__)+'/test_helpers.rb')
|
4
2
|
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
3
|
+
|
4
|
+
class StatsampleUMannWhitneyTestCase < MiniTest::Unit::TestCase
|
5
|
+
def test_u_mannwhitney
|
6
|
+
v1=[1,2,3,4,7,8,9,10,14,15].to_scale
|
7
|
+
v2=[5,6,11,12,13,16,17,18,19].to_scale
|
8
|
+
u=Statsample::Test::UMannWhitney.new(v1,v2)
|
9
|
+
assert_equal(73,u.r1)
|
10
|
+
assert_equal(117,u.r2)
|
11
|
+
assert_equal(18,u.u)
|
12
|
+
assert_in_delta(-2.205,u.z,0.001)
|
13
|
+
assert_in_delta(0.027,u.z_probability,0.001)
|
14
|
+
assert_in_delta(0.028,u.exact_probability,0.001)
|
15
|
+
end
|
17
16
|
end
|
data/test/test_vector.rb
CHANGED
@@ -1,22 +1,18 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
class TestStatsample
|
6
|
-
end
|
7
|
-
class TestStatsample::TestVector < Test::Unit::TestCase
|
8
|
-
|
1
|
+
require(File.dirname(__FILE__)+'/test_helpers.rb')
|
2
|
+
|
3
|
+
class StatsampleTestVector < MiniTest::Unit::TestCase
|
4
|
+
|
9
5
|
def setup
|
10
|
-
|
11
|
-
|
12
|
-
|
6
|
+
@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.missing_values=[-99]
|
8
|
+
|
13
9
|
end
|
14
10
|
def test_save_load
|
15
11
|
outfile=Tempfile.new("vector.vec")
|
16
12
|
@c.save(outfile.path)
|
17
13
|
a=Statsample.load(outfile.path)
|
18
14
|
assert_equal(@c,a)
|
19
|
-
|
15
|
+
|
20
16
|
end
|
21
17
|
def test_lazy_methods
|
22
18
|
data=[1,2,3,4,5,nil]
|
@@ -41,19 +37,19 @@ class TestStatsample::TestVector < Test::Unit::TestCase
|
|
41
37
|
assert_equal(exp2,exp)
|
42
38
|
end
|
43
39
|
def test_product
|
44
|
-
|
45
|
-
|
40
|
+
a=[1,2,3,4,5].to_vector(:scale)
|
41
|
+
assert_equal(120,a.product)
|
46
42
|
end
|
47
43
|
def test_matrix
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
44
|
+
a=[1,2,3,4,5].to_vector(:scale)
|
45
|
+
mh=Matrix[[1,2,3,4,5]]
|
46
|
+
mv=Matrix.columns([[1,2,3,4,5]])
|
47
|
+
assert_equal(mh,a.to_matrix)
|
48
|
+
assert_equal(mv,a.to_matrix(:vertical))
|
49
|
+
# 3*4 + 2*5 = 22
|
50
|
+
a=[3,2].to_vector(:scale)
|
51
|
+
b=[4,5].to_vector(:scale)
|
52
|
+
assert_equal(22,(a.to_matrix*b.to_matrix(:vertical))[0,0])
|
57
53
|
end
|
58
54
|
def test_missing_values
|
59
55
|
@c.missing_values=[10]
|
@@ -149,10 +145,10 @@ class TestStatsample::TestVector < Test::Unit::TestCase
|
|
149
145
|
assert_equal(5,@c.median)
|
150
146
|
assert_equal(4,@c.percentil(25))
|
151
147
|
assert_equal(7,@c.percentil(75))
|
152
|
-
|
148
|
+
|
153
149
|
v=[200000, 200000, 210000, 220000, 230000, 250000, 250000, 250000, 270000, 300000, 450000, 130000, 140000, 140000, 140000, 145000, 148000, 165000, 170000, 180000, 180000, 180000, 180000, 180000, 180000 ].to_scale
|
154
150
|
assert_equal(180000,v.median)
|
155
|
-
|
151
|
+
|
156
152
|
end
|
157
153
|
def test_ranked
|
158
154
|
v1=[0.8,1.2,1.2,2.3,18].to_vector(:ordinal)
|
@@ -165,9 +161,9 @@ class TestStatsample::TestVector < Test::Unit::TestCase
|
|
165
161
|
i=0
|
166
162
|
factors=a.factors.sort
|
167
163
|
[0,1,2,3,4].each{|v|
|
168
|
-
|
169
|
-
|
170
|
-
|
164
|
+
assert(v==factors[i])
|
165
|
+
assert(v.class==factors[i].class,"#{v} - #{v.class} != #{factors[i]} - #{factors[i].class}")
|
166
|
+
i+=1
|
171
167
|
}
|
172
168
|
end
|
173
169
|
def test_vector_standarized
|
@@ -234,7 +230,7 @@ class TestStatsample::TestVector < Test::Unit::TestCase
|
|
234
230
|
srand(1)
|
235
231
|
assert_equal(100, @c.sample_with_replacement(100).size)
|
236
232
|
assert_equal(@c.valid_data.to_a.sort, @c.sample_without_replacement(15).sort)
|
237
|
-
|
233
|
+
|
238
234
|
end
|
239
235
|
def test_valid_data
|
240
236
|
a=Statsample::Vector.new([1,2,3,4,"STRING"])
|
@@ -273,7 +269,7 @@ class TestStatsample::TestVector < Test::Unit::TestCase
|
|
273
269
|
a.set_valid_data
|
274
270
|
assert_equal(3,a.sum)
|
275
271
|
b=[1,2,nil,3,4,5,nil,6].to_vector(:scale)
|
276
|
-
assert_equal(21, b.sum)
|
272
|
+
assert_equal(21, b.sum)
|
277
273
|
assert_equal(3.5, b.mean)
|
278
274
|
assert_equal(6,b.gsl.size)
|
279
275
|
c=[10,20,30,40,50,100,1000,2000,5000].to_scale
|
@@ -281,7 +277,7 @@ class TestStatsample::TestVector < Test::Unit::TestCase
|
|
281
277
|
assert_in_delta(c.kurtosis, c.kurtosis_slow ,0.0001)
|
282
278
|
end
|
283
279
|
end
|
284
|
-
def test_vector_matrix
|
280
|
+
def test_vector_matrix
|
285
281
|
v1=%w{a a a b b b c c}.to_vector
|
286
282
|
v2=%w{1 3 4 5 6 4 3 2}.to_vector
|
287
283
|
v3=%w{1 0 0 0 1 1 1 0}.to_vector
|
@@ -299,14 +295,14 @@ class TestStatsample::TestVector < Test::Unit::TestCase
|
|
299
295
|
assert_equal(v1.data,v2.data)
|
300
296
|
assert_not_same(v1.data,v2.data)
|
301
297
|
assert_equal(v1.type,v2.type)
|
302
|
-
|
298
|
+
|
303
299
|
v1.type=:ordinal
|
304
300
|
assert_not_equal(v1.type,v2.type)
|
305
301
|
assert_equal(v1.missing_values,v2.missing_values)
|
306
302
|
assert_not_same(v1.missing_values,v2.missing_values)
|
307
303
|
assert_equal(v1.labels,v2.labels)
|
308
304
|
assert_not_same(v1.labels,v2.labels)
|
309
|
-
|
305
|
+
|
310
306
|
v3=v1.dup_empty
|
311
307
|
assert_equal([],v3.data)
|
312
308
|
assert_not_equal(v1.data,v3.data)
|
@@ -331,7 +327,7 @@ class TestStatsample::TestVector < Test::Unit::TestCase
|
|
331
327
|
assert_equal(exp,a.dichotomize)
|
332
328
|
a= [1,1,1,2,2,2,3].to_vector
|
333
329
|
exp=[0,0,0,1,1,1,1].to_scale
|
334
|
-
assert_equal(exp,a.dichotomize)
|
330
|
+
assert_equal(exp,a.dichotomize)
|
335
331
|
a= [0,0,0,1,2,3,nil].to_vector
|
336
332
|
exp=[0,0,0,0,1,1,nil].to_scale
|
337
333
|
assert_equal(exp,a.dichotomize(1))
|
@@ -346,15 +342,15 @@ class TestStatsample::TestVector < Test::Unit::TestCase
|
|
346
342
|
assert(!a.can_be_scale?)
|
347
343
|
a.missing_values=["s"]
|
348
344
|
assert(a.can_be_scale?)
|
349
|
-
|
345
|
+
|
350
346
|
a=[Date.new(2009,10,10), Date.today(), "2009-10-10", "2009-1-1", nil, "NOW"].to_vector
|
351
347
|
assert(a.can_be_date?)
|
352
348
|
a=[Date.new(2009,10,10), Date.today(),nil,"sss"].to_vector
|
353
|
-
assert(!a.can_be_date?)
|
349
|
+
assert(!a.can_be_date?)
|
354
350
|
end
|
355
351
|
def test_date_vector
|
356
352
|
a=[Date.new(2009,10,10), :NOW, "2009-10-10", "2009-1-1", nil, "NOW","MISSING"].to_vector(:date, :missing_values=>["MISSING"])
|
357
|
-
|
353
|
+
|
358
354
|
assert(a.type==:date)
|
359
355
|
expected=[Date.new(2009,10,10), Date.today(), Date.new(2009,10,10), Date.new(2009,1,1), nil, Date.today(), nil ]
|
360
356
|
assert_equal(expected, a.date_data_with_nils)
|
data/test/test_xls.rb
CHANGED
@@ -1,42 +1,35 @@
|
|
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
|
-
|
1
|
+
require(File.dirname(__FILE__)+'/test_helpers.rb')
|
2
|
+
|
3
|
+
class StatsampleExcelTestCase < MiniTest::Unit::TestCase
|
4
|
+
def setup
|
5
|
+
@ds=Statsample::Excel.read(File.dirname(__FILE__)+"/test_xls.xls")
|
6
|
+
end
|
7
|
+
def test_read
|
8
|
+
assert_equal(6,@ds.cases)
|
9
|
+
assert_equal(%w{id name age city a1},@ds.fields)
|
10
|
+
id=[1,2,3,4,5,6].to_vector(:scale)
|
11
|
+
name=["Alex","Claude","Peter","Franz","George","Fernand"].to_vector(:nominal)
|
12
|
+
age=[20,23,25,nil,5.5,nil].to_vector(:scale)
|
13
|
+
city=["New York","London","London","Paris","Tome",nil].to_vector(:nominal)
|
14
|
+
a1=["a,b","b,c","a",nil,"a,b,c",nil].to_vector(:nominal)
|
15
|
+
ds_exp=Statsample::Dataset.new({'id'=>id,'name'=>name,'age'=>age,'city'=>city,'a1'=>a1}, %w{id name age city a1})
|
16
|
+
ds_exp.fields.each{|f|
|
17
|
+
assert_equal(ds_exp[f],@ds[f])
|
18
|
+
}
|
19
|
+
assert_equal(ds_exp,@ds)
|
20
|
+
|
21
|
+
end
|
22
|
+
def test_nil
|
23
|
+
assert_equal(nil,@ds['age'][5])
|
24
|
+
end
|
25
|
+
def test_write
|
26
|
+
tempfile=Tempfile.new("test_write.xls")
|
27
|
+
Statsample::Excel.write(@ds,tempfile.path)
|
28
|
+
ds2=Statsample::Excel.read(tempfile.path)
|
29
|
+
i=0
|
30
|
+
ds2.each_array do |row|
|
31
|
+
assert_equal(@ds.case_as_array(i),row)
|
32
|
+
i+=1
|
31
33
|
end
|
32
|
-
|
33
|
-
|
34
|
-
Statsample::Excel.write(@ds,tempfile.path)
|
35
|
-
ds2=Statsample::Excel.read(tempfile.path)
|
36
|
-
i=0
|
37
|
-
ds2.each_array{|row|
|
38
|
-
assert_equal(@ds.case_as_array(i),row)
|
39
|
-
i+=1
|
40
|
-
}
|
41
|
-
end
|
42
|
-
end
|
34
|
+
end
|
35
|
+
end
|