statsample 0.18.0 → 1.0.0
Sign up to get free protection for your applications and to get access to all the features.
- data.tar.gz.sig +0 -0
- data/History.txt +23 -0
- data/Manifest.txt +28 -17
- data/Rakefile +3 -2
- data/benchmarks/correlation_matrix_15_variables.rb +31 -0
- data/benchmarks/correlation_matrix_5_variables.rb +32 -0
- data/benchmarks/correlation_matrix_methods/correlation_matrix.ds +0 -0
- data/benchmarks/correlation_matrix_methods/correlation_matrix.html +93 -0
- data/benchmarks/correlation_matrix_methods/correlation_matrix.rb +75 -0
- data/benchmarks/correlation_matrix_methods/correlation_matrix.xls +0 -0
- data/benchmarks/correlation_matrix_methods/correlation_matrix_gsl_ruby.ods +0 -0
- data/benchmarks/correlation_matrix_methods/correlation_matrix_with_graphics.ods +0 -0
- data/benchmarks/correlation_matrix_methods/results.ds +0 -0
- data/benchmarks/factor_map.rb +37 -0
- data/benchmarks/helpers_benchmark.rb +5 -0
- data/examples/boxplot.rb +13 -14
- data/examples/correlation_matrix.rb +16 -8
- data/examples/dataset.rb +13 -4
- data/examples/dominance_analysis.rb +23 -17
- data/examples/dominance_analysis_bootstrap.rb +28 -22
- data/examples/histogram.rb +8 -9
- data/examples/icc.rb +20 -21
- data/examples/levene.rb +10 -4
- data/examples/multiple_regression.rb +9 -28
- data/examples/multivariate_correlation.rb +9 -3
- data/examples/parallel_analysis.rb +20 -16
- data/examples/polychoric.rb +15 -9
- data/examples/principal_axis.rb +18 -6
- data/examples/reliability.rb +26 -13
- data/examples/scatterplot.rb +10 -6
- data/examples/t_test.rb +15 -6
- data/examples/tetrachoric.rb +9 -2
- data/examples/u_test.rb +12 -4
- data/examples/vector.rb +13 -2
- data/examples/velicer_map_test.rb +33 -26
- data/lib/statsample.rb +32 -12
- data/lib/statsample/analysis.rb +79 -0
- data/lib/statsample/analysis/suite.rb +72 -0
- data/lib/statsample/analysis/suitereportbuilder.rb +38 -0
- data/lib/statsample/bivariate.rb +70 -16
- data/lib/statsample/dataset.rb +25 -19
- data/lib/statsample/dominanceanalysis.rb +2 -2
- data/lib/statsample/factor.rb +2 -0
- data/lib/statsample/factor/map.rb +16 -10
- data/lib/statsample/factor/parallelanalysis.rb +9 -3
- data/lib/statsample/factor/pca.rb +28 -32
- data/lib/statsample/factor/rotation.rb +15 -8
- data/lib/statsample/graph/boxplot.rb +3 -4
- data/lib/statsample/graph/histogram.rb +2 -1
- data/lib/statsample/graph/scatterplot.rb +1 -0
- data/lib/statsample/matrix.rb +106 -16
- data/lib/statsample/regression.rb +4 -1
- data/lib/statsample/regression/binomial.rb +1 -1
- data/lib/statsample/regression/multiple/baseengine.rb +19 -9
- data/lib/statsample/regression/multiple/gslengine.rb +127 -126
- data/lib/statsample/regression/multiple/matrixengine.rb +8 -5
- data/lib/statsample/regression/multiple/rubyengine.rb +1 -1
- data/lib/statsample/regression/simple.rb +31 -6
- data/lib/statsample/reliability.rb +11 -3
- data/lib/statsample/reliability/scaleanalysis.rb +4 -4
- data/lib/statsample/shorthand.rb +81 -0
- data/lib/statsample/test/chisquare.rb +1 -1
- data/lib/statsample/vector.rb +163 -163
- data/lib/statsample/vector/gsl.rb +106 -0
- data/references.txt +2 -2
- data/{data → test/fixtures}/crime.txt +0 -0
- data/{data → test/fixtures}/hartman_23.matrix +0 -0
- data/{data → test/fixtures}/repeated_fields.csv +0 -0
- data/{data → test/fixtures}/test_binomial.csv +0 -0
- data/test/{test_csv.csv → fixtures/test_csv.csv} +0 -0
- data/test/{test_xls.xls → fixtures/test_xls.xls} +0 -0
- data/{data → test/fixtures}/tetmat_matrix.txt +0 -0
- data/{data → test/fixtures}/tetmat_test.txt +0 -0
- data/test/helpers_tests.rb +18 -2
- data/test/test_analysis.rb +118 -0
- data/test/test_anovatwoway.rb +1 -1
- data/test/test_anovatwowaywithdataset.rb +1 -1
- data/test/test_anovawithvectors.rb +1 -2
- data/test/test_bartlettsphericity.rb +1 -2
- data/test/test_bivariate.rb +64 -22
- data/test/test_codification.rb +1 -2
- data/test/test_crosstab.rb +1 -2
- data/test/test_csv.rb +3 -4
- data/test/test_dataset.rb +24 -3
- data/test/test_dominance_analysis.rb +1 -2
- data/test/test_factor.rb +8 -69
- data/test/test_factor_map.rb +43 -0
- data/test/test_factor_pa.rb +54 -0
- data/test/test_ggobi.rb +1 -1
- data/test/test_gsl.rb +12 -18
- data/test/test_histogram.rb +1 -2
- data/test/test_logit.rb +62 -18
- data/test/test_matrix.rb +4 -5
- data/test/test_mle.rb +3 -4
- data/test/test_regression.rb +21 -2
- data/test/test_reliability.rb +3 -3
- data/test/test_reliability_icc.rb +1 -1
- data/test/test_reliability_skillscale.rb +20 -4
- data/test/test_resample.rb +1 -2
- data/test/test_rserve_extension.rb +1 -2
- data/test/test_srs.rb +1 -2
- data/test/test_statistics.rb +1 -2
- data/test/test_stest.rb +1 -2
- data/test/test_stratified.rb +1 -2
- data/test/test_test_f.rb +1 -2
- data/test/test_test_t.rb +1 -2
- data/test/test_umannwhitney.rb +1 -2
- data/test/test_vector.rb +117 -18
- data/test/test_xls.rb +2 -3
- data/web/Rakefile +39 -0
- metadata +109 -29
- metadata.gz.sig +0 -0
- data/examples/parallel_analysis_tetrachoric.rb +0 -31
- data/lib/distribution.rb +0 -25
- data/lib/distribution/chisquare.rb +0 -23
- data/lib/distribution/f.rb +0 -35
- data/lib/distribution/normal.rb +0 -60
- data/lib/distribution/normalbivariate.rb +0 -284
- data/lib/distribution/normalmultivariate.rb +0 -73
- data/lib/distribution/t.rb +0 -55
- data/test/test_distribution.rb +0 -73
data/test/test_mle.rb
CHANGED
@@ -1,9 +1,8 @@
|
|
1
|
-
require(File.dirname(__FILE__)+'/helpers_tests.rb')
|
2
|
-
|
1
|
+
require(File.expand_path(File.dirname(__FILE__)+'/helpers_tests.rb'))
|
3
2
|
class StatsampleMLETestCase < MiniTest::Unit::TestCase
|
4
3
|
def setup
|
5
|
-
@file_binomial=File.dirname(__FILE__)+'
|
6
|
-
@crime=File.dirname(__FILE__)+'
|
4
|
+
@file_binomial=File.dirname(__FILE__)+'/fixtures/test_binomial.csv'
|
5
|
+
@crime=File.dirname(__FILE__)+'/fixtures/crime.txt'
|
7
6
|
@cases=100
|
8
7
|
a=Array.new()
|
9
8
|
b=Array.new()
|
data/test/test_regression.rb
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
require(File.dirname(__FILE__)+'/helpers_tests.rb')
|
1
|
+
require(File.expand_path(File.dirname(__FILE__)+'/helpers_tests.rb'))
|
2
2
|
|
3
3
|
class StatsampleRegressionTestCase < MiniTest::Unit::TestCase
|
4
4
|
context "Example with missing data" do
|
@@ -21,6 +21,22 @@ class StatsampleRegressionTestCase < MiniTest::Unit::TestCase
|
|
21
21
|
assert_in_delta(0.064, @lr.constant_se,0.001,"constant se")
|
22
22
|
end
|
23
23
|
end
|
24
|
+
should "return an error if data is linearly dependent" do
|
25
|
+
samples=100
|
26
|
+
|
27
|
+
a,b=rand,rand
|
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
|
33
|
+
|
34
|
+
ds={'x1'=>x1,'x2'=>x2,'x3'=>x3,'y'=>y}.to_dataset
|
35
|
+
|
36
|
+
assert_raise(Statsample::Regression::LinearDependency) {
|
37
|
+
Statsample::Regression::Multiple::RubyEngine.new(ds,'y')
|
38
|
+
}
|
39
|
+
end
|
24
40
|
def test_parameters
|
25
41
|
@x=[13,20,10,33,15].to_vector(:scale)
|
26
42
|
@y=[23,18,35,10,27 ].to_vector(:scale)
|
@@ -34,10 +50,13 @@ class StatsampleRegressionTestCase < MiniTest::Unit::TestCase
|
|
34
50
|
|
35
51
|
end
|
36
52
|
def _test_simple_regression(reg)
|
53
|
+
|
37
54
|
assert_in_delta(40.009, reg.a,0.001)
|
38
55
|
assert_in_delta(-0.957, reg.b,0.001)
|
39
56
|
assert_in_delta(4.248,reg.standard_error,0.002)
|
57
|
+
assert(reg.summary)
|
40
58
|
end
|
59
|
+
|
41
60
|
def test_summaries
|
42
61
|
a=10.times.map{rand(100)}.to_scale
|
43
62
|
b=10.times.map{rand(100)}.to_scale
|
@@ -166,8 +185,8 @@ class StatsampleRegressionTestCase < MiniTest::Unit::TestCase
|
|
166
185
|
@c=[11,22,30,40,50,65,78,79,99,100].to_vector(:scale)
|
167
186
|
@y=[3,4,5,6,7,8,9,10,20,30].to_vector(:scale)
|
168
187
|
ds={'a'=>@a,'b'=>@b,'c'=>@c,'y'=>@y}.to_dataset
|
169
|
-
|
170
188
|
cor=Statsample::Bivariate.correlation_matrix(ds)
|
189
|
+
|
171
190
|
lr=Statsample::Regression::Multiple::MatrixEngine.new(cor,'y', :y_mean=>@y.mean, :x_mean=>{'a'=>ds['a'].mean, 'b'=>ds['b'].mean, 'c'=>ds['c'].mean}, :cases=>@a.size, :y_sd=>@y.sd , :x_sd=>{'a' => @a.sd, 'b' => @b.sd, 'c' => @c.sd})
|
172
191
|
assert_nil(lr.constant_se)
|
173
192
|
assert_nil(lr.constant_t)
|
data/test/test_reliability.rb
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
require(File.dirname(__FILE__)+'/helpers_tests.rb')
|
1
|
+
require(File.expand_path(File.dirname(__FILE__)+'/helpers_tests.rb'))
|
2
2
|
class StatsampleReliabilityTestCase < MiniTest::Unit::TestCase
|
3
3
|
context Statsample::Reliability do
|
4
4
|
should "return correct r according to Spearman-Brown prophecy" do
|
@@ -197,8 +197,8 @@ class StatsampleReliabilityTestCase < MiniTest::Unit::TestCase
|
|
197
197
|
assert_in_delta(var_mean, @ia.variances_mean)
|
198
198
|
assert_equal(@x1.mean, @ia.item_statistics['x1'][:mean])
|
199
199
|
assert_equal(@x4.mean, @ia.item_statistics['x4'][:mean])
|
200
|
-
|
201
|
-
|
200
|
+
assert_in_delta(@x1.sds, @ia.item_statistics['x1'][:sds],1e-14)
|
201
|
+
assert_in_delta(@x4.sds, @ia.item_statistics['x4'][:sds],1e-14)
|
202
202
|
ds2=@ds.clone
|
203
203
|
ds2.delete_vector('x1')
|
204
204
|
vector_sum=ds2.vector_sum
|
@@ -1,5 +1,6 @@
|
|
1
|
-
|
2
|
-
|
1
|
+
require(File.expand_path(File.dirname(__FILE__)+'/helpers_tests.rb'))
|
2
|
+
|
3
|
+
|
3
4
|
class StatsampleReliabilitySkillScaleTestCase < MiniTest::Unit::TestCase
|
4
5
|
context Statsample::Reliability::SkillScaleAnalysis do
|
5
6
|
setup do
|
@@ -10,9 +11,12 @@ class StatsampleReliabilitySkillScaleTestCase < MiniTest::Unit::TestCase
|
|
10
11
|
@b=cases.times.map {options[rand(5)]}.to_vector
|
11
12
|
@c=cases.times.map {options[rand(5)]}.to_vector
|
12
13
|
@d=cases.times.map {options[rand(5)]}.to_vector
|
13
|
-
@e=cases.times.map {
|
14
|
+
@e=cases.times.map {|i|
|
15
|
+
i==0 ? options[rand(0)] :
|
16
|
+
rand()>0.8 ? nil : options[rand(5)]
|
17
|
+
}.to_vector
|
14
18
|
@ds={'id'=>@id,'a'=>@a,'b'=>@b,'c'=>@c,'d'=>@d,'e'=>@e}.to_dataset
|
15
|
-
@key={'a'=>
|
19
|
+
@key={'a'=>"a", 'b'=>options[rand(5)], 'c'=>options[rand(5)], 'd'=>options[rand(5)],'e'=>options[rand(5)]}
|
16
20
|
@ssa=Statsample::Reliability::SkillScaleAnalysis.new(@ds, @key)
|
17
21
|
@ac=@a.map {|v| v==@key['a'] ? 1 : 0}.to_scale
|
18
22
|
@bc=@b.map {|v| v==@key['b'] ? 1 : 0}.to_scale
|
@@ -34,6 +38,18 @@ class StatsampleReliabilitySkillScaleTestCase < MiniTest::Unit::TestCase
|
|
34
38
|
assert_equal(cdsm.vector_sum, @ssa.vector_sum)
|
35
39
|
assert_equal(cdsm.vector_mean, @ssa.vector_mean)
|
36
40
|
end
|
41
|
+
should "not crash on rare case" do
|
42
|
+
a=Statsample::Vector["c","c","a","a","c","a","b","c","c","b","a","d","a","d","a","a","d","e","c","d"]
|
43
|
+
b=Statsample::Vector["e","b","e","b","c","d","a","e","e","c","b","e","e","b","d","c","e","b","b","d"]
|
44
|
+
c=Statsample::Vector["e","b","e","c","e","c","b","d","e","c","a","a","b","d","e","c","b","a","a","e"]
|
45
|
+
d=Statsample::Vector["a","b","d","d","e","b","e","b","d","c","e","a","c","d","c","c","e","d","d","b"]
|
46
|
+
e=Statsample::Vector["a","b",nil,"d","c","c","d",nil,"d","d","e","e",nil,nil,nil,"d","c",nil,"e","d"]
|
47
|
+
key={"a"=>"a", "b"=>"e", "c"=>"d", "d"=>"c", "e"=>"d"}
|
48
|
+
ds=Statsample::Dataset.new("a"=>a,"b"=>b,"c"=>c,"d"=>d,"e"=>e)
|
49
|
+
ssa=Statsample::Reliability::SkillScaleAnalysis.new(ds, key)
|
50
|
+
assert(ssa.summary)
|
51
|
+
end
|
52
|
+
|
37
53
|
should "return valid summary" do
|
38
54
|
assert(@ssa.summary.size>0)
|
39
55
|
end
|
data/test/test_resample.rb
CHANGED
data/test/test_srs.rb
CHANGED
data/test/test_statistics.rb
CHANGED
data/test/test_stest.rb
CHANGED
data/test/test_stratified.rb
CHANGED
data/test/test_test_f.rb
CHANGED
data/test/test_test_t.rb
CHANGED
data/test/test_umannwhitney.rb
CHANGED
data/test/test_vector.rb
CHANGED
@@ -51,8 +51,7 @@ class StatsampleTestVector < MiniTest::Unit::TestCase
|
|
51
51
|
assert_equal(av,av2)
|
52
52
|
assert_same(av,av2)
|
53
53
|
assert_same(bv,bv2)
|
54
|
-
end
|
55
|
-
|
54
|
+
end
|
56
55
|
end
|
57
56
|
context Statsample::Vector do
|
58
57
|
setup do
|
@@ -60,6 +59,14 @@ class StatsampleTestVector < MiniTest::Unit::TestCase
|
|
60
59
|
@c.name="Test Vector"
|
61
60
|
@c.missing_values=[-99]
|
62
61
|
end
|
62
|
+
should_with_gsl "be created with GSL::Vector" do
|
63
|
+
gsl=GSL::Vector[1,2,3,4,5]
|
64
|
+
v=Statsample::Vector.new(gsl)
|
65
|
+
assert_equal([1,2,3,4,5], v.to_a)
|
66
|
+
refute(v.flawed?)
|
67
|
+
|
68
|
+
end
|
69
|
+
|
63
70
|
context "using matrix operations" do
|
64
71
|
setup do
|
65
72
|
@a=[1,2,3,4,5].to_scale
|
@@ -84,6 +91,20 @@ class StatsampleTestVector < MiniTest::Unit::TestCase
|
|
84
91
|
@data=(10.times.map{rand(100)})+[nil]
|
85
92
|
@original=Statsample::Vector.new(@data, :scale)
|
86
93
|
end
|
94
|
+
should "be the sample using []" do
|
95
|
+
second=Statsample::Vector[*@data]
|
96
|
+
assert_equal(@original, second)
|
97
|
+
end
|
98
|
+
should "[] returns same results as R-c()" do
|
99
|
+
reference=[0,4,5,6,10].to_scale
|
100
|
+
assert_equal(reference, Statsample::Vector[0,4,5,6,10])
|
101
|
+
assert_equal(reference, Statsample::Vector[0,4..6,10])
|
102
|
+
assert_equal(reference, Statsample::Vector[[0],[4,5,6],[10]])
|
103
|
+
assert_equal(reference, Statsample::Vector[[0],[4,[5,[6]]],[10]])
|
104
|
+
|
105
|
+
assert_equal(reference, Statsample::Vector[[0],[4,5,6].to_vector,[10]])
|
106
|
+
|
107
|
+
end
|
87
108
|
should "be the same usign #to_vector" do
|
88
109
|
lazy1=@data.to_vector(:scale)
|
89
110
|
assert_equal(@original,lazy1)
|
@@ -94,6 +115,24 @@ class StatsampleTestVector < MiniTest::Unit::TestCase
|
|
94
115
|
assert_equal(:scale,lazy2.type)
|
95
116
|
assert_equal(@data.find_all{|v| !v.nil?},lazy2.valid_data)
|
96
117
|
end
|
118
|
+
should "could use new_scale with size only" do
|
119
|
+
v1=10.times.map {nil}.to_scale
|
120
|
+
v2=Statsample::Vector.new_scale(10)
|
121
|
+
assert_equal(v1,v2)
|
122
|
+
|
123
|
+
end
|
124
|
+
should "could use new_scale with size and value" do
|
125
|
+
a=rand
|
126
|
+
v1=10.times.map {a}.to_scale
|
127
|
+
v2=Statsample::Vector.new_scale(10,a)
|
128
|
+
assert_equal(v1,v2)
|
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}
|
133
|
+
assert_equal(v1,v2)
|
134
|
+
end
|
135
|
+
|
97
136
|
end
|
98
137
|
|
99
138
|
context "#split_by_separator" do
|
@@ -207,23 +246,53 @@ class StatsampleTestVector < MiniTest::Unit::TestCase
|
|
207
246
|
should "have a summary with name on it" do
|
208
247
|
assert_match(/#{@c.name}/, @c.summary)
|
209
248
|
end
|
249
|
+
|
250
|
+
should "GSL::Vector based should push correcty" do
|
251
|
+
if Statsample.has_gsl?
|
252
|
+
v=GSL::Vector[1,2,3,4,5].to_scale
|
253
|
+
v.push(nil)
|
254
|
+
assert_equal([1,2,3,4,5,nil], v.to_a)
|
255
|
+
assert(v.flawed?)
|
256
|
+
else
|
257
|
+
skip("Requires GSL")
|
258
|
+
end
|
259
|
+
end
|
260
|
+
|
261
|
+
|
210
262
|
should "split correctly" do
|
211
263
|
a = Statsample::Vector.new(["a","a,b","c,d","a,d","d",10,nil],:nominal)
|
212
264
|
assert_equal([%w{a},%w{a b},%w{c d},%w{a d},%w{d},[10],nil], a.splitted)
|
213
265
|
end
|
214
|
-
|
215
|
-
|
216
|
-
|
217
|
-
def test_types
|
218
|
-
@c.type=:nominal
|
219
|
-
assert_raise NoMethodError do
|
220
|
-
@c.median
|
266
|
+
should "multiply correct for scalar" do
|
267
|
+
a = [1,2,3].to_scale
|
268
|
+
assert_equal([5,10,15].to_scale, a*5)
|
221
269
|
end
|
222
|
-
|
223
|
-
|
224
|
-
|
270
|
+
should "multiply correct with other vector" do
|
271
|
+
a = [1,2,3].to_scale
|
272
|
+
b = [2,4,6].to_scale
|
273
|
+
|
274
|
+
assert_equal([2,8,18].to_scale, a*b)
|
275
|
+
end
|
276
|
+
should "sum correct for scalar" do
|
277
|
+
a = [1,2,3].to_scale
|
278
|
+
assert_equal([11,12,13].to_scale, a+10)
|
279
|
+
end
|
280
|
+
|
281
|
+
should "raise NoMethodError when method requires ordinal and vector is nominal" do
|
282
|
+
@c.type=:nominal
|
283
|
+
assert_raise(::NoMethodError) { @c.median }
|
284
|
+
end
|
285
|
+
|
286
|
+
should "raise NoMethodError when method requires scalar and vector is ordinal" do
|
287
|
+
@c.type=:ordinal
|
288
|
+
assert_raise(::NoMethodError) { @c.mean }
|
225
289
|
end
|
290
|
+
|
291
|
+
|
226
292
|
end
|
293
|
+
|
294
|
+
|
295
|
+
|
227
296
|
def test_nominal
|
228
297
|
assert_equal(@c[1],5)
|
229
298
|
assert_equal({ 1=>1,2=>1,3=>1,4=>1,5=>5,6=>2,7=>1,8=>1, 9=>1,10=>1},@c.frequencies)
|
@@ -308,12 +377,41 @@ class StatsampleTestVector < MiniTest::Unit::TestCase
|
|
308
377
|
assert_equal(0,vs.mean)
|
309
378
|
assert_equal(1,vs.sds)
|
310
379
|
end
|
380
|
+
|
311
381
|
def test_vector_standarized_with_zero_variance
|
312
382
|
v1=100.times.map {|i| 1}.to_scale
|
313
383
|
exp=100.times.map {nil}.to_scale
|
314
384
|
assert_equal(exp,v1.standarized)
|
315
385
|
end
|
316
386
|
|
387
|
+
def test_check_type
|
388
|
+
v=Statsample::Vector.new
|
389
|
+
v.type=:nominal
|
390
|
+
assert_raise(NoMethodError) { v.check_type(:scale)}
|
391
|
+
assert_raise(NoMethodError) { v.check_type(:ordinal)}
|
392
|
+
assert(v.check_type(:nominal).nil?)
|
393
|
+
|
394
|
+
v.type=:ordinal
|
395
|
+
|
396
|
+
assert_raise(NoMethodError) { v.check_type(:scale)}
|
397
|
+
|
398
|
+
assert(v.check_type(:ordinal).nil?)
|
399
|
+
assert(v.check_type(:nominal).nil?)
|
400
|
+
|
401
|
+
|
402
|
+
v.type=:scale
|
403
|
+
assert(v.check_type(:scale).nil?)
|
404
|
+
assert(v.check_type(:ordinal).nil?)
|
405
|
+
assert(v.check_type(:nominal).nil?)
|
406
|
+
|
407
|
+
v.type=:date
|
408
|
+
assert_raise(NoMethodError) { v.check_type(:scale)}
|
409
|
+
assert_raise(NoMethodError) { v.check_type(:ordinal)}
|
410
|
+
assert_raise(NoMethodError) { v.check_type(:nominal)}
|
411
|
+
|
412
|
+
end
|
413
|
+
|
414
|
+
|
317
415
|
def test_add
|
318
416
|
a=Statsample::Vector.new([1,2,3,4,5], :scale)
|
319
417
|
b=Statsample::Vector.new([11,12,13,14,15], :scale)
|
@@ -391,11 +489,12 @@ class StatsampleTestVector < MiniTest::Unit::TestCase
|
|
391
489
|
def test_gsl
|
392
490
|
if Statsample.has_gsl?
|
393
491
|
a=Statsample::Vector.new([1,2,3,4,"STRING"], :scale)
|
492
|
+
|
394
493
|
assert_equal(2,a.mean)
|
395
|
-
assert_equal(a.
|
396
|
-
assert_equal(a.
|
397
|
-
assert_equal(a.
|
398
|
-
assert_equal(a.
|
494
|
+
assert_equal(a.variance_sample_ruby,a.variance_sample)
|
495
|
+
assert_equal(a.standard_deviation_sample_ruby,a.sds)
|
496
|
+
assert_equal(a.variance_population_ruby,a.variance_population)
|
497
|
+
assert_equal(a.standard_deviation_population_ruby,a.standard_deviation_population)
|
399
498
|
assert_nothing_raised do
|
400
499
|
a=[].to_vector(:scale)
|
401
500
|
end
|
@@ -408,8 +507,8 @@ class StatsampleTestVector < MiniTest::Unit::TestCase
|
|
408
507
|
assert_equal(3.5, b.mean)
|
409
508
|
assert_equal(6,b.gsl.size)
|
410
509
|
c=[10,20,30,40,50,100,1000,2000,5000].to_scale
|
411
|
-
assert_in_delta(c.skew, c.
|
412
|
-
assert_in_delta(c.kurtosis, c.
|
510
|
+
assert_in_delta(c.skew, c.skew_ruby ,0.0001)
|
511
|
+
assert_in_delta(c.kurtosis, c.kurtosis_ruby ,0.0001)
|
413
512
|
end
|
414
513
|
end
|
415
514
|
def test_vector_matrix
|
data/test/test_xls.rb
CHANGED
@@ -1,9 +1,8 @@
|
|
1
|
-
require(File.dirname(__FILE__)+'/helpers_tests.rb')
|
2
|
-
|
1
|
+
require(File.expand_path(File.dirname(__FILE__)+'/helpers_tests.rb'))
|
3
2
|
class StatsampleExcelTestCase < MiniTest::Unit::TestCase
|
4
3
|
context "Excel reader" do
|
5
4
|
setup do
|
6
|
-
@ds=Statsample::Excel.read(File.dirname(__FILE__)+"/test_xls.xls")
|
5
|
+
@ds=Statsample::Excel.read(File.dirname(__FILE__)+"/fixtures/test_xls.xls")
|
7
6
|
end
|
8
7
|
should "set the number of cases" do
|
9
8
|
assert_equal(6,@ds.cases)
|
data/web/Rakefile
ADDED
@@ -0,0 +1,39 @@
|
|
1
|
+
# -*- ruby -*-
|
2
|
+
require 'rake'
|
3
|
+
require 'fileutils'
|
4
|
+
directory "examples"
|
5
|
+
|
6
|
+
def get_base(f)
|
7
|
+
f.sub(File.dirname(__FILE__)+"/../examples/","").gsub("/","_").gsub(".rb","")
|
8
|
+
end
|
9
|
+
|
10
|
+
|
11
|
+
EXAMPLES=Dir.glob(File.dirname(__FILE__)+"/../examples/**/*.rb").map {|v| [v, get_base(v)]
|
12
|
+
}.find_all{|v| !v[0].include?"_data"}
|
13
|
+
|
14
|
+
EXAMPLES_BASE=EXAMPLES.map {|v| v[1]}
|
15
|
+
|
16
|
+
|
17
|
+
desc "Build all html, rtf and pdf files"
|
18
|
+
task :build_site do
|
19
|
+
ruby "build_site.rb"
|
20
|
+
end
|
21
|
+
|
22
|
+
|
23
|
+
task :clean do
|
24
|
+
Dir.glob(File.dirname(__FILE__)+"/examples/*.pdf").each do |t|
|
25
|
+
FileUtils.rm t
|
26
|
+
end
|
27
|
+
Dir.glob(File.dirname(__FILE__)+"/examples/*.html").each do |t|
|
28
|
+
FileUtils.rm t
|
29
|
+
end
|
30
|
+
Dir.glob(File.dirname(__FILE__)+"/examples/*.rtf").each do |t|
|
31
|
+
FileUtils.rm t
|
32
|
+
end
|
33
|
+
Dir.glob(File.dirname(__FILE__)+"/examples/images/*.*").each do |t|
|
34
|
+
FileUtils.rm t
|
35
|
+
end
|
36
|
+
end
|
37
|
+
|
38
|
+
|
39
|
+
load 'upload_task.rb' if File.exists? "upload_task.rb"
|