statsample-ekatena 2.0.2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/.gitignore +15 -0
- data/.travis.yml +23 -0
- data/CONTRIBUTING.md +17 -0
- data/Gemfile +2 -0
- data/History.txt +457 -0
- data/LICENSE.txt +12 -0
- data/README.md +175 -0
- data/Rakefile +44 -0
- data/benchmarks/correlation_matrix_15_variables.rb +32 -0
- data/benchmarks/correlation_matrix_5_variables.rb +33 -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 +71 -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/data/locale/es/LC_MESSAGES/statsample.mo +0 -0
- data/doc_latex/manual/equations.tex +78 -0
- data/examples/boxplot.rb +28 -0
- data/examples/chisquare_test.rb +23 -0
- data/examples/correlation_matrix.rb +32 -0
- data/examples/dataset.rb +30 -0
- data/examples/dominance_analysis.rb +33 -0
- data/examples/dominance_analysis_bootstrap.rb +32 -0
- data/examples/histogram.rb +26 -0
- data/examples/icc.rb +24 -0
- data/examples/levene.rb +29 -0
- data/examples/multiple_regression.rb +20 -0
- data/examples/multivariate_correlation.rb +33 -0
- data/examples/parallel_analysis.rb +40 -0
- data/examples/polychoric.rb +40 -0
- data/examples/principal_axis.rb +26 -0
- data/examples/reliability.rb +31 -0
- data/examples/scatterplot.rb +25 -0
- data/examples/t_test.rb +27 -0
- data/examples/tetrachoric.rb +17 -0
- data/examples/u_test.rb +24 -0
- data/examples/vector.rb +20 -0
- data/examples/velicer_map_test.rb +46 -0
- data/grab_references.rb +29 -0
- data/lib/spss.rb +134 -0
- data/lib/statsample-ekatena/analysis.rb +100 -0
- data/lib/statsample-ekatena/analysis/suite.rb +89 -0
- data/lib/statsample-ekatena/analysis/suitereportbuilder.rb +44 -0
- data/lib/statsample-ekatena/anova.rb +24 -0
- data/lib/statsample-ekatena/anova/contrast.rb +79 -0
- data/lib/statsample-ekatena/anova/oneway.rb +187 -0
- data/lib/statsample-ekatena/anova/twoway.rb +207 -0
- data/lib/statsample-ekatena/bivariate.rb +406 -0
- data/lib/statsample-ekatena/bivariate/pearson.rb +54 -0
- data/lib/statsample-ekatena/codification.rb +182 -0
- data/lib/statsample-ekatena/converter/csv.rb +28 -0
- data/lib/statsample-ekatena/converter/spss.rb +48 -0
- data/lib/statsample-ekatena/converters.rb +211 -0
- data/lib/statsample-ekatena/crosstab.rb +188 -0
- data/lib/statsample-ekatena/daru.rb +115 -0
- data/lib/statsample-ekatena/dataset.rb +10 -0
- data/lib/statsample-ekatena/dominanceanalysis.rb +425 -0
- data/lib/statsample-ekatena/dominanceanalysis/bootstrap.rb +232 -0
- data/lib/statsample-ekatena/factor.rb +104 -0
- data/lib/statsample-ekatena/factor/map.rb +124 -0
- data/lib/statsample-ekatena/factor/parallelanalysis.rb +166 -0
- data/lib/statsample-ekatena/factor/pca.rb +242 -0
- data/lib/statsample-ekatena/factor/principalaxis.rb +243 -0
- data/lib/statsample-ekatena/factor/rotation.rb +198 -0
- data/lib/statsample-ekatena/formula/fit_model.rb +46 -0
- data/lib/statsample-ekatena/formula/formula.rb +306 -0
- data/lib/statsample-ekatena/graph.rb +11 -0
- data/lib/statsample-ekatena/graph/boxplot.rb +236 -0
- data/lib/statsample-ekatena/graph/histogram.rb +198 -0
- data/lib/statsample-ekatena/graph/scatterplot.rb +213 -0
- data/lib/statsample-ekatena/histogram.rb +180 -0
- data/lib/statsample-ekatena/matrix.rb +329 -0
- data/lib/statsample-ekatena/multiset.rb +310 -0
- data/lib/statsample-ekatena/regression.rb +65 -0
- data/lib/statsample-ekatena/regression/multiple.rb +89 -0
- data/lib/statsample-ekatena/regression/multiple/alglibengine.rb +128 -0
- data/lib/statsample-ekatena/regression/multiple/baseengine.rb +251 -0
- data/lib/statsample-ekatena/regression/multiple/gslengine.rb +129 -0
- data/lib/statsample-ekatena/regression/multiple/matrixengine.rb +205 -0
- data/lib/statsample-ekatena/regression/multiple/rubyengine.rb +86 -0
- data/lib/statsample-ekatena/regression/simple.rb +121 -0
- data/lib/statsample-ekatena/reliability.rb +150 -0
- data/lib/statsample-ekatena/reliability/icc.rb +415 -0
- data/lib/statsample-ekatena/reliability/multiscaleanalysis.rb +181 -0
- data/lib/statsample-ekatena/reliability/scaleanalysis.rb +233 -0
- data/lib/statsample-ekatena/reliability/skillscaleanalysis.rb +114 -0
- data/lib/statsample-ekatena/resample.rb +15 -0
- data/lib/statsample-ekatena/shorthand.rb +125 -0
- data/lib/statsample-ekatena/srs.rb +169 -0
- data/lib/statsample-ekatena/test.rb +82 -0
- data/lib/statsample-ekatena/test/bartlettsphericity.rb +45 -0
- data/lib/statsample-ekatena/test/chisquare.rb +73 -0
- data/lib/statsample-ekatena/test/f.rb +52 -0
- data/lib/statsample-ekatena/test/kolmogorovsmirnov.rb +63 -0
- data/lib/statsample-ekatena/test/levene.rb +88 -0
- data/lib/statsample-ekatena/test/t.rb +309 -0
- data/lib/statsample-ekatena/test/umannwhitney.rb +208 -0
- data/lib/statsample-ekatena/test/wilcoxonsignedrank.rb +90 -0
- data/lib/statsample-ekatena/vector.rb +19 -0
- data/lib/statsample-ekatena/version.rb +3 -0
- data/lib/statsample.rb +282 -0
- data/po/es/statsample.mo +0 -0
- data/po/es/statsample.po +959 -0
- data/po/statsample.pot +947 -0
- data/references.txt +24 -0
- data/statsample-ekatena.gemspec +49 -0
- data/test/fixtures/bank2.dat +200 -0
- data/test/fixtures/correlation_matrix.rb +17 -0
- data/test/fixtures/df.csv +15 -0
- data/test/fixtures/hartman_23.matrix +9 -0
- data/test/fixtures/stock_data.csv +500 -0
- data/test/fixtures/tetmat_matrix.txt +5 -0
- data/test/fixtures/tetmat_test.txt +1001 -0
- data/test/helpers_tests.rb +83 -0
- data/test/test_analysis.rb +176 -0
- data/test/test_anova_contrast.rb +36 -0
- data/test/test_anovaoneway.rb +26 -0
- data/test/test_anovatwoway.rb +37 -0
- data/test/test_anovatwowaywithdataset.rb +47 -0
- data/test/test_anovawithvectors.rb +102 -0
- data/test/test_awesome_print_bug.rb +16 -0
- data/test/test_bartlettsphericity.rb +25 -0
- data/test/test_bivariate.rb +164 -0
- data/test/test_codification.rb +78 -0
- data/test/test_crosstab.rb +67 -0
- data/test/test_dominance_analysis.rb +39 -0
- data/test/test_factor.rb +228 -0
- data/test/test_factor_map.rb +38 -0
- data/test/test_factor_pa.rb +56 -0
- data/test/test_fit_model.rb +88 -0
- data/test/test_ggobi.rb +35 -0
- data/test/test_gsl.rb +15 -0
- data/test/test_histogram.rb +109 -0
- data/test/test_matrix.rb +48 -0
- data/test/test_multiset.rb +176 -0
- data/test/test_regression.rb +231 -0
- data/test/test_reliability.rb +223 -0
- data/test/test_reliability_icc.rb +198 -0
- data/test/test_reliability_skillscale.rb +57 -0
- data/test/test_resample.rb +24 -0
- data/test/test_srs.rb +9 -0
- data/test/test_statistics.rb +69 -0
- data/test/test_stest.rb +69 -0
- data/test/test_stratified.rb +17 -0
- data/test/test_test_f.rb +33 -0
- data/test/test_test_kolmogorovsmirnov.rb +34 -0
- data/test/test_test_t.rb +62 -0
- data/test/test_umannwhitney.rb +27 -0
- data/test/test_vector.rb +12 -0
- data/test/test_wilcoxonsignedrank.rb +64 -0
- metadata +570 -0
@@ -0,0 +1,198 @@
|
|
1
|
+
require(File.expand_path(File.dirname(__FILE__) + '/helpers_tests.rb'))
|
2
|
+
|
3
|
+
$reliability_icc = nil
|
4
|
+
|
5
|
+
class StatsampleReliabilityIccTestCase < Minitest::Test
|
6
|
+
context Statsample::Reliability::ICC do
|
7
|
+
setup do
|
8
|
+
a = Daru::Vector.new([9, 6, 8, 7, 10, 6])
|
9
|
+
b = Daru::Vector.new([2, 1, 4, 1, 5, 2])
|
10
|
+
c = Daru::Vector.new([5, 3, 6, 2, 6, 4])
|
11
|
+
d = Daru::Vector.new([8, 2, 8, 6, 9, 7])
|
12
|
+
@ds = Daru::DataFrame.new({ :a => a, :b => b, :c => c, :d => d })
|
13
|
+
@icc = Statsample::Reliability::ICC.new(@ds)
|
14
|
+
end
|
15
|
+
should 'basic method be correct' do
|
16
|
+
assert_equal(6, @icc.n)
|
17
|
+
assert_equal(4, @icc.k)
|
18
|
+
end
|
19
|
+
should 'total mean be correct' do
|
20
|
+
assert_in_delta(5.291, @icc.total_mean, 0.001)
|
21
|
+
end
|
22
|
+
should 'df methods be correct' do
|
23
|
+
assert_equal(5, @icc.df_bt)
|
24
|
+
assert_equal(18, @icc.df_wt)
|
25
|
+
assert_equal(3, @icc.df_bj)
|
26
|
+
assert_equal(15, @icc.df_residual)
|
27
|
+
end
|
28
|
+
should 'ms between targets be correct' do
|
29
|
+
assert_in_delta(11.24, @icc.ms_bt, 0.01)
|
30
|
+
end
|
31
|
+
should 'ms within targets be correct' do
|
32
|
+
assert_in_delta(6.26, @icc.ms_wt, 0.01)
|
33
|
+
end
|
34
|
+
should 'ms between judges be correct' do
|
35
|
+
assert_in_delta(32.49, @icc.ms_bj, 0.01)
|
36
|
+
end
|
37
|
+
should 'ms residual be correct' do
|
38
|
+
assert_in_delta(1.02, @icc.ms_residual, 0.01)
|
39
|
+
end
|
40
|
+
context 'with McGraw and Wong denominations,' do
|
41
|
+
end
|
42
|
+
context 'with Shrout & Fleiss denominations, ' do
|
43
|
+
should 'icc(1,1) method be correct' do
|
44
|
+
assert_in_delta(0.17, @icc.icc_1_1, 0.01)
|
45
|
+
end
|
46
|
+
# Verified on SPSS and R
|
47
|
+
should 'icc(2,1) method be correct' do
|
48
|
+
assert_in_delta(0.29, @icc.icc_2_1, 0.01)
|
49
|
+
end
|
50
|
+
should 'icc(3,1) method be correct' do
|
51
|
+
assert_in_delta(0.71, @icc.icc_3_1, 0.01)
|
52
|
+
end
|
53
|
+
should 'icc(1,k) method be correct' do
|
54
|
+
assert_in_delta(0.44, @icc.icc_1_k, 0.01)
|
55
|
+
end
|
56
|
+
# Verified on SPSS and R
|
57
|
+
should 'icc(2,k) method be correct' do
|
58
|
+
assert_in_delta(0.62, @icc.icc_2_k, 0.01)
|
59
|
+
end
|
60
|
+
should 'icc(3,k) method be correct' do
|
61
|
+
assert_in_delta(0.91, @icc.icc_3_k, 0.01)
|
62
|
+
end
|
63
|
+
|
64
|
+
should 'icc(1,1) F be correct' do
|
65
|
+
assert_in_delta(1.795, @icc.icc_1_f.f)
|
66
|
+
end
|
67
|
+
should 'icc(1,1) confidence interval should be correct' do
|
68
|
+
assert_in_delta(-0.133, @icc.icc_1_1_ci[0], 0.001)
|
69
|
+
assert_in_delta(0.723, @icc.icc_1_1_ci[1], 0.001)
|
70
|
+
end
|
71
|
+
should 'icc(1,k) confidence interval should be correct' do
|
72
|
+
assert_in_delta(-0.884, @icc.icc_1_k_ci[0], 0.001)
|
73
|
+
assert_in_delta(0.912, @icc.icc_1_k_ci[1], 0.001)
|
74
|
+
end
|
75
|
+
|
76
|
+
should 'icc(2,1) F be correct' do
|
77
|
+
assert_in_delta(11.027, @icc.icc_2_f.f)
|
78
|
+
end
|
79
|
+
should 'icc(2,1) confidence interval should be correct' do
|
80
|
+
# skip("Not yet operational")
|
81
|
+
assert_in_delta(0.019, @icc.icc_2_1_ci[0], 0.001)
|
82
|
+
assert_in_delta(0.761, @icc.icc_2_1_ci[1], 0.001)
|
83
|
+
end
|
84
|
+
|
85
|
+
# Verified on SPSS and R
|
86
|
+
should 'icc(2,k) confidence interval should be correct' do
|
87
|
+
# skip("Not yet operational")
|
88
|
+
# p @icc.icc_2_k_ci
|
89
|
+
assert_in_delta(0.039, @icc.icc_2_k_ci[0], 0.001)
|
90
|
+
assert_in_delta(0.929, @icc.icc_2_k_ci[1], 0.001)
|
91
|
+
end
|
92
|
+
# should "Shrout icc(2,k) and McGraw icc(a,k) ci be equal" do
|
93
|
+
# assert_in_delta(@icc.icc_2_k_ci_shrout[0], @icc.icc_2_k_ci_mcgraw[0], 10e-5)
|
94
|
+
# end
|
95
|
+
|
96
|
+
should 'icc(3,1) F be correct' do
|
97
|
+
assert_in_delta(11.027, @icc.icc_3_f.f)
|
98
|
+
end
|
99
|
+
|
100
|
+
should 'icc(3,1) confidence interval should be correct' do
|
101
|
+
assert_in_delta(0.342, @icc.icc_3_1_ci[0], 0.001)
|
102
|
+
assert_in_delta(0.946, @icc.icc_3_1_ci[1], 0.001)
|
103
|
+
end
|
104
|
+
should 'icc(3,k) confidence interval should be correct' do
|
105
|
+
assert_in_delta(0.676, @icc.icc_3_k_ci[0], 0.001)
|
106
|
+
assert_in_delta(0.986, @icc.icc_3_k_ci[1], 0.001)
|
107
|
+
end
|
108
|
+
should 'incorrect type raises an error' do
|
109
|
+
assert_raise(::RuntimeError) do
|
110
|
+
@icc.type = :nonexistant_type
|
111
|
+
end
|
112
|
+
end
|
113
|
+
end
|
114
|
+
|
115
|
+
begin
|
116
|
+
require 'rserve'
|
117
|
+
require 'daru/extensions/rserve'
|
118
|
+
context 'McGraw and Wong' do
|
119
|
+
teardown do
|
120
|
+
@r = $reliability_icc[:r].close unless $reliability_icc[:r].nil?
|
121
|
+
end
|
122
|
+
setup do
|
123
|
+
if $reliability_icc.nil?
|
124
|
+
size = 100
|
125
|
+
a = Daru::Vector.new(size.times.map { rand(10) })
|
126
|
+
b = a.recode { |i| i + rand(4) - 2 }
|
127
|
+
c = a.recode { |i| i + rand(4) - 2 }
|
128
|
+
d = a.recode { |i| i + rand(4) - 2 }
|
129
|
+
@ds = Daru::DataFrame.new({ :a => a, :b => b, :c => c, :d => d })
|
130
|
+
|
131
|
+
@icc = Statsample::Reliability::ICC.new(@ds)
|
132
|
+
@r = Rserve::Connection.new
|
133
|
+
|
134
|
+
@r.assign('ds', @ds)
|
135
|
+
|
136
|
+
@r.void_eval("library(irr);
|
137
|
+
iccs=list(
|
138
|
+
icc_1=icc(ds,'o','c','s'),
|
139
|
+
icc_k=icc(ds,'o','c','a'),
|
140
|
+
icc_c_1=icc(ds,'t','c','s'),
|
141
|
+
icc_c_k=icc(ds,'t','c','a'),
|
142
|
+
icc_a_1=icc(ds,'t','a','s'),
|
143
|
+
icc_a_k=icc(ds,'t','a','a'))
|
144
|
+
")
|
145
|
+
@iccs = @r.eval('iccs').to_ruby
|
146
|
+
$reliability_icc = { icc: @icc, iccs: @iccs, r: @r
|
147
|
+
}
|
148
|
+
|
149
|
+
end
|
150
|
+
@icc = $reliability_icc[:icc]
|
151
|
+
@iccs = $reliability_icc[:iccs]
|
152
|
+
@r = $reliability_icc[:r]
|
153
|
+
end
|
154
|
+
[:icc_1, :icc_k, :icc_c_1, :icc_c_k, :icc_a_1, :icc_a_k].each do |t|
|
155
|
+
context "ICC Type #{t} " do
|
156
|
+
should 'value be correct' do
|
157
|
+
@icc.type = t
|
158
|
+
@r_icc = @iccs[t.to_s]
|
159
|
+
assert_in_delta(@r_icc['value'], @icc.r)
|
160
|
+
end
|
161
|
+
should 'fvalue be correct' do
|
162
|
+
@icc.type = t
|
163
|
+
@r_icc = @iccs[t.to_s]
|
164
|
+
assert_in_delta(@r_icc['Fvalue'], @icc.f.f)
|
165
|
+
end
|
166
|
+
should 'num df be correct' do
|
167
|
+
@icc.type = t
|
168
|
+
@r_icc = @iccs[t.to_s]
|
169
|
+
assert_in_delta(@r_icc['df1'], @icc.f.df_num)
|
170
|
+
end
|
171
|
+
should 'den df be correct' do
|
172
|
+
@icc.type = t
|
173
|
+
@r_icc = @iccs[t.to_s]
|
174
|
+
assert_in_delta(@r_icc['df2'], @icc.f.df_den)
|
175
|
+
end
|
176
|
+
|
177
|
+
should 'f probability be correct' do
|
178
|
+
@icc.type = t
|
179
|
+
@r_icc = @iccs[t.to_s]
|
180
|
+
assert_in_delta(@r_icc['p.value'], @icc.f.probability)
|
181
|
+
end
|
182
|
+
should 'bounds be equal' do
|
183
|
+
@icc.type = t
|
184
|
+
@r_icc = @iccs[t.to_s]
|
185
|
+
assert_in_delta(@r_icc['lbound'], @icc.lbound, 0.1)
|
186
|
+
assert_in_delta(@r_icc['ubound'], @icc.ubound, 0.1)
|
187
|
+
end
|
188
|
+
should 'summary generated' do
|
189
|
+
assert(@icc.summary.size > 0)
|
190
|
+
end
|
191
|
+
end
|
192
|
+
end
|
193
|
+
end
|
194
|
+
rescue
|
195
|
+
puts 'requires rserve'
|
196
|
+
end
|
197
|
+
end
|
198
|
+
end
|
@@ -0,0 +1,57 @@
|
|
1
|
+
require(File.expand_path(File.dirname(__FILE__) + '/helpers_tests.rb'))
|
2
|
+
|
3
|
+
class StatsampleReliabilitySkillScaleTestCase < Minitest::Test
|
4
|
+
context Statsample::Reliability::SkillScaleAnalysis do
|
5
|
+
setup do
|
6
|
+
options = %w(a b c d e)
|
7
|
+
cases = 20
|
8
|
+
@id = Daru::Vector.new(cases.times.map { |v| v })
|
9
|
+
@a = Daru::Vector.new(cases.times.map { options[rand(5)] })
|
10
|
+
@b = Daru::Vector.new(cases.times.map { options[rand(5)] })
|
11
|
+
@c = Daru::Vector.new(cases.times.map { options[rand(5)] })
|
12
|
+
@d = Daru::Vector.new(cases.times.map { options[rand(5)] })
|
13
|
+
@e = Daru::Vector.new(
|
14
|
+
cases.times.map do |i|
|
15
|
+
i == 0 ? options[rand(0)] :
|
16
|
+
rand > 0.8 ? nil : options[rand(5)]
|
17
|
+
end
|
18
|
+
)
|
19
|
+
@ds = Daru::DataFrame.new({ :id => @id, :a => @a, :b => @b, :c => @c, :d => @d, :e => @e })
|
20
|
+
@key = { :a => 'a', :b => options[rand(5)], :c => options[rand(5)], :d => options[rand(5)], :e => options[rand(5)] }
|
21
|
+
@ssa = Statsample::Reliability::SkillScaleAnalysis.new(@ds, @key)
|
22
|
+
@ac = Daru::Vector.new(@a.map { |v| v == @key[:a] ? 1 : 0 })
|
23
|
+
@bc = Daru::Vector.new(@b.map { |v| v == @key[:b] ? 1 : 0 })
|
24
|
+
@cc = Daru::Vector.new(@c.map { |v| v == @key[:c] ? 1 : 0 })
|
25
|
+
@dc = Daru::Vector.new(@d.map { |v| v == @key[:d] ? 1 : 0 })
|
26
|
+
@ec = Daru::Vector.new(@e.map { |v| v.nil? ? nil : (v == @key[:e] ? 1 : 0) })
|
27
|
+
end
|
28
|
+
should 'return proper corrected dataset' do
|
29
|
+
cds = Daru::DataFrame.new({ :id => @id, :a => @ac, :b => @bc, :c => @cc, :d => @dc, :e => @ec })
|
30
|
+
assert_equal(cds, @ssa.corrected_dataset)
|
31
|
+
end
|
32
|
+
should 'return proper corrected minimal dataset' do
|
33
|
+
cdsm = Daru::DataFrame.new({ :a => @ac, :b => @bc, :c => @cc, :d => @dc, :e => @ec })
|
34
|
+
assert_equal(cdsm, @ssa.corrected_dataset_minimal)
|
35
|
+
end
|
36
|
+
should 'return correct vector_sum and vector_sum' do
|
37
|
+
cdsm = @ssa.corrected_dataset_minimal
|
38
|
+
assert_equal(cdsm.vector_sum, @ssa.vector_sum)
|
39
|
+
assert_equal(cdsm.vector_mean, @ssa.vector_mean)
|
40
|
+
end
|
41
|
+
should 'not crash on rare case' do
|
42
|
+
a = Daru::Vector.new(['c', 'c', 'a', 'a', 'c', 'a', 'b', 'c', 'c', 'b', 'a', 'd', 'a', 'd', 'a', 'a', 'd', 'e', 'c', 'd'])
|
43
|
+
b = Daru::Vector.new(['e', 'b', 'e', 'b', 'c', 'd', 'a', 'e', 'e', 'c', 'b', 'e', 'e', 'b', 'd', 'c', 'e', 'b', 'b', 'd'])
|
44
|
+
c = Daru::Vector.new(['e', 'b', 'e', 'c', 'e', 'c', 'b', 'd', 'e', 'c', 'a', 'a', 'b', 'd', 'e', 'c', 'b', 'a', 'a', 'e'])
|
45
|
+
d = Daru::Vector.new(['a', 'b', 'd', 'd', 'e', 'b', 'e', 'b', 'd', 'c', 'e', 'a', 'c', 'd', 'c', 'c', 'e', 'd', 'd', 'b'])
|
46
|
+
e = Daru::Vector.new(['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 = Daru::DataFrame.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
|
+
|
53
|
+
should 'return valid summary' do
|
54
|
+
assert(@ssa.summary.size > 0)
|
55
|
+
end
|
56
|
+
end
|
57
|
+
end
|
@@ -0,0 +1,24 @@
|
|
1
|
+
require(File.expand_path(File.dirname(__FILE__) + '/helpers_tests.rb'))
|
2
|
+
|
3
|
+
class StatsampleResampleTestCase < Minitest::Test
|
4
|
+
def initialize(*args)
|
5
|
+
super
|
6
|
+
end
|
7
|
+
|
8
|
+
def test_basic
|
9
|
+
r = Statsample::Resample.generate(20, 1, 10)
|
10
|
+
assert_equal(20, r.size)
|
11
|
+
assert(r.min >= 1)
|
12
|
+
assert(r.max <= 10)
|
13
|
+
end
|
14
|
+
|
15
|
+
def test_repeat_and_save
|
16
|
+
r = Statsample::Resample.repeat_and_save(400) {
|
17
|
+
Statsample::Resample.generate(20, 1, 10).count(1)
|
18
|
+
}
|
19
|
+
assert_equal(400, r.size)
|
20
|
+
v = Daru::Vector.new(r)
|
21
|
+
a = v.count { |x| x > 3 }
|
22
|
+
assert(a >= 30 && a <= 70)
|
23
|
+
end
|
24
|
+
end
|
data/test/test_srs.rb
ADDED
@@ -0,0 +1,9 @@
|
|
1
|
+
require(File.expand_path(File.dirname(__FILE__) + '/helpers_tests.rb'))
|
2
|
+
|
3
|
+
class StatsampleSrsTestCase < Minitest::Test
|
4
|
+
def test_std_error
|
5
|
+
assert_equal(384, Statsample::SRS.estimation_n0(0.05, 0.5, 0.95).to_i)
|
6
|
+
assert_equal(108, Statsample::SRS.estimation_n(0.05, 0.5, 150, 0.95).to_i)
|
7
|
+
assert_in_delta(0.0289, Statsample::SRS.proportion_sd_kp_wor(0.5, 100, 150), 0.001)
|
8
|
+
end
|
9
|
+
end
|
@@ -0,0 +1,69 @@
|
|
1
|
+
require(File.expand_path(File.dirname(__FILE__) + '/helpers_tests.rb'))
|
2
|
+
class StatsampleStatisicsTestCase < Minitest::Test
|
3
|
+
def initialize(*args)
|
4
|
+
super
|
5
|
+
end
|
6
|
+
|
7
|
+
def test_p_using_cdf
|
8
|
+
assert_equal(0.25, Statsample::Test.p_using_cdf(0.25, tails = :left))
|
9
|
+
assert_equal(0.75, Statsample::Test.p_using_cdf(0.25, tails = :right))
|
10
|
+
assert_equal(0.50, Statsample::Test.p_using_cdf(0.25, tails = :both))
|
11
|
+
assert_equal(1, Statsample::Test.p_using_cdf(0.50, tails = :both))
|
12
|
+
assert_equal(0.05, Statsample::Test.p_using_cdf(0.025, tails = :both))
|
13
|
+
assert_in_delta(0.05, Statsample::Test.p_using_cdf(0.975, tails = :both), 0.0001)
|
14
|
+
end
|
15
|
+
|
16
|
+
def test_recode_repeated
|
17
|
+
a = %w(a b c c d d d e)
|
18
|
+
exp = %w(a b c_1 c_2 d_1 d_2 d_3 e)
|
19
|
+
assert_equal(exp, Daru::ArrayHelper.recode_repeated(a))
|
20
|
+
end
|
21
|
+
|
22
|
+
def test_is_number
|
23
|
+
assert('10'.is_number?)
|
24
|
+
assert('-10'.is_number?)
|
25
|
+
assert('0.1'.is_number?)
|
26
|
+
assert('-0.1'.is_number?)
|
27
|
+
assert('10e3'.is_number?)
|
28
|
+
assert('10e-3'.is_number?)
|
29
|
+
assert(!'1212-1212-1'.is_number?)
|
30
|
+
assert(!'a10'.is_number?)
|
31
|
+
assert(!''.is_number?)
|
32
|
+
end
|
33
|
+
|
34
|
+
def test_estimation_mean
|
35
|
+
v = Daru::Vector.new([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])
|
36
|
+
assert_equal(50, v.size)
|
37
|
+
assert_equal(1471, v.sum)
|
38
|
+
# limits=Statsample::SRS.mean_confidence_interval_z(v.mean(), v.sds(), v.size,676,0.80)
|
39
|
+
end
|
40
|
+
|
41
|
+
def test_estimation_proportion
|
42
|
+
# total
|
43
|
+
pop = 3042
|
44
|
+
sam = 200
|
45
|
+
prop = 0.19
|
46
|
+
assert_in_delta(81.8, Statsample::SRS.proportion_total_sd_ep_wor(prop, sam, pop), 0.1)
|
47
|
+
|
48
|
+
# confidence limits
|
49
|
+
pop = 500
|
50
|
+
sam = 100
|
51
|
+
prop = 0.37
|
52
|
+
a = 0.95
|
53
|
+
l = Statsample::SRS.proportion_confidence_interval_z(prop, sam, pop, a)
|
54
|
+
assert_in_delta(0.28, l[0], 0.01)
|
55
|
+
assert_in_delta(0.46, l[1], 0.01)
|
56
|
+
end
|
57
|
+
|
58
|
+
def test_simple_linear_regression
|
59
|
+
a = Daru::Vector.new([1, 2, 3, 4, 5, 6])
|
60
|
+
b = Daru::Vector.new([6, 2, 4, 10, 12, 8])
|
61
|
+
reg = Statsample::Regression::Simple.new_from_vectors(a, b)
|
62
|
+
assert_in_delta((reg.ssr + reg.sse).to_f, reg.sst, 0.001)
|
63
|
+
assert_in_delta(Statsample::Bivariate.pearson(a, b), reg.r, 0.001)
|
64
|
+
assert_in_delta(2.4, reg.a, 0.01)
|
65
|
+
assert_in_delta(1.314, reg.b, 0.001)
|
66
|
+
assert_in_delta(0.657, reg.r, 0.001)
|
67
|
+
assert_in_delta(0.432, reg.r2, 0.001)
|
68
|
+
end
|
69
|
+
end
|
data/test/test_stest.rb
ADDED
@@ -0,0 +1,69 @@
|
|
1
|
+
require(File.expand_path(File.dirname(__FILE__) + '/helpers_tests.rb'))
|
2
|
+
|
3
|
+
class StatsampleTestTestCase < Minitest::Test
|
4
|
+
def test_chi_square_matrix_with_expected
|
5
|
+
real = Matrix[[95, 95], [45, 155]]
|
6
|
+
expected = Matrix[[68, 122], [72, 128]]
|
7
|
+
assert_nothing_raised do
|
8
|
+
Statsample::Test.chi_square(real, expected)
|
9
|
+
end
|
10
|
+
chi = Statsample::Test.chi_square(real, expected).chi_square
|
11
|
+
assert_in_delta(32.53, chi, 0.1)
|
12
|
+
end
|
13
|
+
|
14
|
+
def test_chi_square_matrix_only_observed
|
15
|
+
observed = Matrix[[20, 30, 40], [30, 40, 50], [60, 70, 80], [10, 20, 40]]
|
16
|
+
assert_nothing_raised do
|
17
|
+
Statsample::Test.chi_square(observed)
|
18
|
+
end
|
19
|
+
chi = Statsample::Test.chi_square(observed)
|
20
|
+
assert_in_delta(9.5602, chi.chi_square, 0.0001)
|
21
|
+
assert_in_delta(0.1444, chi.probability, 0.0001)
|
22
|
+
|
23
|
+
assert_equal(6, chi.df)
|
24
|
+
end
|
25
|
+
|
26
|
+
def test_chi_square_vector
|
27
|
+
observed = Vector[20,30,15]
|
28
|
+
expected = Vector[20,20,20]
|
29
|
+
assert_nothing_raised do
|
30
|
+
Statsample::Test.chi_square(observed, expected)
|
31
|
+
end
|
32
|
+
chi = Statsample::Test.chi_square(observed, expected)
|
33
|
+
|
34
|
+
assert_in_delta(6.25, chi.chi_square, 0.0001)
|
35
|
+
assert_in_delta(0.04393, chi.probability, 0.00001)
|
36
|
+
|
37
|
+
assert_equal(2, chi.df)
|
38
|
+
end
|
39
|
+
|
40
|
+
def test_u_mannwhitney
|
41
|
+
a = Daru::Vector.new([1, 2, 3, 4, 5, 6])
|
42
|
+
b = Daru::Vector.new([0, 5, 7, 9, 10, 11])
|
43
|
+
assert_equal(7.5, Statsample::Test.u_mannwhitney(a, b).u)
|
44
|
+
assert_equal(7.5, Statsample::Test.u_mannwhitney(b, a).u)
|
45
|
+
a = Daru::Vector.new([1, 7, 8, 9, 10, 11])
|
46
|
+
b = Daru::Vector.new([2, 3, 4, 5, 6, 12])
|
47
|
+
assert_equal(11, Statsample::Test.u_mannwhitney(a, b).u)
|
48
|
+
end
|
49
|
+
|
50
|
+
def test_levene
|
51
|
+
a = Daru::Vector.new([1, 2, 3, 4, 5, 6, 7, 8, 100, 10])
|
52
|
+
b = Daru::Vector.new([30, 40, 50, 60, 70, 80, 90, 100, 110, 120])
|
53
|
+
levene = Statsample::Test::Levene.new([a, b])
|
54
|
+
assert_levene(levene)
|
55
|
+
end
|
56
|
+
|
57
|
+
def test_levene_dataset
|
58
|
+
a = Daru::Vector.new([1, 2, 3, 4, 5, 6, 7, 8, 100, 10])
|
59
|
+
b = Daru::Vector.new([30, 40, 50, 60, 70, 80, 90, 100, 110, 120])
|
60
|
+
ds = Daru::DataFrame.new({ :a => a, :b => b })
|
61
|
+
levene = Statsample::Test::Levene.new(ds)
|
62
|
+
assert_levene(levene)
|
63
|
+
end
|
64
|
+
|
65
|
+
def assert_levene(levene)
|
66
|
+
assert_in_delta(0.778, levene.f, 0.001)
|
67
|
+
assert_in_delta(0.389, levene.probability, 0.001)
|
68
|
+
end
|
69
|
+
end
|
@@ -0,0 +1,17 @@
|
|
1
|
+
require(File.expand_path(File.dirname(__FILE__) + '/helpers_tests.rb'))
|
2
|
+
|
3
|
+
class StatsampleStratifiedTestCase < Minitest::Test
|
4
|
+
def initialize(*args)
|
5
|
+
super
|
6
|
+
end
|
7
|
+
|
8
|
+
def test_mean
|
9
|
+
a = [10, 20, 30, 40, 50]
|
10
|
+
b = [110, 120, 130, 140]
|
11
|
+
pop = a + b
|
12
|
+
av = Daru::Vector.new(a)
|
13
|
+
bv = Daru::Vector.new(b)
|
14
|
+
popv = Daru::Vector.new(pop)
|
15
|
+
assert_equal(popv.mean, Statsample::StratifiedSample.mean(av, bv))
|
16
|
+
end
|
17
|
+
end
|