statsample 0.15.1 → 0.16.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 +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
|