statsample 0.15.1 → 0.16.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 +8 -0
- data/Manifest.txt +2 -6
- data/Rakefile +2 -2
- data/examples/dominance_analysis.rb +1 -2
- data/examples/multivariate_correlation.rb +1 -0
- data/examples/parallel_analysis.rb +7 -6
- data/examples/scatterplot.rb +12 -0
- data/lib/distribution/normal.rb +29 -1
- data/lib/statsample.rb +5 -2
- data/lib/statsample/bivariate.rb +3 -2
- data/lib/statsample/converters.rb +1 -1
- data/lib/statsample/dataset.rb +42 -14
- data/lib/statsample/factor/parallelanalysis.rb +5 -5
- data/lib/statsample/graph.rb +1 -4
- data/lib/statsample/graph/scatterplot.rb +169 -0
- data/lib/statsample/matrix.rb +5 -5
- data/lib/statsample/mle/logit.rb +5 -4
- data/lib/statsample/multiset.rb +4 -1
- data/lib/statsample/vector.rb +9 -2
- data/references.txt +1 -0
- data/test/test_anovaoneway.rb +1 -1
- data/test/test_factor.rb +29 -24
- data/test/test_reliability_icc.rb +0 -2
- data/test/test_vector.rb +4 -0
- metadata +78 -42
- metadata.gz.sig +0 -0
- data/lib/statsample/graph/gdchart.rb +0 -45
- data/lib/statsample/graph/svgboxplot.rb +0 -108
- data/lib/statsample/graph/svggraph.rb +0 -184
- data/lib/statsample/graph/svghistogram.rb +0 -206
- data/lib/statsample/graph/svgscatterplot.rb +0 -118
- data/test/test_svg_graph.rb +0 -54
data/lib/statsample/matrix.rb
CHANGED
@@ -1,22 +1,22 @@
|
|
1
|
-
require 'extendmatrix'
|
2
|
-
|
3
|
-
|
4
1
|
class ::Matrix
|
5
2
|
def to_matrix
|
6
3
|
self
|
7
4
|
end
|
8
|
-
|
5
|
+
if defined? :eigenpairs
|
6
|
+
alias_method :eigenpairs_ruby, :eigenpairs
|
7
|
+
end
|
9
8
|
|
10
9
|
if Statsample.has_gsl?
|
11
10
|
# Optimize eigenpairs of extendmatrix module using gsl
|
12
11
|
def eigenpairs
|
13
12
|
eigval, eigvec= GSL::Eigen.symmv(self.to_gsl)
|
14
13
|
ep=eigval.size.times.map {|i|
|
15
|
-
[eigval[i], eigvec.get_col(i)]
|
14
|
+
[eigval[i], eigvec.get_col(i).to_a]
|
16
15
|
}
|
17
16
|
ep.sort{|a,b| a[0]<=>b[0]}.reverse
|
18
17
|
end
|
19
18
|
end
|
19
|
+
|
20
20
|
def eigenvalues
|
21
21
|
eigen[:eigenvalues]
|
22
22
|
end
|
data/lib/statsample/mle/logit.rb
CHANGED
@@ -57,9 +57,9 @@ module Statsample
|
|
57
57
|
# x: Matrix (NxM)
|
58
58
|
# y: Matrix (Nx1)
|
59
59
|
# p: Matrix (Mx1)
|
60
|
-
def second_derivative(x,y,
|
60
|
+
def second_derivative(x,y,p2)
|
61
61
|
raise "x.rows!=y.rows" if x.row_size!=y.row_size
|
62
|
-
raise "x.columns!=p.rows" if x.column_size!=
|
62
|
+
raise "x.columns!=p.rows" if x.column_size!=p2.row_size
|
63
63
|
n = x.row_size
|
64
64
|
k = x.column_size
|
65
65
|
sd = Array.new(k)
|
@@ -70,15 +70,16 @@ module Statsample
|
|
70
70
|
end
|
71
71
|
n.times do |i|
|
72
72
|
row = x.row(i).to_a
|
73
|
-
p_m = p_minus(row,
|
73
|
+
p_m = p_minus(row,p2)
|
74
74
|
k.times do |j|
|
75
75
|
k.times do |l|
|
76
|
-
sd[j][l] -= p_m
|
76
|
+
sd[j][l] -= (p_m*(1-p_m)*row[j]*row[l])
|
77
77
|
end
|
78
78
|
end
|
79
79
|
end
|
80
80
|
Matrix.rows(sd, true)
|
81
81
|
end
|
82
|
+
|
82
83
|
private
|
83
84
|
def p_minus(x_row,p)
|
84
85
|
value = 0.0;
|
data/lib/statsample/multiset.rb
CHANGED
@@ -3,7 +3,10 @@ module Statsample
|
|
3
3
|
# but with different number of cases.
|
4
4
|
# This is the base class for stratified and cluster sampling estimation
|
5
5
|
class Multiset
|
6
|
-
|
6
|
+
# Name of fields
|
7
|
+
attr_reader :fields
|
8
|
+
# Array with Statsample::Dataset
|
9
|
+
attr_reader :datasets
|
7
10
|
# To create a multiset
|
8
11
|
# * Multiset.new(%w{f1 f2 f3}) # define only fields
|
9
12
|
def initialize(fields)
|
data/lib/statsample/vector.rb
CHANGED
@@ -783,8 +783,15 @@ module Statsample
|
|
783
783
|
check_type :scale
|
784
784
|
Math::sqrt( variance_population(m) )
|
785
785
|
end
|
786
|
+
|
787
|
+
# Population average deviation (denominator N)
|
788
|
+
def average_deviation_population( m = nil )
|
789
|
+
check_type :scale
|
790
|
+
m ||= mean
|
791
|
+
( @scale_data.inject( 0 ) { |a, x| ( x - m ).abs + a } ).quo( n_valid )
|
792
|
+
end
|
793
|
+
|
786
794
|
# Sample Variance (denominator n-1)
|
787
|
-
|
788
795
|
def variance_sample(m=nil)
|
789
796
|
check_type :scale
|
790
797
|
m||=mean
|
@@ -792,7 +799,6 @@ module Statsample
|
|
792
799
|
end
|
793
800
|
|
794
801
|
# Sample Standard deviation (denominator n-1)
|
795
|
-
|
796
802
|
def standard_deviation_sample(m=nil)
|
797
803
|
check_type :scale
|
798
804
|
|
@@ -898,6 +904,7 @@ module Statsample
|
|
898
904
|
|
899
905
|
alias_method :sdp, :standard_deviation_population
|
900
906
|
alias_method :sds, :standard_deviation_sample
|
907
|
+
alias_method :adp, :average_deviation_population
|
901
908
|
alias_method :cov, :coefficient_of_variation
|
902
909
|
alias_method :variance, :variance_sample
|
903
910
|
alias_method :sd, :standard_deviation_sample
|
data/references.txt
CHANGED
data/test/test_anovaoneway.rb
CHANGED
data/test/test_factor.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 StatsampleFactorTestCase < MiniTest::Unit::TestCase
|
4
4
|
include Statsample::Fixtures
|
@@ -28,33 +28,38 @@ class StatsampleFactorTestCase < MiniTest::Unit::TestCase
|
|
28
28
|
}
|
29
29
|
end
|
30
30
|
def test_parallelanalysis_with_data
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
31
|
+
if Statsample.has_gsl?
|
32
|
+
samples=100
|
33
|
+
variables=10
|
34
|
+
iterations=50
|
35
|
+
rng = Distribution::Normal.rng_ugaussian
|
36
|
+
f1=samples.times.collect {rng.call}.to_scale
|
37
|
+
f2=samples.times.collect {rng.call}.to_scale
|
38
|
+
vectors={}
|
39
|
+
variables.times do |i|
|
40
|
+
if i<5
|
41
|
+
vectors["v#{i}"]=samples.times.collect {|nv|
|
42
|
+
f1[nv]*5+f2[nv]*2+rng.call
|
43
|
+
}.to_scale
|
44
|
+
else
|
45
|
+
vectors["v#{i}"]=samples.times.collect {|nv|
|
46
|
+
f2[nv]*5+f1[nv]*2+rng.call
|
47
|
+
}.to_scale
|
48
|
+
end
|
49
|
+
|
47
50
|
end
|
51
|
+
ds=vectors.to_dataset
|
48
52
|
|
53
|
+
pa1=Statsample::Factor::ParallelAnalysis.new(ds, :bootstrap_method=>:data, :iterations=>iterations)
|
54
|
+
pa2=Statsample::Factor::ParallelAnalysis.with_random_data(samples,variables,:iterations=>iterations,:percentil=>95)
|
55
|
+
3.times do |n|
|
56
|
+
var="ev_0000#{n+1}"
|
57
|
+
assert_in_delta(pa1.ds_eigenvalues[var].mean,pa2.ds_eigenvalues[var].mean,0.04)
|
58
|
+
end
|
59
|
+
else
|
60
|
+
skip("Too slow without GSL")
|
49
61
|
end
|
50
|
-
ds=vectors.to_dataset
|
51
62
|
|
52
|
-
pa1=Statsample::Factor::ParallelAnalysis.new(ds, :bootstrap_method=>:data, :iterations=>iterations)
|
53
|
-
pa2=Statsample::Factor::ParallelAnalysis.with_random_data(samples,variables,:iterations=>iterations,:percentil=>95)
|
54
|
-
3.times do |n|
|
55
|
-
var="ev_0000#{n+1}"
|
56
|
-
assert_in_delta(pa1.ds_eigenvalues[var].mean,pa2.ds_eigenvalues[var].mean,0.04)
|
57
|
-
end
|
58
63
|
end
|
59
64
|
def test_parallelanalysis
|
60
65
|
pa=Statsample::Factor::ParallelAnalysis.with_random_data(305,8,:iterations=>100,:percentil=>95)
|
@@ -128,8 +128,6 @@ class StatsampleReliabilityIccTestCase < MiniTest::Unit::TestCase
|
|
128
128
|
d=a.recode{|i|i+rand(4)-2}
|
129
129
|
@ds={'a'=>a,'b'=>b,'c'=>c,'d'=>d}.to_dataset
|
130
130
|
|
131
|
-
|
132
|
-
|
133
131
|
@icc=Statsample::Reliability::ICC.new(@ds)
|
134
132
|
@r=Rserve::Connection.new
|
135
133
|
@r.assign('ds',@ds)
|
data/test/test_vector.rb
CHANGED
@@ -326,6 +326,10 @@ class StatsampleTestVector < MiniTest::Unit::TestCase
|
|
326
326
|
a=[1,2,3,4,5,6].to_vector(:scale)
|
327
327
|
assert_equal(17.5, a.sum_of_squared_deviation)
|
328
328
|
end
|
329
|
+
def test_average_deviation
|
330
|
+
a=[1,2,3,4,5,6,7,8,9].to_scale
|
331
|
+
assert_equal(20.quo(9), a.average_deviation_population)
|
332
|
+
end
|
329
333
|
def test_samples
|
330
334
|
srand(1)
|
331
335
|
assert_equal(100,@c.sample_with_replacement(100).size)
|
metadata
CHANGED
@@ -4,9 +4,9 @@ version: !ruby/object:Gem::Version
|
|
4
4
|
prerelease: false
|
5
5
|
segments:
|
6
6
|
- 0
|
7
|
-
-
|
8
|
-
-
|
9
|
-
version: 0.
|
7
|
+
- 16
|
8
|
+
- 0
|
9
|
+
version: 0.16.0
|
10
10
|
platform: ruby
|
11
11
|
authors:
|
12
12
|
- Claudio Bustos
|
@@ -35,13 +35,14 @@ cert_chain:
|
|
35
35
|
rpP0jjs0
|
36
36
|
-----END CERTIFICATE-----
|
37
37
|
|
38
|
-
date: 2010-
|
38
|
+
date: 2010-11-13 00:00:00 -03:00
|
39
39
|
default_executable:
|
40
40
|
dependencies:
|
41
41
|
- !ruby/object:Gem::Dependency
|
42
42
|
name: spreadsheet
|
43
43
|
prerelease: false
|
44
44
|
requirement: &id001 !ruby/object:Gem::Requirement
|
45
|
+
none: false
|
45
46
|
requirements:
|
46
47
|
- - ~>
|
47
48
|
- !ruby/object:Gem::Version
|
@@ -53,9 +54,10 @@ dependencies:
|
|
53
54
|
type: :runtime
|
54
55
|
version_requirements: *id001
|
55
56
|
- !ruby/object:Gem::Dependency
|
56
|
-
name:
|
57
|
+
name: reportbuilder
|
57
58
|
prerelease: false
|
58
59
|
requirement: &id002 !ruby/object:Gem::Requirement
|
60
|
+
none: false
|
59
61
|
requirements:
|
60
62
|
- - ~>
|
61
63
|
- !ruby/object:Gem::Version
|
@@ -66,89 +68,110 @@ dependencies:
|
|
66
68
|
type: :runtime
|
67
69
|
version_requirements: *id002
|
68
70
|
- !ruby/object:Gem::Dependency
|
69
|
-
name:
|
71
|
+
name: minimization
|
70
72
|
prerelease: false
|
71
73
|
requirement: &id003 !ruby/object:Gem::Requirement
|
74
|
+
none: false
|
72
75
|
requirements:
|
73
76
|
- - ~>
|
74
77
|
- !ruby/object:Gem::Version
|
75
78
|
segments:
|
76
|
-
- 1
|
77
79
|
- 0
|
78
|
-
|
80
|
+
- 2
|
81
|
+
- 0
|
82
|
+
version: 0.2.0
|
79
83
|
type: :runtime
|
80
84
|
version_requirements: *id003
|
81
85
|
- !ruby/object:Gem::Dependency
|
82
|
-
name:
|
86
|
+
name: fastercsv
|
83
87
|
prerelease: false
|
84
88
|
requirement: &id004 !ruby/object:Gem::Requirement
|
89
|
+
none: false
|
85
90
|
requirements:
|
86
|
-
- -
|
91
|
+
- - ">="
|
87
92
|
- !ruby/object:Gem::Version
|
88
93
|
segments:
|
89
94
|
- 0
|
90
|
-
|
91
|
-
- 0
|
92
|
-
version: 0.2.0
|
95
|
+
version: "0"
|
93
96
|
type: :runtime
|
94
97
|
version_requirements: *id004
|
95
98
|
- !ruby/object:Gem::Dependency
|
96
|
-
name:
|
99
|
+
name: dirty-memoize
|
97
100
|
prerelease: false
|
98
101
|
requirement: &id005 !ruby/object:Gem::Requirement
|
102
|
+
none: false
|
99
103
|
requirements:
|
100
|
-
- -
|
104
|
+
- - ~>
|
101
105
|
- !ruby/object:Gem::Version
|
102
106
|
segments:
|
103
107
|
- 0
|
104
|
-
|
108
|
+
- 0
|
109
|
+
version: "0.0"
|
105
110
|
type: :runtime
|
106
111
|
version_requirements: *id005
|
107
112
|
- !ruby/object:Gem::Dependency
|
108
|
-
name:
|
113
|
+
name: extendmatrix
|
109
114
|
prerelease: false
|
110
115
|
requirement: &id006 !ruby/object:Gem::Requirement
|
116
|
+
none: false
|
111
117
|
requirements:
|
112
118
|
- - ~>
|
113
119
|
- !ruby/object:Gem::Version
|
114
120
|
segments:
|
115
121
|
- 0
|
116
|
-
-
|
117
|
-
|
122
|
+
- 3
|
123
|
+
- 1
|
124
|
+
version: 0.3.1
|
118
125
|
type: :runtime
|
119
126
|
version_requirements: *id006
|
120
127
|
- !ruby/object:Gem::Dependency
|
121
|
-
name:
|
128
|
+
name: statsample-bivariate-extension
|
122
129
|
prerelease: false
|
123
130
|
requirement: &id007 !ruby/object:Gem::Requirement
|
131
|
+
none: false
|
124
132
|
requirements:
|
125
|
-
- -
|
133
|
+
- - ">"
|
126
134
|
- !ruby/object:Gem::Version
|
127
135
|
segments:
|
128
136
|
- 0
|
129
|
-
|
130
|
-
- 1
|
131
|
-
version: 0.3.1
|
137
|
+
version: "0"
|
132
138
|
type: :runtime
|
133
139
|
version_requirements: *id007
|
134
140
|
- !ruby/object:Gem::Dependency
|
135
|
-
name:
|
141
|
+
name: rserve-client
|
136
142
|
prerelease: false
|
137
143
|
requirement: &id008 !ruby/object:Gem::Requirement
|
144
|
+
none: false
|
138
145
|
requirements:
|
139
146
|
- - ~>
|
140
147
|
- !ruby/object:Gem::Version
|
141
148
|
segments:
|
142
149
|
- 0
|
143
|
-
-
|
144
|
-
-
|
145
|
-
version: 0.
|
150
|
+
- 2
|
151
|
+
- 5
|
152
|
+
version: 0.2.5
|
146
153
|
type: :runtime
|
147
154
|
version_requirements: *id008
|
148
155
|
- !ruby/object:Gem::Dependency
|
149
|
-
name:
|
156
|
+
name: rubyvis
|
150
157
|
prerelease: false
|
151
158
|
requirement: &id009 !ruby/object:Gem::Requirement
|
159
|
+
none: false
|
160
|
+
requirements:
|
161
|
+
- - ~>
|
162
|
+
- !ruby/object:Gem::Version
|
163
|
+
segments:
|
164
|
+
- 0
|
165
|
+
- 2
|
166
|
+
- 2
|
167
|
+
version: 0.2.2
|
168
|
+
type: :runtime
|
169
|
+
version_requirements: *id009
|
170
|
+
- !ruby/object:Gem::Dependency
|
171
|
+
name: rubyforge
|
172
|
+
prerelease: false
|
173
|
+
requirement: &id010 !ruby/object:Gem::Requirement
|
174
|
+
none: false
|
152
175
|
requirements:
|
153
176
|
- - ">="
|
154
177
|
- !ruby/object:Gem::Version
|
@@ -158,11 +181,12 @@ dependencies:
|
|
158
181
|
- 4
|
159
182
|
version: 2.0.4
|
160
183
|
type: :development
|
161
|
-
version_requirements: *
|
184
|
+
version_requirements: *id010
|
162
185
|
- !ruby/object:Gem::Dependency
|
163
186
|
name: shoulda
|
164
187
|
prerelease: false
|
165
|
-
requirement: &
|
188
|
+
requirement: &id011 !ruby/object:Gem::Requirement
|
189
|
+
none: false
|
166
190
|
requirements:
|
167
191
|
- - ">="
|
168
192
|
- !ruby/object:Gem::Version
|
@@ -170,11 +194,26 @@ dependencies:
|
|
170
194
|
- 0
|
171
195
|
version: "0"
|
172
196
|
type: :development
|
173
|
-
version_requirements: *
|
197
|
+
version_requirements: *id011
|
198
|
+
- !ruby/object:Gem::Dependency
|
199
|
+
name: minitest
|
200
|
+
prerelease: false
|
201
|
+
requirement: &id012 !ruby/object:Gem::Requirement
|
202
|
+
none: false
|
203
|
+
requirements:
|
204
|
+
- - ~>
|
205
|
+
- !ruby/object:Gem::Version
|
206
|
+
segments:
|
207
|
+
- 2
|
208
|
+
- 0
|
209
|
+
version: "2.0"
|
210
|
+
type: :development
|
211
|
+
version_requirements: *id012
|
174
212
|
- !ruby/object:Gem::Dependency
|
175
213
|
name: hoe
|
176
214
|
prerelease: false
|
177
|
-
requirement: &
|
215
|
+
requirement: &id013 !ruby/object:Gem::Requirement
|
216
|
+
none: false
|
178
217
|
requirements:
|
179
218
|
- - ">="
|
180
219
|
- !ruby/object:Gem::Version
|
@@ -184,7 +223,7 @@ dependencies:
|
|
184
223
|
- 2
|
185
224
|
version: 2.6.2
|
186
225
|
type: :development
|
187
|
-
version_requirements: *
|
226
|
+
version_requirements: *id013
|
188
227
|
description: |-
|
189
228
|
A suite for basic and advanced statistics on Ruby. Tested on Ruby 1.8.7, 1.9.1, 1.9.2 (April, 2010) and JRuby 1.4 (Ruby 1.8.7 compatible).
|
190
229
|
|
@@ -242,6 +281,7 @@ files:
|
|
242
281
|
- examples/polychoric.rb
|
243
282
|
- examples/principal_axis.rb
|
244
283
|
- examples/reliability.rb
|
284
|
+
- examples/scatterplot.rb
|
245
285
|
- examples/t_test.rb
|
246
286
|
- examples/tetrachoric.rb
|
247
287
|
- examples/u_test.rb
|
@@ -278,11 +318,7 @@ files:
|
|
278
318
|
- lib/statsample/factor/principalaxis.rb
|
279
319
|
- lib/statsample/factor/rotation.rb
|
280
320
|
- lib/statsample/graph.rb
|
281
|
-
- lib/statsample/graph/
|
282
|
-
- lib/statsample/graph/svgboxplot.rb
|
283
|
-
- lib/statsample/graph/svggraph.rb
|
284
|
-
- lib/statsample/graph/svghistogram.rb
|
285
|
-
- lib/statsample/graph/svgscatterplot.rb
|
321
|
+
- lib/statsample/graph/scatterplot.rb
|
286
322
|
- lib/statsample/histogram.rb
|
287
323
|
- lib/statsample/matrix.rb
|
288
324
|
- lib/statsample/mle.rb
|
@@ -356,7 +392,6 @@ files:
|
|
356
392
|
- test/test_statistics.rb
|
357
393
|
- test/test_stest.rb
|
358
394
|
- test/test_stratified.rb
|
359
|
-
- test/test_svg_graph.rb
|
360
395
|
- test/test_test_f.rb
|
361
396
|
- test/test_test_t.rb
|
362
397
|
- test/test_umannwhitney.rb
|
@@ -392,6 +427,7 @@ rdoc_options:
|
|
392
427
|
require_paths:
|
393
428
|
- lib
|
394
429
|
required_ruby_version: !ruby/object:Gem::Requirement
|
430
|
+
none: false
|
395
431
|
requirements:
|
396
432
|
- - ">="
|
397
433
|
- !ruby/object:Gem::Version
|
@@ -399,6 +435,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
399
435
|
- 0
|
400
436
|
version: "0"
|
401
437
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
438
|
+
none: false
|
402
439
|
requirements:
|
403
440
|
- - ">="
|
404
441
|
- !ruby/object:Gem::Version
|
@@ -408,7 +445,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
408
445
|
requirements: []
|
409
446
|
|
410
447
|
rubyforge_project: ruby-statsample
|
411
|
-
rubygems_version: 1.3.
|
448
|
+
rubygems_version: 1.3.7
|
412
449
|
signing_key:
|
413
450
|
specification_version: 3
|
414
451
|
summary: A suite for basic and advanced statistics on Ruby
|
@@ -423,7 +460,6 @@ test_files:
|
|
423
460
|
- test/test_anovawithvectors.rb
|
424
461
|
- test/test_crosstab.rb
|
425
462
|
- test/test_distribution.rb
|
426
|
-
- test/test_svg_graph.rb
|
427
463
|
- test/test_rserve_extension.rb
|
428
464
|
- test/test_csv.rb
|
429
465
|
- test/test_matrix.rb
|