rstat 0.0.2 → 0.0.3

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/.rvmrc ADDED
@@ -0,0 +1,80 @@
1
+ #!/usr/bin/env bash
2
+
3
+ # This is an RVM Project .rvmrc file, used to automatically load the ruby
4
+ # development environment upon cd'ing into the directory
5
+
6
+ # First we specify our desired <ruby>[@<gemset>], the @gemset name is optional.
7
+ environment_id="ruby-1.9.3-p194@rstat"
8
+
9
+ #
10
+ # Uncomment the following lines if you want to verify rvm version per project
11
+ #
12
+ # rvmrc_rvm_version="1.10.2" # 1.10.1 seams as a safe start
13
+ # eval "$(echo ${rvm_version}.${rvmrc_rvm_version} | awk -F. '{print "[[ "$1*65536+$2*256+$3" -ge "$4*65536+$5*256+$6" ]]"}' )" || {
14
+ # echo "This .rvmrc file requires at least RVM ${rvmrc_rvm_version}, aborting loading."
15
+ # return 1
16
+ # }
17
+ #
18
+
19
+ #
20
+ # Uncomment following line if you want options to be set only for given project.
21
+ #
22
+ # PROJECT_JRUBY_OPTS=( --1.9 )
23
+ #
24
+ # The variable PROJECT_JRUBY_OPTS requires the following to be run in shell:
25
+ #
26
+ # chmod +x ${rvm_path}/hooks/after_use_jruby_opts
27
+ #
28
+
29
+ #
30
+ # First we attempt to load the desired environment directly from the environment
31
+ # file. This is very fast and efficient compared to running through the entire
32
+ # CLI and selector. If you want feedback on which environment was used then
33
+ # insert the word 'use' after --create as this triggers verbose mode.
34
+ #
35
+ if [[ -d "${rvm_path:-$HOME/.rvm}/environments" \
36
+ && -s "${rvm_path:-$HOME/.rvm}/environments/$environment_id" ]]
37
+ then
38
+ \. "${rvm_path:-$HOME/.rvm}/environments/$environment_id"
39
+
40
+ if [[ -s "${rvm_path:-$HOME/.rvm}/hooks/after_use" ]]
41
+ then
42
+ . "${rvm_path:-$HOME/.rvm}/hooks/after_use"
43
+ fi
44
+ else
45
+ # If the environment file has not yet been created, use the RVM CLI to select.
46
+ if ! rvm --create "$environment_id"
47
+ then
48
+ echo "Failed to create RVM environment '${environment_id}'."
49
+ return 1
50
+ fi
51
+ fi
52
+
53
+ #
54
+ # If you use an RVM gemset file to install a list of gems (*.gems), you can have
55
+ # it be automatically loaded. Uncomment the following and adjust the filename if
56
+ # necessary.
57
+ #
58
+ # filename=".gems"
59
+ # if [[ -s "$filename" ]]
60
+ # then
61
+ # rvm gemset import "$filename" | grep -v already | grep -v listed | grep -v complete | sed '/^$/d'
62
+ # fi
63
+
64
+ # If you use bundler, this might be useful to you:
65
+ # if [[ -s Gemfile ]] && ! command -v bundle >/dev/null
66
+ # then
67
+ # printf "%b" "The rubygem 'bundler' is not installed. Installing it now.\n"
68
+ # gem install bundler
69
+ # fi
70
+ # if [[ -s Gemfile ]] && command -v bundle
71
+ # then
72
+ # bundle install
73
+ # fi
74
+
75
+ if [[ $- == *i* ]] # check for interactive shells
76
+ then
77
+ echo "Using: $(tput setaf 2)$GEM_HOME$(tput sgr0)" # show the user the ruby and gemset they are using in green
78
+ else
79
+ echo "Using: $GEM_HOME" # don't use colors in interactive shells
80
+ fi
@@ -1,3 +1,13 @@
1
+ ## v0.0.3
2
+
3
+ * Better mode algorithm.
4
+ * Fixed geometric mean test to test for realness instead of NaN because Ruby 1.9+ returns complex number instead of NaN when there's negative numbers in the set.
5
+ * Made array.rb load all files automatically instead of listing them manually.
6
+ * Added sum.
7
+ * Added product.
8
+ * Added range.
9
+ * Added coefficient of variation.
10
+
1
11
  ## v0.0.2
2
12
 
3
13
  * Added standard deviation.
@@ -1,4 +1,3 @@
1
- require "rstat/core_ext/array/mean"
2
- require "rstat/core_ext/array/median"
3
- require "rstat/core_ext/array/mode"
4
- require "rstat/core_ext/array/standard_deviation"
1
+ Dir["#{File.dirname(__FILE__)}/array/*.rb"].sort.each do |path|
2
+ require "rstat/core_ext/array/#{File.basename(path, ".rb")}"
3
+ end
@@ -1,6 +1,6 @@
1
1
  class Array
2
2
  def mean
3
- self.inject(:+).to_f / self.length
3
+ self.sum.to_f / self.length
4
4
  end
5
5
 
6
6
  def arithmetric_mean
@@ -8,7 +8,7 @@ class Array
8
8
  end
9
9
 
10
10
  def geometric_mean
11
- self.inject(:*).to_f ** (1.0 / self.length)
11
+ self.product.to_f ** (1.0 / self.length)
12
12
  end
13
13
 
14
14
  def harmonic_mean
@@ -4,27 +4,12 @@ class Array
4
4
  return self
5
5
  end
6
6
 
7
- values = Hash[*self.collect { |x| [x, 0] }.flatten]
7
+ seen = Hash.new(0)
8
8
 
9
- self.map{ |x| values[x] += 1 }
9
+ self.each{ |value| seen[value] += 1 }
10
10
 
11
- q = values.sort_by{ |key, value| value }.reverse
11
+ max = seen.values.max
12
12
 
13
- if q[0][1] == q[1][1]
14
- modes = []
15
-
16
- q.each_cons(2) do |pair|
17
- if !pair[1].nil? and pair[0][1] == pair[1][1]
18
- modes << pair[0][0]
19
- modes << pair[1][0]
20
- else
21
- break
22
- end
23
- end
24
-
25
- modes.uniq.sort
26
- else
27
- [q[0][0]]
28
- end
13
+ seen.find_all{ |key, value| value == max }.map{ |key, value| key }
29
14
  end
30
15
  end
@@ -0,0 +1,5 @@
1
+ class Array
2
+ def product
3
+ self.inject(:*)
4
+ end
5
+ end
@@ -0,0 +1,5 @@
1
+ class Array
2
+ def range
3
+ self.max - self.min
4
+ end
5
+ end
@@ -12,4 +12,8 @@ class Array
12
12
  def std_dev
13
13
  self.standard_deviation
14
14
  end
15
+
16
+ def coefficient_of_variation
17
+ self.standard_deviation / self.mean
18
+ end
15
19
  end
@@ -0,0 +1,5 @@
1
+ class Array
2
+ def sum
3
+ self.inject(:+)
4
+ end
5
+ end
@@ -1,3 +1,3 @@
1
1
  module Rstat
2
- VERSION = "0.0.2"
2
+ VERSION = "0.0.3"
3
3
  end
@@ -2,6 +2,24 @@
2
2
  require 'spec_helper'
3
3
 
4
4
  describe Rstat do
5
+ describe ".sum" do
6
+ it "calculates the sum of an array" do
7
+ [1, 2, 3, 4, 5, 6].sum.should be(21)
8
+ end
9
+ end
10
+
11
+ describe ".product" do
12
+ it "calculates the product of an array" do
13
+ [1, 2, 3, 4, 5, 6].product.should be(720)
14
+ end
15
+ end
16
+
17
+ describe ".range" do
18
+ it "finds the range of an array" do
19
+ [0, 34, 656, 400, 1000].range.should be(1000)
20
+ end
21
+ end
22
+
5
23
  describe ".mean" do
6
24
  it "calculates the mean of an array" do
7
25
  [1, 2, 3, 4, 5].mean.should be_within(0.0001).of(3.0000)
@@ -18,7 +36,7 @@ describe Rstat do
18
36
  end
19
37
 
20
38
  it "calculates the geometric mean of an array with a negative element" do
21
- [-1, 2, 3, 4, 5].geometric_mean.nan?.should be_true
39
+ [-1, 2, 3, 4, 5].geometric_mean.real?.should be_false
22
40
  end
23
41
  end
24
42
 
@@ -83,5 +101,9 @@ describe Rstat do
83
101
  it "calculates the standard deviation of an array" do
84
102
  [1, 2, 3, 4, 5, 6].standard_deviation.should be_within(0.00001).of(1.70783)
85
103
  end
104
+
105
+ it "calculates the coefficient of variation of an array" do
106
+ [1, 2, 3, 4, 5, 6].coefficient_of_variation.should be_within(0.00001).of(0.48795)
107
+ end
86
108
  end
87
109
  end
metadata CHANGED
@@ -1,48 +1,41 @@
1
- --- !ruby/object:Gem::Specification
1
+ --- !ruby/object:Gem::Specification
2
2
  name: rstat
3
- version: !ruby/object:Gem::Version
4
- hash: 27
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.3
5
5
  prerelease:
6
- segments:
7
- - 0
8
- - 0
9
- - 2
10
- version: 0.0.2
11
6
  platform: ruby
12
- authors:
7
+ authors:
13
8
  - Sean Eshbaugh
14
9
  autorequire:
15
10
  bindir: bin
16
11
  cert_chain: []
17
-
18
- date: 2012-03-27 00:00:00 -05:00
19
- default_executable:
20
- dependencies:
21
- - !ruby/object:Gem::Dependency
12
+ date: 2012-05-07 00:00:00.000000000 Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
22
15
  name: rspec
23
- prerelease: false
24
- requirement: &id001 !ruby/object:Gem::Requirement
16
+ requirement: !ruby/object:Gem::Requirement
25
17
  none: false
26
- requirements:
27
- - - ">="
28
- - !ruby/object:Gem::Version
29
- hash: 3
30
- segments:
31
- - 0
32
- version: "0"
18
+ requirements:
19
+ - - ! '>='
20
+ - !ruby/object:Gem::Version
21
+ version: '0'
33
22
  type: :development
34
- version_requirements: *id001
23
+ prerelease: false
24
+ version_requirements: !ruby/object:Gem::Requirement
25
+ none: false
26
+ requirements:
27
+ - - ! '>='
28
+ - !ruby/object:Gem::Version
29
+ version: '0'
35
30
  description: A Simple statistics gem.
36
- email:
31
+ email:
37
32
  - seaneshbaugh@gmail.com
38
33
  executables: []
39
-
40
34
  extensions: []
41
-
42
35
  extra_rdoc_files: []
43
-
44
- files:
36
+ files:
45
37
  - .gitignore
38
+ - .rvmrc
46
39
  - CHANGELOG.md
47
40
  - Gemfile
48
41
  - README.md
@@ -53,44 +46,38 @@ files:
53
46
  - lib/rstat/core_ext/array/mean.rb
54
47
  - lib/rstat/core_ext/array/median.rb
55
48
  - lib/rstat/core_ext/array/mode.rb
49
+ - lib/rstat/core_ext/array/product.rb
50
+ - lib/rstat/core_ext/array/range.rb
56
51
  - lib/rstat/core_ext/array/standard_deviation.rb
52
+ - lib/rstat/core_ext/array/sum.rb
57
53
  - lib/rstat/version.rb
58
54
  - rstat.gemspec
59
55
  - spec/rstat/array_spec.rb
60
56
  - spec/spec_helper.rb
61
- has_rdoc: true
62
57
  homepage: http://seaneshbaugh.com/
63
58
  licenses: []
64
-
65
59
  post_install_message:
66
60
  rdoc_options: []
67
-
68
- require_paths:
61
+ require_paths:
69
62
  - lib
70
- required_ruby_version: !ruby/object:Gem::Requirement
63
+ required_ruby_version: !ruby/object:Gem::Requirement
71
64
  none: false
72
- requirements:
73
- - - ">="
74
- - !ruby/object:Gem::Version
75
- hash: 3
76
- segments:
77
- - 0
78
- version: "0"
79
- required_rubygems_version: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - ! '>='
67
+ - !ruby/object:Gem::Version
68
+ version: '0'
69
+ required_rubygems_version: !ruby/object:Gem::Requirement
80
70
  none: false
81
- requirements:
82
- - - ">="
83
- - !ruby/object:Gem::Version
84
- hash: 3
85
- segments:
86
- - 0
87
- version: "0"
71
+ requirements:
72
+ - - ! '>='
73
+ - !ruby/object:Gem::Version
74
+ version: '0'
88
75
  requirements: []
89
-
90
76
  rubyforge_project: rstat
91
- rubygems_version: 1.5.2
77
+ rubygems_version: 1.8.23
92
78
  signing_key:
93
79
  specification_version: 3
94
80
  summary: A Simple statistics gem.
95
- test_files: []
96
-
81
+ test_files:
82
+ - spec/rstat/array_spec.rb
83
+ - spec/spec_helper.rb