statsample 2.0.1 → 2.0.2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.travis.yml +1 -6
- data/CONTRIBUTING.md +3 -19
- data/History.txt +3 -0
- data/examples/chisquare_test.rb +23 -0
- data/lib/statsample.rb +3 -2
- data/lib/statsample/test/chisquare.rb +47 -17
- data/lib/statsample/version.rb +1 -1
- data/statsample.gemspec +3 -3
- data/test/test_factor_pa.rb +1 -1
- data/test/test_stest.rb +14 -0
- metadata +53 -11
- data/.build.sh +0 -15
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: ee62b72f947f9760824885a479c92ce6dbc55127
|
4
|
+
data.tar.gz: 7cb2c7057856eee78f69be2f7c1e43671cc8007e
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 26b9d9aab40c4dc700fc4632a30cd195f5f0f0dfe6ab36a84d055f5d0e22ba7992c143ac2507069c02e3ec6e3b02b31f20ae1bf4c1f47a8846339c6d0e0b67b6
|
7
|
+
data.tar.gz: 8eeac7c1f6aca3ed959ff15cfd97407876d46dfb8d9adf13aa892831772b02209142d73a46ac1581e848cf020b86cfccb93e21bd9f450da106d08ed755d5bd1b
|
data/.travis.yml
CHANGED
@@ -1,14 +1,11 @@
|
|
1
1
|
language:
|
2
2
|
ruby
|
3
3
|
|
4
|
-
env:
|
5
|
-
- CPLUS_INCLUDE_PATH=/usr/include/atlas C_INCLUDE_PATH=/usr/include/atlas
|
6
|
-
|
7
4
|
rvm:
|
8
|
-
- '1.9.3'
|
9
5
|
- '2.0'
|
10
6
|
- '2.1'
|
11
7
|
- '2.2'
|
8
|
+
- '2.3.0'
|
12
9
|
|
13
10
|
matrix:
|
14
11
|
fast_finish:
|
@@ -18,11 +15,9 @@ script: "bundle exec rake test"
|
|
18
15
|
|
19
16
|
install:
|
20
17
|
- gem install bundler
|
21
|
-
- ./.build.sh
|
22
18
|
- bundle install
|
23
19
|
|
24
20
|
before_install:
|
25
21
|
- sudo apt-get update -qq
|
26
|
-
- sudo apt-get install -qq libatlas-base-dev
|
27
22
|
- sudo apt-get install -y libgsl0-dev r-base r-base-dev
|
28
23
|
- sudo Rscript -e "install.packages(c('Rserve','irr'),,'http://cran.us.r-project.org')"
|
data/CONTRIBUTING.md
CHANGED
@@ -2,27 +2,11 @@
|
|
2
2
|
|
3
3
|
## Installing statsample development dependencies
|
4
4
|
|
5
|
-
|
5
|
+
Keep in mind that either nmatrix OR rb-gsl are NOT NECESSARY for using statsample. They are just required for an optional speed up.
|
6
6
|
|
7
|
-
|
7
|
+
Statsample also works with [rb-gsl](https://github.com/sciruby/rb-gsl).
|
8
8
|
|
9
|
-
|
10
|
-
|
11
|
-
To install dependencies, execute the following commands:
|
12
|
-
|
13
|
-
`export CPLUS_INCLUDE_PATH=/usr/include/atlas`
|
14
|
-
`export C_INCLUDE_PATH=/usr/include/atlas`
|
15
|
-
`sudo apt-get update -qq`
|
16
|
-
`sudo apt-get install -qq libatlas-base-dev`
|
17
|
-
`sudo apt-get --purge remove liblapack-dev liblapack3 liblapack3gf`
|
18
|
-
`sudo apt-get install -y libgsl0-dev r-base r-base-dev`
|
19
|
-
`sudo Rscript -e "install.packages(c('Rserve','irr'),,'http://cran.us.r-project.org')"`
|
20
|
-
|
21
|
-
Then execute the .build.sh script to clone and install the latest nmatrix and gsl-nmatrix on your system:
|
22
|
-
|
23
|
-
`./.build.sh`
|
24
|
-
|
25
|
-
Then finally install remaining dependencies:
|
9
|
+
Install dependencies:
|
26
10
|
|
27
11
|
`bundle install`
|
28
12
|
|
data/History.txt
CHANGED
@@ -0,0 +1,23 @@
|
|
1
|
+
#!/usr/bin/ruby
|
2
|
+
$:.unshift(File.dirname(__FILE__)+'/../lib')
|
3
|
+
require 'statsample'
|
4
|
+
|
5
|
+
Statsample::Analysis.store(Statsample::Test::ChiSquare) do
|
6
|
+
# Collect the two vectors with the categorical data (raw number of occurences) into one matrix. Here
|
7
|
+
#--------------------------------------------
|
8
|
+
#| category | observation 1 | observation 2 |
|
9
|
+
#|------------------------------------------|
|
10
|
+
#| A | 100 | 20 |
|
11
|
+
#| B | 50 | 70 |
|
12
|
+
#| C | 30 | 100 |
|
13
|
+
#|------------------------------------------|
|
14
|
+
#
|
15
|
+
m=Matrix[[100, 50, 30],[20, 70, 100]]
|
16
|
+
x_2=Statsample::Test.chi_square(m)
|
17
|
+
# after the test is done, look at the p-value.
|
18
|
+
puts x_2.probability
|
19
|
+
end
|
20
|
+
|
21
|
+
if __FILE__==$0
|
22
|
+
Statsample::Analysis.run_batch
|
23
|
+
end
|
data/lib/statsample.rb
CHANGED
@@ -59,13 +59,13 @@ class Array
|
|
59
59
|
end
|
60
60
|
|
61
61
|
def mean
|
62
|
-
|
62
|
+
sum.fdiv(size)
|
63
63
|
end
|
64
64
|
|
65
65
|
# Calcualte sum of squares
|
66
66
|
def sum_of_squares(m=nil)
|
67
67
|
m ||= mean
|
68
|
-
|
68
|
+
inject(0) {|a,x| a + (x-m).square }
|
69
69
|
end
|
70
70
|
|
71
71
|
# Calculate sample variance
|
@@ -124,6 +124,7 @@ module Statsample
|
|
124
124
|
cv = "@@#{library}"
|
125
125
|
unless class_variable_defined? cv
|
126
126
|
begin
|
127
|
+
gem library.to_s # activate gem
|
127
128
|
require library.to_s
|
128
129
|
class_variable_set(cv, true)
|
129
130
|
rescue LoadError
|
@@ -1,9 +1,26 @@
|
|
1
1
|
module Statsample
|
2
2
|
module Test
|
3
3
|
module ChiSquare
|
4
|
-
|
4
|
+
module Shared
|
5
5
|
attr_reader :df
|
6
6
|
attr_reader :value
|
7
|
+
|
8
|
+
def to_f
|
9
|
+
@value
|
10
|
+
end
|
11
|
+
|
12
|
+
def chi_square
|
13
|
+
@value
|
14
|
+
end
|
15
|
+
|
16
|
+
def probability
|
17
|
+
1-Distribution::ChiSquare.cdf(@value.to_f,@df)
|
18
|
+
end
|
19
|
+
end
|
20
|
+
|
21
|
+
class WithMatrix
|
22
|
+
include Statsample::Test::ChiSquare::Shared
|
23
|
+
|
7
24
|
def initialize(observed, expected=nil)
|
8
25
|
@observed=observed
|
9
26
|
@expected=expected or calculate_expected
|
@@ -11,33 +28,46 @@ module Statsample
|
|
11
28
|
@df=(@observed.row_size-1)*(@observed.column_size-1)
|
12
29
|
@value=compute_chi
|
13
30
|
end
|
31
|
+
|
14
32
|
def calculate_expected
|
15
33
|
sum=@observed.total_sum
|
16
34
|
@expected=Matrix.rows( @observed.row_size.times.map {|i|
|
17
35
|
@observed.column_size.times.map {|j|
|
18
36
|
(@observed.row_sum[i].quo(sum) * @observed.column_sum[j].quo(sum))*sum
|
19
37
|
}
|
20
|
-
})
|
21
|
-
end
|
22
|
-
def to_f
|
23
|
-
@value
|
24
|
-
end
|
25
|
-
def chi_square
|
26
|
-
@value
|
27
|
-
end
|
28
|
-
def probability
|
29
|
-
1-Distribution::ChiSquare.cdf(@value.to_f,@df)
|
38
|
+
})
|
30
39
|
end
|
40
|
+
|
31
41
|
def compute_chi
|
32
|
-
|
33
|
-
|
34
|
-
|
42
|
+
sum=0
|
43
|
+
(0...@observed.row_size).each {|i|
|
44
|
+
(0...@observed.column_size).each {|j|
|
35
45
|
sum+=((@observed[i, j] - @expected[i,j])**2).quo(@expected[i,j])
|
36
|
-
}
|
37
46
|
}
|
38
|
-
|
47
|
+
}
|
48
|
+
sum
|
49
|
+
end
|
50
|
+
end
|
51
|
+
|
52
|
+
class WithVector
|
53
|
+
include Statsample::Test::ChiSquare::Shared
|
54
|
+
|
55
|
+
def initialize(observed, expected)
|
56
|
+
@observed = observed
|
57
|
+
@expected = expected
|
58
|
+
raise "Observed size!=expected size" if @observed.size!=@expected.size
|
59
|
+
@df = @observed.size - 1
|
60
|
+
@value = compute_chi
|
61
|
+
end
|
62
|
+
|
63
|
+
def compute_chi
|
64
|
+
sum=0
|
65
|
+
(0...@observed.size).each {|i|
|
66
|
+
sum+=((@observed[i] - @expected[i])**2).quo(@expected[i])
|
67
|
+
}
|
68
|
+
sum
|
39
69
|
end
|
40
70
|
end
|
41
71
|
end
|
42
72
|
end
|
43
|
-
end
|
73
|
+
end
|
data/lib/statsample/version.rb
CHANGED
data/statsample.gemspec
CHANGED
@@ -61,7 +61,7 @@ Gem::Specification.new do |s|
|
|
61
61
|
s.executables = `git ls-files -- bin/*`.split("\n").map { |f| File.basename(f) }
|
62
62
|
|
63
63
|
s.add_runtime_dependency 'daru', '~> 0.1'
|
64
|
-
s.add_runtime_dependency 'spreadsheet', '~> 1.
|
64
|
+
s.add_runtime_dependency 'spreadsheet', '~> 1.1'
|
65
65
|
s.add_runtime_dependency 'reportbuilder', '~> 1.4'
|
66
66
|
s.add_runtime_dependency 'minimization', '~> 0.2'
|
67
67
|
s.add_runtime_dependency 'dirty-memoize', '~> 0.0.4'
|
@@ -79,6 +79,6 @@ Gem::Specification.new do |s|
|
|
79
79
|
s.add_development_dependency 'minitest', '~> 5.7'
|
80
80
|
s.add_development_dependency 'gettext', '~> 3.1'
|
81
81
|
s.add_development_dependency 'mocha', '~> 1.1'
|
82
|
-
s.add_development_dependency 'nmatrix', '~> 0.1
|
83
|
-
s.add_development_dependency '
|
82
|
+
s.add_development_dependency 'nmatrix', '~> 0.2.1'
|
83
|
+
s.add_development_dependency 'gsl', '~> 2.1'
|
84
84
|
end
|
data/test/test_factor_pa.rb
CHANGED
@@ -53,7 +53,7 @@ class StatsampleFactorTestCase < Minitest::Test
|
|
53
53
|
|
54
54
|
def test_parallelanalysis
|
55
55
|
pa = Statsample::Factor::ParallelAnalysis.with_random_data(305, 8, iterations: 100, percentil: 95)
|
56
|
-
assert_in_delta(1.2454, pa.ds_eigenvalues[:ev_00001].mean, 0.
|
56
|
+
assert_in_delta(1.2454, pa.ds_eigenvalues[:ev_00001].mean, 0.05)
|
57
57
|
assert_in_delta(1.1542, pa.ds_eigenvalues[:ev_00002].mean, 0.01)
|
58
58
|
assert_in_delta(1.0836, pa.ds_eigenvalues[:ev_00003].mean, 0.01)
|
59
59
|
assert(pa.summary.size > 0)
|
data/test/test_stest.rb
CHANGED
@@ -23,6 +23,20 @@ class StatsampleTestTestCase < Minitest::Test
|
|
23
23
|
assert_equal(6, chi.df)
|
24
24
|
end
|
25
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
|
+
|
26
40
|
def test_u_mannwhitney
|
27
41
|
a = Daru::Vector.new([1, 2, 3, 4, 5, 6])
|
28
42
|
b = Daru::Vector.new([0, 5, 7, 9, 10, 11])
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: statsample
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.0.
|
4
|
+
version: 2.0.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Claudio Bustos
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date:
|
12
|
+
date: 2016-03-28 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: daru
|
@@ -31,14 +31,14 @@ dependencies:
|
|
31
31
|
requirements:
|
32
32
|
- - "~>"
|
33
33
|
- !ruby/object:Gem::Version
|
34
|
-
version: 1.
|
34
|
+
version: '1.1'
|
35
35
|
type: :runtime
|
36
36
|
prerelease: false
|
37
37
|
version_requirements: !ruby/object:Gem::Requirement
|
38
38
|
requirements:
|
39
39
|
- - "~>"
|
40
40
|
- !ruby/object:Gem::Version
|
41
|
-
version: 1.
|
41
|
+
version: '1.1'
|
42
42
|
- !ruby/object:Gem::Dependency
|
43
43
|
name: reportbuilder
|
44
44
|
requirement: !ruby/object:Gem::Requirement
|
@@ -269,28 +269,28 @@ dependencies:
|
|
269
269
|
requirements:
|
270
270
|
- - "~>"
|
271
271
|
- !ruby/object:Gem::Version
|
272
|
-
version: 0.1
|
272
|
+
version: 0.2.1
|
273
273
|
type: :development
|
274
274
|
prerelease: false
|
275
275
|
version_requirements: !ruby/object:Gem::Requirement
|
276
276
|
requirements:
|
277
277
|
- - "~>"
|
278
278
|
- !ruby/object:Gem::Version
|
279
|
-
version: 0.1
|
279
|
+
version: 0.2.1
|
280
280
|
- !ruby/object:Gem::Dependency
|
281
|
-
name:
|
281
|
+
name: gsl
|
282
282
|
requirement: !ruby/object:Gem::Requirement
|
283
283
|
requirements:
|
284
284
|
- - "~>"
|
285
285
|
- !ruby/object:Gem::Version
|
286
|
-
version: '1
|
286
|
+
version: '2.1'
|
287
287
|
type: :development
|
288
288
|
prerelease: false
|
289
289
|
version_requirements: !ruby/object:Gem::Requirement
|
290
290
|
requirements:
|
291
291
|
- - "~>"
|
292
292
|
- !ruby/object:Gem::Version
|
293
|
-
version: '1
|
293
|
+
version: '2.1'
|
294
294
|
description: |
|
295
295
|
A suite for basic and advanced statistics on Ruby. Tested on CRuby 1.9.3, 2.0.0
|
296
296
|
and 2.1.1. See `.travis.yml` for more information.
|
@@ -328,7 +328,6 @@ extra_rdoc_files:
|
|
328
328
|
- README.md
|
329
329
|
- references.txt
|
330
330
|
files:
|
331
|
-
- ".build.sh"
|
332
331
|
- ".gitignore"
|
333
332
|
- ".travis.yml"
|
334
333
|
- CONTRIBUTING.md
|
@@ -351,6 +350,7 @@ files:
|
|
351
350
|
- data/locale/es/LC_MESSAGES/statsample.mo
|
352
351
|
- doc_latex/manual/equations.tex
|
353
352
|
- examples/boxplot.rb
|
353
|
+
- examples/chisquare_test.rb
|
354
354
|
- examples/correlation_matrix.rb
|
355
355
|
- examples/dataset.rb
|
356
356
|
- examples/dominance_analysis.rb
|
@@ -508,4 +508,46 @@ rubygems_version: 2.4.5
|
|
508
508
|
signing_key:
|
509
509
|
specification_version: 4
|
510
510
|
summary: A suite for basic and advanced statistics on Ruby
|
511
|
-
test_files:
|
511
|
+
test_files:
|
512
|
+
- test/fixtures/bank2.dat
|
513
|
+
- test/fixtures/correlation_matrix.rb
|
514
|
+
- test/fixtures/hartman_23.matrix
|
515
|
+
- test/fixtures/stock_data.csv
|
516
|
+
- test/fixtures/tetmat_matrix.txt
|
517
|
+
- test/fixtures/tetmat_test.txt
|
518
|
+
- test/helpers_tests.rb
|
519
|
+
- test/test_analysis.rb
|
520
|
+
- test/test_anova_contrast.rb
|
521
|
+
- test/test_anovaoneway.rb
|
522
|
+
- test/test_anovatwoway.rb
|
523
|
+
- test/test_anovatwowaywithdataset.rb
|
524
|
+
- test/test_anovawithvectors.rb
|
525
|
+
- test/test_awesome_print_bug.rb
|
526
|
+
- test/test_bartlettsphericity.rb
|
527
|
+
- test/test_bivariate.rb
|
528
|
+
- test/test_codification.rb
|
529
|
+
- test/test_crosstab.rb
|
530
|
+
- test/test_dominance_analysis.rb
|
531
|
+
- test/test_factor.rb
|
532
|
+
- test/test_factor_map.rb
|
533
|
+
- test/test_factor_pa.rb
|
534
|
+
- test/test_ggobi.rb
|
535
|
+
- test/test_gsl.rb
|
536
|
+
- test/test_histogram.rb
|
537
|
+
- test/test_matrix.rb
|
538
|
+
- test/test_multiset.rb
|
539
|
+
- test/test_regression.rb
|
540
|
+
- test/test_reliability.rb
|
541
|
+
- test/test_reliability_icc.rb
|
542
|
+
- test/test_reliability_skillscale.rb
|
543
|
+
- test/test_resample.rb
|
544
|
+
- test/test_srs.rb
|
545
|
+
- test/test_statistics.rb
|
546
|
+
- test/test_stest.rb
|
547
|
+
- test/test_stratified.rb
|
548
|
+
- test/test_test_f.rb
|
549
|
+
- test/test_test_kolmogorovsmirnov.rb
|
550
|
+
- test/test_test_t.rb
|
551
|
+
- test/test_umannwhitney.rb
|
552
|
+
- test/test_vector.rb
|
553
|
+
- test/test_wilcoxonsignedrank.rb
|
data/.build.sh
DELETED
@@ -1,15 +0,0 @@
|
|
1
|
-
#!/bin/bash
|
2
|
-
|
3
|
-
git clone https://github.com/SciRuby/nmatrix.git
|
4
|
-
cd nmatrix
|
5
|
-
gem build nmatrix.gemspec
|
6
|
-
gem install nmatrix-0.1.0.gem
|
7
|
-
cd ..
|
8
|
-
rm -rf nmatrix
|
9
|
-
git clone https://github.com/v0dro/gsl-nmatrix
|
10
|
-
cd gsl-nmatrix
|
11
|
-
gem build gsl-nmatrix.gemspec
|
12
|
-
gem install gsl-nmatrix-1.17.gem
|
13
|
-
cd ..
|
14
|
-
rm -rf gsl-nmatrix
|
15
|
-
|