statistics2 0.54

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.
@@ -0,0 +1,8 @@
1
+ $:.unshift File.join(File.dirname(__FILE__), '..')
2
+
3
+ # Indicate that we should skip loading of the C extension.
4
+ module Statistics2
5
+ NO_EXT = true
6
+ end
7
+
8
+ require 'statistics2'
@@ -0,0 +1,3 @@
1
+ module Statistics2
2
+ VERSION = 0.54
3
+ end
@@ -0,0 +1,35 @@
1
+ # -*- encoding: utf-8 -*-
2
+
3
+ Gem::Specification.new do |s|
4
+ s.name = %q{statistics2}
5
+ s.version = "0.54"
6
+
7
+ s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
8
+ s.authors = ["Brendan Ribera", "Shin-ichiro Hara"]
9
+ s.date = %q{2010-01-26}
10
+ s.description = %q{Statistics2 is a module that provides normal, Chi-square, t- and F- probability distributions for Ruby. It is a fork/continuation of Shin-ichiro Hara's original code. It can provides a native, compiled extension and a pure Ruby implementation.}
11
+ s.email = ["brendan.ribera@gmail.com", "sinara@blade.nagaokaut.ac.jp"]
12
+ s.extensions = ["ext/extconf.rb"]
13
+ s.extra_rdoc_files = ["Manifest.txt"]
14
+ s.files = ["History.rdoc", "Manifest.txt", "README.rdoc", "Rakefile", "examples/mklist.rb", "examples/show.rb", "ext/extconf.rb", "ext/statistics2.c", "lib/statistics2.rb", "lib/statistics2/no_ext.rb", "lib/statistics2/version.rb", "statistics2.gemspec", "test/sample_tbl.rb", "test/test_ext.rb", "test/test_inv.rb"]
15
+ s.homepage = %q{http://github.com/abscondment/statistics2}
16
+ s.rdoc_options = ["--main", "README.rdoc"]
17
+ s.require_paths = ["lib", "ext"]
18
+ s.rubyforge_project = %q{statistics2}
19
+ s.rubygems_version = %q{1.3.5}
20
+ s.summary = %q{Statistical Distributions for Ruby. Based on Shin-ichiro Hara's original library, updated for Ruby 1.9}
21
+ s.test_files = ["test/test_ext.rb", "test/test_inv.rb"]
22
+
23
+ if s.respond_to? :specification_version then
24
+ current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
25
+ s.specification_version = 3
26
+
27
+ if Gem::Version.new(Gem::RubyGemsVersion) >= Gem::Version.new('1.2.0') then
28
+ s.add_development_dependency(%q<hoe>, [">= 2.4.0"])
29
+ else
30
+ s.add_dependency(%q<hoe>, [">= 2.4.0"])
31
+ end
32
+ else
33
+ s.add_dependency(%q<hoe>, [">= 2.4.0"])
34
+ end
35
+ end
@@ -0,0 +1,134 @@
1
+ #!/usr/bin/env ruby
2
+ $test ||= false
3
+ if $test
4
+ def nop(*a); ""; end
5
+ alias _sprintf nop
6
+ alias _printf nop
7
+ alias _puts nop
8
+ else
9
+ alias _sprintf sprintf
10
+ alias _printf printf
11
+ alias _puts puts
12
+ end
13
+
14
+ def norm_line(x, n)
15
+ s = sprintf("%1.1f|", x)
16
+ (0.00).step(0.09, 0.01) do |y|
17
+ s << _sprintf(" %1.#{n}f", yield(x + y))
18
+ end
19
+ s
20
+ end
21
+
22
+ def norm_tbl(s, e, ln = nil, tn = nil, &b)
23
+ n = 4
24
+ unless ln
25
+ _printf(" " + (" "*(n-1) + "%1.2f")*10 + "\n", * (0..9).map {|x| x*0.01})
26
+ end
27
+ i = 0
28
+ (s.to_f).step(e.to_f, 0.1) do |x|
29
+ next if ln && ln.to_i != i+1
30
+ _puts norm_line(x, n, &b)
31
+ i += 1
32
+ end
33
+ end
34
+
35
+ def chi2_tbl(ln = nil, tn = nil)
36
+ pers = [0.995, 0.99, 0.975, 0.95, 0.05, 0.025, 0.01, 0.005]
37
+ arbi = (1..30).to_a + [40, 60, 80, 100]
38
+ form = " %7.5f"
39
+ unless ln
40
+ _printf(" "); pers.each do |a|; _printf(form, a); end; _puts
41
+ end
42
+ arbi.each_with_index do |n, i|
43
+ next if ln && ln.to_i != i+1
44
+ _printf("%4d|", n) unless tn
45
+ pers.each_with_index do |a, j|
46
+ next if tn && tn.to_i != j+1
47
+ form = case n
48
+ when 1; a >= 0.95 ? " %.4e" : " %6.3f"
49
+ when 2..5; a >= 0.95 ? " %7.5f" : " %7.3f"
50
+ when 6..24; " %7.3f"
51
+ else; " %7.2f" # 26..100
52
+ end
53
+ _printf(form, yield(n, a))
54
+ end
55
+ _puts
56
+ end
57
+ end
58
+
59
+ def t_tbl(ln = nil, tn = nil)
60
+ pers = [0.5, 0.4, 0.3, 0.2, 0.1, 0.05, 0.02, 0.01, 0.001]
61
+ arbi = (1..30).to_a + [40, 60, 120]#, 9999]
62
+ form = " %7.3f"
63
+ unless ln
64
+ _printf(" "); pers.each do |a|; _printf(form, a); end; _puts
65
+ end
66
+ arbi.each_with_index do |n, i|
67
+ next if ln && ln.to_i != i+1
68
+ _printf("%4d|", n) unless tn
69
+ pers.each_with_index do |a, j|
70
+ next if tn && tn.to_i != j+1
71
+ _printf(form, yield(n, a))
72
+ end
73
+ _puts
74
+ end
75
+ end
76
+
77
+ def f_tbl(a, k1 = nil, k2 = nil)
78
+ arbi1 = (1..10).to_a + [12, 15, 20, 24, 30, 40, 60, 120]#, 9999]
79
+ arbi2 = (1..30).to_a + [40, 60, 120]#, 9999]
80
+ unless k1
81
+ _printf(" "); arbi1.each do |n1|; _printf(" %4d", n1); end; _puts
82
+ end
83
+ arbi2.each do |n2|
84
+ form = n2 == 1 ? " %4d" : n2 == 2 ? " %4.1f" : " %4.2f"
85
+ next if k2 && k2.to_i != n2
86
+ _printf("%4d|", n2) unless k2
87
+ arbi1.each do |n1|
88
+ next if k1 && k1.to_i != n1
89
+ _printf(form, yield(n1, n2, a.to_f))
90
+ end
91
+ _puts
92
+ end
93
+ end
94
+
95
+ def show_tbl(mod, dist, *opts)
96
+ case dist
97
+ when nil, "norm"
98
+ norm_tbl(0.0, 3.1, *opts) do |x|
99
+ mod.normal___x(x)
100
+ end
101
+ when "chi", "chi2"
102
+ chi2_tbl(*opts) do |n, x|
103
+ mod.pchi2_x(n, x)
104
+ end
105
+ when "t"
106
+ t_tbl(*opts) do |n, x|
107
+ mod.ptx__x(n, x)
108
+ end
109
+ when "f"
110
+ f_tbl(*opts) do |n1, n2, a|
111
+ mod.pf_x(n1, n2, a)
112
+ end
113
+ end
114
+ end
115
+
116
+
117
+ if $0 == __FILE__
118
+ if ARGV.empty?
119
+ puts "-- This script makes tables of distributions"
120
+ puts "Example:"
121
+ puts " #$0 norm"
122
+ puts " #$0 chi2"
123
+ puts " #$0 t"
124
+ puts " #$0 f 0.01"
125
+ exit
126
+ end
127
+
128
+ $:.unshift File.dirname(__FILE__)
129
+ $:.unshift File.join(File.dirname(__FILE__), '..', 'lib')
130
+ $:.unshift File.join(File.dirname(__FILE__), '..', 'ext')
131
+
132
+ require 'statistics2'
133
+ show_tbl(Statistics2, *ARGV)
134
+ end
@@ -0,0 +1,53 @@
1
+ $:.unshift File.dirname(__FILE__)
2
+ $:.unshift File.join(File.dirname(__FILE__), '..', 'ext')
3
+ $:.unshift File.join(File.dirname(__FILE__), '..', 'lib')
4
+
5
+ $test = true
6
+
7
+ require 'test/unit' unless defined?(Hoe)
8
+ require 'sample_tbl'
9
+
10
+ require 'statistics2.so'
11
+ $mod = Statistics2
12
+
13
+
14
+ # Request extension to be skipped.
15
+ module Statistics20
16
+ NO_EXT = true
17
+ end
18
+ eval(File.read('lib/statistics2.rb').gsub(/Statistics2/, 'Statistics20'))
19
+ $mod0 = Statistics20
20
+
21
+ class T_Statistics2 < Test::Unit::TestCase
22
+
23
+ def test_normal
24
+ norm_tbl(0.0, 3.1) do |x|
25
+ a, b = $mod.normal___x(x), $mod0.normal___x(x)
26
+ assert_in_delta a, b, 0.000001
27
+ end
28
+ end
29
+
30
+ def test_chi
31
+ chi2_tbl() do |n, x|
32
+ a, b = $mod.pchi2_x(n, x), $mod0.pchi2_x(n, x)
33
+ assert_in_delta a/b, 1.0, 0.01
34
+ end
35
+ end
36
+
37
+ def test_t
38
+ t_tbl() do |n, x|
39
+ a, b = $mod.ptx__x(n, x), $mod.ptx__x(n, x)
40
+ assert_in_delta a, b, 0.001
41
+ end
42
+ end
43
+
44
+ def test_f
45
+ [0.01, 0.025, 0.05].each do |opt|
46
+ f_tbl(opt) do |n1, n2, y|
47
+ a, b = $mod.pf_x(n1, n2, y), $mod0.pf_x(n1, n2, y)
48
+ assert_in_delta a/b, 1.0, 0.01
49
+ end
50
+ end
51
+ end
52
+
53
+ end
@@ -0,0 +1,57 @@
1
+ $:.unshift File.dirname(__FILE__)
2
+ $:.unshift File.join(File.dirname(__FILE__), '..', 'ext')
3
+ $:.unshift File.join(File.dirname(__FILE__), '..', 'lib')
4
+
5
+ $test = true
6
+
7
+ require 'test/unit' unless defined?(Hoe)
8
+ require 'sample_tbl'
9
+ require 'lib/statistics2'
10
+
11
+ class T_Statistics2 < Test::Unit::TestCase
12
+ $mod = Statistics2
13
+
14
+ def inv(s); "p" + s; end
15
+
16
+ def test_inv_normal
17
+ delta = 1.0e-6
18
+ meth = "normal___x"
19
+ norm_tbl(0.00001, 4.0) do |x|
20
+ pr = $mod.send(meth, x)
21
+ x0 = $mod.send(inv(meth), pr)
22
+ assert_in_delta x0/x, 1.0, delta
23
+ end
24
+ end
25
+
26
+ def test_inv_chi
27
+ delta = 1.0e-4
28
+ meth = "chi2_x"
29
+ chi2_tbl() do |n, pr|
30
+ x = $mod.send(inv(meth), n, pr)
31
+ pr0 = $mod.send(meth, n, x)
32
+ assert_in_delta pr0/pr, 1.0, delta
33
+ end
34
+ end
35
+
36
+ def test_inv_t
37
+ delta = 1.0e-3
38
+ meth = "tx__x"
39
+ t_tbl() do |n, pr|
40
+ x = $mod.send(inv(meth), n, pr)
41
+ pr0 = $mod.send(meth, n, x)
42
+ assert_in_delta pr0/pr, 1.0, delta
43
+ end
44
+ end
45
+
46
+ def test_inv_f
47
+ delta = 1.0e-3
48
+ meth = "f_x"
49
+ [0.01, 0.025, 0.05].each do |opt|
50
+ f_tbl(opt) do |n1, n2, pr|
51
+ x = $mod.send(inv(meth), n1, n2, pr)
52
+ pr0 = $mod.send(meth, n1, n2, x)
53
+ assert_in_delta pr0/pr, 1.0, delta
54
+ end
55
+ end
56
+ end
57
+ end
metadata ADDED
@@ -0,0 +1,84 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: statistics2
3
+ version: !ruby/object:Gem::Version
4
+ version: "0.54"
5
+ platform: ruby
6
+ authors:
7
+ - Brendan Ribera
8
+ - Shin-ichiro Hara
9
+ autorequire:
10
+ bindir: bin
11
+ cert_chain: []
12
+
13
+ date: 2010-01-26 00:00:00 -08:00
14
+ default_executable:
15
+ dependencies:
16
+ - !ruby/object:Gem::Dependency
17
+ name: hoe
18
+ type: :development
19
+ version_requirement:
20
+ version_requirements: !ruby/object:Gem::Requirement
21
+ requirements:
22
+ - - ">="
23
+ - !ruby/object:Gem::Version
24
+ version: 2.4.0
25
+ version:
26
+ description: Statistics2 is a module that provides normal, Chi-square, t- and F- probability distributions for Ruby. It is a fork/continuation of Shin-ichiro Hara's original code. It provides a native, compiled extension and a pure Ruby implementation.
27
+ email:
28
+ - brendan.ribera@gmail.com
29
+ - sinara@blade.nagaokaut.ac.jp
30
+ executables: []
31
+
32
+ extensions:
33
+ - ext/extconf.rb
34
+ extra_rdoc_files:
35
+ - Manifest.txt
36
+ files:
37
+ - History.rdoc
38
+ - Manifest.txt
39
+ - README.rdoc
40
+ - Rakefile
41
+ - examples/mklist.rb
42
+ - examples/show.rb
43
+ - ext/extconf.rb
44
+ - ext/statistics2.c
45
+ - lib/statistics2.rb
46
+ - lib/statistics2/no_ext.rb
47
+ - lib/statistics2/version.rb
48
+ - statistics2.gemspec
49
+ - test/sample_tbl.rb
50
+ - test/test_ext.rb
51
+ - test/test_inv.rb
52
+ has_rdoc: true
53
+ homepage: http://github.com/abscondment/statistics2
54
+ licenses: []
55
+
56
+ post_install_message:
57
+ rdoc_options:
58
+ - --main
59
+ - README.rdoc
60
+ require_paths:
61
+ - lib
62
+ - ext
63
+ required_ruby_version: !ruby/object:Gem::Requirement
64
+ requirements:
65
+ - - ">="
66
+ - !ruby/object:Gem::Version
67
+ version: "0"
68
+ version:
69
+ required_rubygems_version: !ruby/object:Gem::Requirement
70
+ requirements:
71
+ - - ">="
72
+ - !ruby/object:Gem::Version
73
+ version: "0"
74
+ version:
75
+ requirements: []
76
+
77
+ rubyforge_project: statistics2
78
+ rubygems_version: 1.3.5
79
+ signing_key:
80
+ specification_version: 3
81
+ summary: Statistical Distributions for Ruby. Based on Shin-ichiro Hara's original library, updated for Ruby 1.9
82
+ test_files:
83
+ - test/test_ext.rb
84
+ - test/test_inv.rb