statsample 0.9.0 → 0.10.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.tar.gz.sig +0 -0
- data/History.txt +20 -1
- data/Manifest.txt +8 -1
- data/README.txt +11 -7
- data/Rakefile +2 -2
- data/data/locale/es/LC_MESSAGES/statsample.mo +0 -0
- data/examples/dataset.rb +8 -0
- data/examples/multiple_regression.rb +1 -1
- data/examples/parallel_analysis.rb +29 -0
- data/examples/parallel_analysis_tetrachoric.rb +30 -0
- data/examples/vector.rb +6 -0
- data/lib/distribution.rb +16 -6
- data/lib/distribution/normal.rb +27 -20
- data/lib/distribution/normalbivariate.rb +1 -1
- data/lib/statsample.rb +19 -2
- data/lib/statsample/anova.rb +118 -16
- data/lib/statsample/bivariate.rb +27 -13
- data/lib/statsample/bivariate/polychoric.rb +18 -5
- data/lib/statsample/crosstab.rb +66 -74
- data/lib/statsample/dataset.rb +52 -45
- data/lib/statsample/dominanceanalysis.rb +2 -5
- data/lib/statsample/factor.rb +1 -1
- data/lib/statsample/factor/parallelanalysis.rb +122 -0
- data/lib/statsample/factor/pca.rb +23 -28
- data/lib/statsample/factor/principalaxis.rb +8 -3
- data/lib/statsample/matrix.rb +27 -24
- data/lib/statsample/mle.rb +11 -11
- data/lib/statsample/permutation.rb +2 -1
- data/lib/statsample/regression.rb +10 -8
- data/lib/statsample/regression/multiple/baseengine.rb +36 -25
- data/lib/statsample/regression/multiple/gslengine.rb +14 -0
- data/lib/statsample/regression/multiple/matrixengine.rb +4 -32
- data/lib/statsample/regression/multiple/rubyengine.rb +2 -6
- data/lib/statsample/regression/simple.rb +1 -1
- data/lib/statsample/reliability.rb +42 -54
- data/lib/statsample/test.rb +10 -6
- data/lib/statsample/test/f.rb +16 -26
- data/lib/statsample/test/levene.rb +4 -8
- data/lib/statsample/test/t.rb +30 -24
- data/lib/statsample/test/umannwhitney.rb +13 -6
- data/lib/statsample/vector.rb +86 -76
- data/po/es/statsample.mo +0 -0
- data/po/es/statsample.po +127 -94
- data/po/statsample.pot +114 -79
- data/test/test_anovaoneway.rb +27 -0
- data/test/test_anovawithvectors.rb +97 -0
- data/test/test_bivariate.rb +6 -57
- data/test/test_bivariate_polychoric.rb +65 -0
- data/test/test_crosstab.rb +6 -0
- data/test/test_dataset.rb +29 -1
- data/test/test_distribution.rb +6 -13
- data/test/test_dominance_analysis.rb +1 -1
- data/test/test_factor.rb +3 -3
- data/test/test_helpers.rb +18 -18
- data/test/test_matrix.rb +33 -20
- data/test/test_permutation.rb +36 -30
- data/test/test_regression.rb +26 -8
- data/test/test_reliability.rb +104 -14
- data/test/test_test_f.rb +11 -14
- data/test/test_test_t.rb +42 -35
- data/test/test_umannwhitney.rb +22 -10
- data/test/test_vector.rb +204 -102
- metadata +57 -81
- metadata.gz.sig +0 -0
- data/test/test_anova.rb +0 -24
data/test/test_matrix.rb
CHANGED
@@ -2,23 +2,36 @@ require(File.dirname(__FILE__)+'/test_helpers.rb')
|
|
2
2
|
|
3
3
|
|
4
4
|
class StatsampleMatrixTestCase < MiniTest::Unit::TestCase
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
5
|
+
context(Matrix) do
|
6
|
+
setup do
|
7
|
+
@matrix=Matrix[[1,2,3],[4,5,6],[7,8,9]]
|
8
|
+
end
|
9
|
+
should "return correct value for [i,j]" do
|
10
|
+
assert_equal(5, @matrix[1,1])
|
11
|
+
end
|
12
|
+
should "return correct value for [i,:*]" do
|
13
|
+
assert_equal(Matrix[[1,2,3]], @matrix[0,:*])
|
14
|
+
end
|
15
|
+
should "return correct value for [:*,j]" do
|
16
|
+
assert_equal(Matrix[[1],[4],[7]], @matrix[:*,0])
|
17
|
+
end
|
18
|
+
should "return correct value for [:*,j1..j2]" do
|
19
|
+
assert_equal(Matrix[[1,2],[4,5],[7,8]], @matrix[:*,0..1])
|
20
|
+
end
|
21
|
+
should "return correct value for [i1..i2,j1..j2]" do
|
22
|
+
assert_equal(Matrix[[1,2],[4,5]], @matrix[0..1,0..1])
|
23
|
+
end
|
24
|
+
should "return correct value for row_sum" do
|
25
|
+
assert_equal(6,@matrix.row_sum[0])
|
26
|
+
end
|
27
|
+
should "return correct value for column_sum" do
|
28
|
+
assert_equal(12,@matrix.column_sum[0])
|
29
|
+
end
|
30
|
+
should "return correct value for total_sum" do
|
31
|
+
assert_equal(45,@matrix.total_sum)
|
32
|
+
end
|
21
33
|
end
|
34
|
+
|
22
35
|
def test_covariate
|
23
36
|
a=Matrix[[1.0, 0.3, 0.2], [0.3, 1.0, 0.5], [0.2, 0.5, 1.0]]
|
24
37
|
a.extend Statsample::CovariateMatrix
|
@@ -35,9 +48,9 @@ class StatsampleMatrixTestCase < MiniTest::Unit::TestCase
|
|
35
48
|
|
36
49
|
assert_equal(:covariance, a.type)
|
37
50
|
|
38
|
-
a=
|
39
|
-
b=
|
40
|
-
c=
|
51
|
+
a=50.times.collect {rand()}.to_scale
|
52
|
+
b=50.times.collect {rand()}.to_scale
|
53
|
+
c=50.times.collect {rand()}.to_scale
|
41
54
|
ds={'a'=>a,'b'=>b,'c'=>c}.to_dataset
|
42
55
|
corr=Statsample::Bivariate.correlation_matrix(ds)
|
43
56
|
real=Statsample::Bivariate.covariance_matrix(ds).correlation
|
@@ -46,5 +59,5 @@ class StatsampleMatrixTestCase < MiniTest::Unit::TestCase
|
|
46
59
|
assert_in_delta(corr[i,j], real[i,j],1e-15)
|
47
60
|
end
|
48
61
|
end
|
49
|
-
end
|
62
|
+
end
|
50
63
|
end
|
data/test/test_permutation.rb
CHANGED
@@ -2,35 +2,41 @@ require(File.dirname(__FILE__)+'/test_helpers.rb')
|
|
2
2
|
|
3
3
|
|
4
4
|
class StatsamplePermutationTestCase < MiniTest::Unit::TestCase
|
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
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
5
|
+
context Statsample::Permutation do
|
6
|
+
should "initialize with number" do
|
7
|
+
per1=Statsample::Permutation.new(2)
|
8
|
+
exp1=[[0,1],[1,0]]
|
9
|
+
assert_equal(exp1,per1.permutations)
|
10
|
+
per2=Statsample::Permutation.new(3)
|
11
|
+
exp2=[[0,1,2],[0,2,1],[1,0,2],[1,2,0],[2,0,1],[2,1,0]]
|
12
|
+
assert_equal(exp2,per2.permutations)
|
13
|
+
end
|
14
|
+
should "initialize with simple array" do
|
15
|
+
per1=Statsample::Permutation.new(%w{a b})
|
16
|
+
exp1=[['a','b'],['b','a']]
|
17
|
+
assert_equal(exp1,per1.permutations)
|
18
|
+
per2=Statsample::Permutation.new(%w{a b c})
|
19
|
+
exp2=[%w{a b c},%w{a c b},%w{b a c} ,%w{b c a},%w{c a b},%w{c b a}]
|
20
|
+
assert_equal(exp2,per2.permutations)
|
21
|
+
end
|
22
|
+
should "initialize with Statsample::Vector" do
|
23
|
+
per2=Statsample::Permutation.new(%w{a b c}.to_vector)
|
24
|
+
exp2=[%w{a b c},%w{a c b},%w{b a c} ,%w{b c a},%w{c a b},%w{c b a}]
|
25
|
+
assert_equal(exp2, per2.permutations)
|
26
|
+
end
|
27
|
+
|
28
|
+
should "calculate correct number of total permutations without repetitions" do
|
29
|
+
per1=Statsample::Permutation.new(4)
|
30
|
+
assert_equal(24,per1.permutation_number)
|
31
|
+
end
|
32
|
+
should "calculate correct number of total permutations with repetitions" do
|
33
|
+
per2=Statsample::Permutation.new([1,1,1,0,0,0])
|
34
|
+
assert_equal(20,per2.permutation_number)
|
35
|
+
end
|
36
|
+
should "initialize with array repeated" do
|
37
|
+
per1=Statsample::Permutation.new([0,0,1,1])
|
38
|
+
exp1=[[0,0,1,1],[0,1,0,1],[0,1,1,0],[1,0,0,1],[1,0,1,0],[1,1,0,0]]
|
39
|
+
assert_equal(exp1,per1.permutations)
|
40
|
+
end
|
35
41
|
end
|
36
42
|
end
|
data/test/test_regression.rb
CHANGED
@@ -1,6 +1,26 @@
|
|
1
1
|
require(File.dirname(__FILE__)+'/test_helpers.rb')
|
2
2
|
|
3
3
|
class StatsampleRegressionTestCase < MiniTest::Unit::TestCase
|
4
|
+
context "Example with missing data" do
|
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
|
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
|
9
|
+
@ds={'x'=>@x,'y'=>@y}.to_dataset
|
10
|
+
@lr=Statsample::Regression::Multiple::RubyEngine.new(@ds,'y')
|
11
|
+
end
|
12
|
+
should "have correct values" do
|
13
|
+
assert_in_delta(0.455,@lr.r2,0.001)
|
14
|
+
assert_in_delta(0.427,@lr.r2_adjusted, 0.001)
|
15
|
+
assert_in_delta(0.1165,@lr.se_estimate,0.001)
|
16
|
+
assert_in_delta(15.925,@lr.f,0.0001)
|
17
|
+
assert_in_delta(0.675, @lr.standarized_coeffs['x'],0.001)
|
18
|
+
assert_in_delta(0.778, @lr.coeffs['x'],0.001, "coeff x")
|
19
|
+
assert_in_delta(0.132, @lr.constant,0.001,"constant")
|
20
|
+
assert_in_delta(0.195, @lr.coeffs_se['x'],0.001,"coeff x se")
|
21
|
+
assert_in_delta(0.064, @lr.constant_se,0.001,"constant se")
|
22
|
+
end
|
23
|
+
end
|
4
24
|
def test_parameters
|
5
25
|
@x=[13,20,10,33,15].to_vector(:scale)
|
6
26
|
@y=[23,18,35,10,27 ].to_vector(:scale)
|
@@ -19,15 +39,13 @@ class StatsampleRegressionTestCase < MiniTest::Unit::TestCase
|
|
19
39
|
assert_in_delta(4.248,reg.standard_error,0.002)
|
20
40
|
end
|
21
41
|
def test_summaries
|
22
|
-
a=
|
23
|
-
b=
|
24
|
-
y=
|
42
|
+
a=10.times.map{rand(100)}.to_scale
|
43
|
+
b=10.times.map{rand(100)}.to_scale
|
44
|
+
y=10.times.map{rand(100)}.to_scale
|
25
45
|
ds={'a'=>a,'b'=>b,'y'=>y}.to_dataset
|
26
46
|
lr=Statsample::Regression::Multiple::RubyEngine.new(ds,'y')
|
27
47
|
assert(lr.summary.size>0)
|
28
48
|
|
29
|
-
|
30
|
-
|
31
49
|
end
|
32
50
|
def test_multiple_dependent
|
33
51
|
complete=Matrix[
|
@@ -65,7 +83,6 @@ class StatsampleRegressionTestCase < MiniTest::Unit::TestCase
|
|
65
83
|
assert_in_delta(1361.130,lr.ssr,0.001)
|
66
84
|
assert_in_delta(1046.306,lr.sse,0.001)
|
67
85
|
assert_in_delta(3.035,lr.f,0.001)
|
68
|
-
|
69
86
|
end
|
70
87
|
|
71
88
|
|
@@ -170,14 +187,15 @@ class StatsampleRegressionTestCase < MiniTest::Unit::TestCase
|
|
170
187
|
@y=[nil,3,4,5,6,7,8,9,10,20,30].to_vector(:scale)
|
171
188
|
ds={'a'=>@a,'b'=>@b,'c'=>@c,'y'=>@y}.to_dataset
|
172
189
|
lr=Statsample::Regression::Multiple::RubyEngine.new(ds,'y')
|
190
|
+
assert_equal(11, lr.total_cases)
|
191
|
+
assert_equal(10, lr.valid_cases)
|
173
192
|
model_test(lr, 'rubyengine with missing data')
|
174
193
|
|
175
194
|
predicted=[nil,1.7857, 6.0989, 3.2433, 7.2908, 4.9667, 10.3428, 8.8158, 10.4717, 23.6639, 25.3198]
|
176
195
|
c_predicted = lr.predicted
|
177
|
-
|
178
196
|
predicted.each_index do |i|
|
179
197
|
if c_predicted[i].nil?
|
180
|
-
assert(predicted[i].nil
|
198
|
+
assert(predicted[i].nil?, "Actual #{i} is nil, but expected #{predicted[i]}")
|
181
199
|
else
|
182
200
|
assert_in_delta(predicted[i], c_predicted[i], 0.001)
|
183
201
|
end
|
data/test/test_reliability.rb
CHANGED
@@ -2,20 +2,110 @@ require(File.dirname(__FILE__)+'/test_helpers.rb')
|
|
2
2
|
|
3
3
|
|
4
4
|
class StatsampleReliabilityTestCase < MiniTest::Unit::TestCase
|
5
|
+
context Statsample::Reliability do
|
6
|
+
context "Cronbach's alpha" do
|
7
|
+
setup do
|
8
|
+
@samples=40
|
9
|
+
@n_variables=rand(10)+2
|
10
|
+
@ds=Statsample::Dataset.new()
|
11
|
+
base=@samples.times.collect {|a| rand()}.to_scale
|
12
|
+
@n_variables.times do |i|
|
13
|
+
@ds[i]=base.collect {|v| v+rand()}.to_scale
|
14
|
+
end
|
15
|
+
@ds.update_valid_data
|
16
|
+
@k=@ds.fields.size
|
17
|
+
@cm=Statsample::Bivariate.covariance_matrix(@ds)
|
18
|
+
@dse=@ds.dup
|
19
|
+
@dse.fields.each do |f|
|
20
|
+
@dse[f]=@dse[f].standarized
|
21
|
+
end
|
22
|
+
@cme=Statsample::Bivariate.covariance_matrix(@dse)
|
23
|
+
@a=Statsample::Reliability.cronbach_alpha(@ds)
|
24
|
+
@as=Statsample::Reliability.cronbach_alpha_standarized(@ds)
|
25
|
+
end
|
26
|
+
should "alpha will be equal to sum of matrix covariance less the individual variances" do
|
27
|
+
total_sum=@cm.total_sum
|
28
|
+
ind_var=@ds.fields.inject(0) {|ac,v| ac+@ds[v].variance}
|
29
|
+
expected = @k.quo(@k-1) * (1-(ind_var.quo(total_sum)))
|
30
|
+
assert_in_delta(expected, @a,1e-10)
|
31
|
+
end
|
32
|
+
should "standarized alpha will be equal to sum of matrix covariance less the individual variances on standarized values" do
|
33
|
+
total_sum=@cme.total_sum
|
34
|
+
ind_var=@dse.fields.inject(0) {|ac,v| ac+@dse[v].variance}
|
35
|
+
expected = @k.quo(@k-1) * (1-(ind_var.quo(total_sum)))
|
36
|
+
assert_in_delta(expected, @as, 1e-10)
|
37
|
+
end
|
38
|
+
end
|
39
|
+
context Statsample::Reliability::ItemCharacteristicCurve do
|
40
|
+
setup do
|
41
|
+
@samples=100
|
42
|
+
@points=rand(10)+3
|
43
|
+
@max_point=(@points-1)*3
|
44
|
+
@x1=@samples.times.map{rand(@points)}.to_scale
|
45
|
+
@x2=@samples.times.map{rand(@points)}.to_scale
|
46
|
+
@x3=@samples.times.map{rand(@points)}.to_scale
|
47
|
+
@ds={'a'=>@x1,'b'=>@x2,'c'=>@x3}.to_dataset
|
48
|
+
@icc=Statsample::Reliability::ItemCharacteristicCurve.new(@ds)
|
49
|
+
end
|
50
|
+
should "have a correct automatic vector_total" do
|
51
|
+
assert_equal(@ds.vector_sum, @icc.vector_total)
|
52
|
+
end
|
53
|
+
should "have a correct different vector_total" do
|
54
|
+
x2=@samples.times.map{rand(10)}.to_scale
|
55
|
+
@icc=Statsample::Reliability::ItemCharacteristicCurve.new(@ds,x2)
|
56
|
+
assert_equal(x2, @icc.vector_total)
|
57
|
+
assert_raises(ArgumentError) do
|
58
|
+
inc=(@samples+10).times.map{rand(10)}.to_scale
|
59
|
+
@icc=Statsample::Reliability::ItemCharacteristicCurve.new(@ds,inc)
|
60
|
+
end
|
61
|
+
end
|
62
|
+
should "have 0% for 0 points on maximum value values" do
|
63
|
+
max=@icc.curve_field('a',0)[@max_point.to_f]
|
64
|
+
max||=0
|
65
|
+
assert_in_delta(0, max)
|
66
|
+
end
|
67
|
+
should "have 0 for max value on minimum value" do
|
68
|
+
max=@icc.curve_field('a',@max_point)[0.0]
|
69
|
+
max||=0
|
70
|
+
assert_in_delta(0, max)
|
71
|
+
end
|
72
|
+
should "have correct values of % for any value" do
|
73
|
+
sum=@icc.vector_total
|
74
|
+
total={}
|
75
|
+
total_g=sum.frequencies
|
76
|
+
index=rand(@points)
|
77
|
+
@x1.each_with_index do |v,i|
|
78
|
+
total[sum[i]]||=0
|
79
|
+
total[sum[i]]+=1 if v==index
|
80
|
+
end
|
81
|
+
expected=total.each {|k,v|
|
82
|
+
total[k]=v.quo(total_g[k])
|
83
|
+
}
|
84
|
+
assert_equal(expected, @icc.curve_field('a',index))
|
85
|
+
|
86
|
+
end
|
87
|
+
|
88
|
+
end
|
89
|
+
context Statsample::Reliability::ItemAnalysis do
|
90
|
+
setup do
|
91
|
+
@x1=[1,1,1,1,2,2,2,2,3,3,3,30].to_vector(:scale)
|
92
|
+
@x2=[1,1,1,2,2,3,3,3,3,4,4,50].to_vector(:scale)
|
93
|
+
@x3=[2,2,1,1,1,2,2,2,3,4,5,40].to_vector(:scale)
|
94
|
+
@x4=[1,2,3,4,4,4,4,3,4,4,5,30].to_vector(:scale)
|
95
|
+
@ds={'x1'=>@x1,'x2'=>@x2,'x3'=>@x3,'x4'=>@x4}.to_dataset
|
96
|
+
@ia=Statsample::Reliability::ItemAnalysis.new(@ds)
|
5
97
|
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
assert_in_delta(0.999,ia.item_total_correlation()['x1'],0.001)
|
19
|
-
assert_in_delta(1050.455,ia.stats_if_deleted()['x1'][:variance_sample],0.001)
|
98
|
+
end
|
99
|
+
should "return correct values for item analysis" do
|
100
|
+
assert_in_delta(0.980,@ia.alpha,0.001)
|
101
|
+
assert_in_delta(0.999,@ia.alpha_standarized,0.001)
|
102
|
+
assert_in_delta(0.999,@ia.item_total_correlation()['x1'],0.001)
|
103
|
+
assert_in_delta(1050.455,@ia.stats_if_deleted()['x1'][:variance_sample],0.001)
|
104
|
+
end
|
105
|
+
should "return a summary" do
|
106
|
+
assert(@ia.summary.size>0)
|
107
|
+
end
|
108
|
+
|
109
|
+
end
|
20
110
|
end
|
21
111
|
end
|
data/test/test_test_f.rb
CHANGED
@@ -5,33 +5,30 @@ class StatsampleTestFTestCase < MiniTest::Unit::TestCase
|
|
5
5
|
setup do
|
6
6
|
@ssb=84
|
7
7
|
@ssw=68
|
8
|
-
@
|
8
|
+
@df_num=2
|
9
|
+
@df_den=15
|
10
|
+
@f=Statsample::Test::F.new(@ssb.quo(@df_num),@ssw.quo(@df_den), @df_num, @df_den)
|
9
11
|
end
|
10
|
-
should "have f equal to msb/msw" do
|
11
|
-
assert_equal((@ssb.quo(
|
12
|
+
should "have #f equal to msb/msw" do
|
13
|
+
assert_equal((@ssb.quo(@df_num)).quo(@ssw.quo(@df_den)), @f.f)
|
12
14
|
end
|
13
15
|
should "have df total equal to df_num+df_den" do
|
14
|
-
assert_equal(
|
16
|
+
assert_equal(@df_num+@df_den, @f.df_total)
|
15
17
|
end
|
16
18
|
should "have probability near 0.002" do
|
17
19
|
assert_in_delta(0.002, @f.probability, 0.0005)
|
18
20
|
end
|
19
|
-
|
21
|
+
should "be coerced into float" do
|
22
|
+
assert_equal(@f.to_f, @f.f)
|
23
|
+
end
|
24
|
+
|
25
|
+
context("method #summary") do
|
20
26
|
setup do
|
21
|
-
@f.name_numerator="MSb"
|
22
|
-
@f.name_denominator="MSw"
|
23
|
-
@f.name="ANOVA"
|
24
27
|
@summary=@f.summary
|
25
28
|
end
|
26
29
|
should "have size > 0" do
|
27
30
|
assert(@summary.size>0)
|
28
31
|
end
|
29
|
-
should "include correct names for title, num and den" do
|
30
|
-
assert_match(@f.name_numerator, @summary)
|
31
|
-
assert_match(@f.name_denominator, @summary)
|
32
|
-
assert_match(@f.name, @summary)
|
33
|
-
end
|
34
32
|
end
|
35
33
|
end
|
36
|
-
|
37
34
|
end
|
data/test/test_test_t.rb
CHANGED
@@ -1,40 +1,47 @@
|
|
1
1
|
require(File.dirname(__FILE__)+'/test_helpers.rb')
|
2
2
|
|
3
3
|
class StatsampleTestTTestCase < MiniTest::Unit::TestCase
|
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
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
4
|
+
include Statsample::Test
|
5
|
+
include Math
|
6
|
+
context T do
|
7
|
+
setup do
|
8
|
+
@a=[30.02, 29.99, 30.11, 29.97, 30.01, 29.99].to_scale
|
9
|
+
@b=[29.89, 29.93, 29.72, 29.98, 30.02, 29.98].to_scale
|
10
|
+
@x1=@a.mean
|
11
|
+
@x2=@b.mean
|
12
|
+
@s1=@a.sd
|
13
|
+
@s2=@b.sd
|
14
|
+
@n1=@a.n
|
15
|
+
@n2=@b.n
|
16
|
+
end
|
17
|
+
should "calculate correctly t for two samples" do
|
18
|
+
assert_in_delta(1.959, T.two_sample_independent(@x1, @x2, @s1, @s2, @n1, @n2),0.001)
|
19
|
+
assert_in_delta(1.959, T.two_sample_independent(@x1, @x2, @s1, @s2, @n1, @n2,true),0.001)
|
20
|
+
end
|
21
|
+
should "calculate correctly df for equal and unequal variance" do
|
22
|
+
assert_equal(10, T.df_equal_variance(@n1,@n2))
|
23
|
+
assert_in_delta(7.03, T.df_not_equal_variance(@s1,@s2,@n1,@n2),0.001)
|
24
|
+
end
|
25
|
+
should "calculate all values for T object" do
|
26
|
+
t=Statsample::Test.t_two_samples_independent(@a,@b)
|
27
|
+
assert(t.summary.size>0)
|
28
|
+
assert_in_delta(1.959, t.t_equal_variance,0.001)
|
29
|
+
assert_in_delta(1.959, t.t_not_equal_variance,0.001)
|
30
|
+
assert_in_delta(10, t.df_equal_variance,0.001)
|
31
|
+
assert_in_delta(7.03, t.df_not_equal_variance,0.001)
|
32
|
+
assert_in_delta(0.07856, t.probability_equal_variance,0.001)
|
33
|
+
assert_in_delta(0.09095, t.probability_not_equal_variance,0.001)
|
34
|
+
end
|
35
|
+
should "be the same using shorthand" do
|
36
|
+
v=100.times.map {rand(100)}.to_scale
|
37
|
+
assert_equal(Statsample::Test.t_one_sample(v).t, T::OneSample.new(v).t)
|
38
|
+
end
|
39
|
+
should "calculate all values for one sample T test" do
|
40
|
+
u=@a.mean+(1-rand*2)
|
41
|
+
tos=T::OneSample.new(@a,{:u=>u})
|
42
|
+
assert_equal((@a.mean-u).quo(@a.sd.quo(sqrt(@a.n))), tos.t)
|
43
|
+
assert_equal(@a.n-1, tos.df)
|
44
|
+
assert(tos.summary.size>0)
|
45
|
+
end
|
39
46
|
end
|
40
47
|
end
|