ministat 1.2.1 → 1.2.5
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/History.rdoc +21 -0
- data/Manifest.txt +9 -0
- data/{README → README.rdoc} +15 -3
- data/Rakefile +2 -1
- data/lib/ministat.rb +23 -20
- data/test/test_ministat.rb +1 -3
- metadata +25 -16
- data/History.txt +0 -5
- data/pkg/ministat-1.2.0.gem +0 -0
data/History.rdoc
ADDED
@@ -0,0 +1,21 @@
|
|
1
|
+
== 1.2.4 / 2010-09-18
|
2
|
+
|
3
|
+
* Version bump for packaging
|
4
|
+
|
5
|
+
== 1.2.2 / 2010-09-18
|
6
|
+
|
7
|
+
* Returned to Hoe's sweet embrace
|
8
|
+
* Minor median bug fix
|
9
|
+
* Cleaned up packaging stuff
|
10
|
+
* Added a little to the Synopsis
|
11
|
+
|
12
|
+
== 1.1.*
|
13
|
+
|
14
|
+
* Moved most everything into MiniStat::Data
|
15
|
+
* Added geometric and harmonic means
|
16
|
+
* Briefly left Hoe's sweet embrace while the author suffered confusion regarding rubygems.org
|
17
|
+
|
18
|
+
== 1.0.0 / 2007-11-11
|
19
|
+
|
20
|
+
* Birthday!
|
21
|
+
|
data/Manifest.txt
ADDED
data/{README → README.rdoc}
RENAMED
@@ -1,5 +1,6 @@
|
|
1
|
-
ministat
|
2
|
-
|
1
|
+
= ministat
|
2
|
+
|
3
|
+
* http://github.com/deanh/MiniStat
|
3
4
|
|
4
5
|
== DESCRIPTION:
|
5
6
|
|
@@ -22,11 +23,22 @@ at least to get you thinking about what it may take to do so.
|
|
22
23
|
require 'ministat'
|
23
24
|
|
24
25
|
data = [1,2,3,4,5,6,7,7,6,5,4,4]
|
26
|
+
d = MiniStat::Data.new(data)
|
27
|
+
|
28
|
+
d.median # => 4.5
|
29
|
+
d.mean # => 4.5
|
30
|
+
d.mode # => 4.0
|
31
|
+
d.q1 # => 3.5
|
32
|
+
d.outliers # => []
|
33
|
+
d.std_dev # => 1.80277563773199
|
34
|
+
# and so on...
|
35
|
+
|
25
36
|
puts MiniStat::Data.new(data).to_s
|
37
|
+
# this outputs most everything
|
26
38
|
|
27
39
|
== REQUIREMENTS:
|
28
40
|
|
29
|
-
|
41
|
+
Hoe is your friend.
|
30
42
|
|
31
43
|
== INSTALL:
|
32
44
|
|
data/Rakefile
CHANGED
@@ -7,9 +7,10 @@ spec = Gem::Specification.new do |p|
|
|
7
7
|
p.author = 'Dean Hudson'
|
8
8
|
p.email = 'dean@ero.com'
|
9
9
|
p.summary = 'A small and simple library to generate statistical info on single-variable datasets.'
|
10
|
-
p.description = File.read(File.join(File.dirname(__FILE__), 'README'))
|
10
|
+
p.description = File.read(File.join(File.dirname(__FILE__), 'README.rdoc'))
|
11
11
|
p.requirements = ['An eye for data and a strong will to live']
|
12
12
|
p.has_rdoc = true
|
13
13
|
p.files = Dir['**/**']
|
14
14
|
end
|
15
15
|
Rake::GemPackageTask.new(spec).define
|
16
|
+
|
data/lib/ministat.rb
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
require 'mathn'
|
2
2
|
|
3
3
|
module MiniStat
|
4
|
-
VERSION = '1.2.
|
4
|
+
VERSION = '1.2.5'
|
5
5
|
class Data
|
6
6
|
attr_reader :data
|
7
7
|
|
@@ -26,10 +26,12 @@ module MiniStat
|
|
26
26
|
@sort = true
|
27
27
|
end
|
28
28
|
if data.size % 2 == 0
|
29
|
-
return (data[data.size / 2 - 1] + data[(data.size / 2)]) / 2
|
29
|
+
return (data[data.size / 2.0 - 1] + data[(data.size / 2.0)]) / 2
|
30
30
|
else
|
31
|
-
split = (data.size
|
32
|
-
|
31
|
+
# split = (data.size - 1) / 2
|
32
|
+
# this was just weird. i need to look this up
|
33
|
+
# return (data[split - 1.5] + data[split - 0.5]) / 2
|
34
|
+
return data[(data.size - 1)/2]
|
33
35
|
end
|
34
36
|
end
|
35
37
|
|
@@ -82,7 +84,7 @@ module MiniStat
|
|
82
84
|
@hist[val] ||= 0
|
83
85
|
@hist[val] += 1
|
84
86
|
@max_freq, @mode = @hist[val], val if @hist[val] > @max_freq
|
85
|
-
|
87
|
+
end
|
86
88
|
end
|
87
89
|
@mode
|
88
90
|
end
|
@@ -115,21 +117,22 @@ module MiniStat
|
|
115
117
|
end
|
116
118
|
|
117
119
|
# Put the histogram into a string if we have it
|
118
|
-
|
119
|
-
|
120
|
-
|
121
|
-
|
122
|
-
|
123
|
-
|
124
|
-
|
125
|
-
|
126
|
-
|
127
|
-
|
128
|
-
|
129
|
-
|
130
|
-
|
131
|
-
|
132
|
-
|
120
|
+
def hist
|
121
|
+
if defined? @hist
|
122
|
+
# this is a textbook example of how to lie with statistics...
|
123
|
+
# TODO: iterate over a range rather than @hist.keys--a histogram
|
124
|
+
# produced out of the keys won't properly represent flat spots
|
125
|
+
# with no data. or something like that. do as i say, not as i do.
|
126
|
+
#
|
127
|
+
# this code borrows liberally from the ruby cookbook, recipe 5.12
|
128
|
+
# ORA, 2006
|
129
|
+
pairs = @hist.keys.collect { |x| [x.to_s, @hist[x]] }.sort
|
130
|
+
largest_key_size = pairs.max {|x,y| x[0].size <=> y[0].size }[0].size
|
131
|
+
pairs.inject("") do |s,kv|
|
132
|
+
s<< "#{kv[0].ljust(largest_key_size)} |#{char*kv[1]}\n"
|
133
|
+
end
|
134
|
+
end
|
135
|
+
end
|
133
136
|
|
134
137
|
# Return a string with statisical info about a dataset.
|
135
138
|
def to_s
|
data/test/test_ministat.rb
CHANGED
@@ -4,8 +4,6 @@
|
|
4
4
|
|
5
5
|
require 'test/unit' unless defined? $ZENTEST and $ZENTEST
|
6
6
|
require 'ministat'
|
7
|
-
require 'rubygems'
|
8
|
-
require 'ruby-debug'
|
9
7
|
|
10
8
|
class TestMiniStat < Test::Unit::TestCase
|
11
9
|
def setup
|
@@ -59,7 +57,7 @@ class TestMiniStat < Test::Unit::TestCase
|
|
59
57
|
def test_q1
|
60
58
|
assert(@ms1.q1 - 17 < @error)
|
61
59
|
assert(@ms3.q1 - 1.05 < @error)
|
62
|
-
assert(@ms4.q1 - -2.
|
60
|
+
assert(@ms4.q1 - -2.4 < @error)
|
63
61
|
end
|
64
62
|
|
65
63
|
def test_q3
|
metadata
CHANGED
@@ -1,13 +1,12 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: ministat
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash: 29
|
5
4
|
prerelease: false
|
6
5
|
segments:
|
7
6
|
- 1
|
8
7
|
- 2
|
9
|
-
-
|
10
|
-
version: 1.2.
|
8
|
+
- 5
|
9
|
+
version: 1.2.5
|
11
10
|
platform: ruby
|
12
11
|
authors:
|
13
12
|
- Dean Hudson
|
@@ -15,13 +14,14 @@ autorequire:
|
|
15
14
|
bindir: bin
|
16
15
|
cert_chain: []
|
17
16
|
|
18
|
-
date: 2010-
|
17
|
+
date: 2010-11-13 00:00:00 -08:00
|
19
18
|
default_executable:
|
20
19
|
dependencies: []
|
21
20
|
|
22
21
|
description: |
|
23
|
-
ministat
|
24
|
-
|
22
|
+
= ministat
|
23
|
+
|
24
|
+
* http://github.com/deanh/MiniStat
|
25
25
|
|
26
26
|
== DESCRIPTION:
|
27
27
|
|
@@ -44,11 +44,22 @@ description: |
|
|
44
44
|
require 'ministat'
|
45
45
|
|
46
46
|
data = [1,2,3,4,5,6,7,7,6,5,4,4]
|
47
|
+
d = MiniStat::Data.new(data)
|
48
|
+
|
49
|
+
d.median # => 4.5
|
50
|
+
d.mean # => 4.5
|
51
|
+
d.mode # => 4.0
|
52
|
+
d.q1 # => 3.5
|
53
|
+
d.outliers # => []
|
54
|
+
d.std_dev # => 1.80277563773199
|
55
|
+
# and so on...
|
56
|
+
|
47
57
|
puts MiniStat::Data.new(data).to_s
|
58
|
+
# this outputs most everything
|
48
59
|
|
49
60
|
== REQUIREMENTS:
|
50
61
|
|
51
|
-
|
62
|
+
Hoe is your friend.
|
52
63
|
|
53
64
|
== INSTALL:
|
54
65
|
|
@@ -87,15 +98,15 @@ extensions: []
|
|
87
98
|
extra_rdoc_files: []
|
88
99
|
|
89
100
|
files:
|
90
|
-
-
|
91
|
-
-
|
101
|
+
- bin/ministat
|
102
|
+
- History.rdoc
|
92
103
|
- lib/ministat.rb
|
93
|
-
-
|
94
|
-
- test/data/2.dat
|
95
|
-
- test/data/1.dat
|
104
|
+
- Manifest.txt
|
96
105
|
- Rakefile
|
97
|
-
- README
|
98
|
-
-
|
106
|
+
- README.rdoc
|
107
|
+
- test/data/1.dat
|
108
|
+
- test/data/2.dat
|
109
|
+
- test/test_ministat.rb
|
99
110
|
has_rdoc: true
|
100
111
|
homepage:
|
101
112
|
licenses: []
|
@@ -110,7 +121,6 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
110
121
|
requirements:
|
111
122
|
- - ">="
|
112
123
|
- !ruby/object:Gem::Version
|
113
|
-
hash: 3
|
114
124
|
segments:
|
115
125
|
- 0
|
116
126
|
version: "0"
|
@@ -119,7 +129,6 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
119
129
|
requirements:
|
120
130
|
- - ">="
|
121
131
|
- !ruby/object:Gem::Version
|
122
|
-
hash: 3
|
123
132
|
segments:
|
124
133
|
- 0
|
125
134
|
version: "0"
|
data/History.txt
DELETED
data/pkg/ministat-1.2.0.gem
DELETED
Binary file
|