Module: Basic::Stats
- Defined in:
- lib/basic/stats.rb,
lib/basic/stats/version.rb
Constant Summary collapse
- VERSION =
"0.0.2"- @@critical_z_table =
{ 3 => 1.15, 4 => 1.48, 5 => 1.71, 6 => 1.89, 7 => 2.02, 8 => 2.13, 9 => 2.21, 10 => 2.29, 11 => 2.34, 12 => 2.41, 13 => 2.46, 14 => 2.51, 15 => 2.55, 16 => 2.59, 17 => 2.62, 18 => 2.65, 19 => 2.68, 20 => 2.71, 21 => 2.73, 22 => 2.76, 23 => 2.78, 24 => 2.80, 25 => 2.82, 26 => 2.84, 27 => 2.86, 28 => 2.88, 29 => 2.89, 30 => 2.91, 31 => 2.92, 32 => 2.94, 33 => 2.95, 34 => 2.97, 35 => 2.98, 36 => 2.99, 37 => 3.00, 38 => 3.01, 39 => 3.03, 40 => 3.04, 50 => 3.13, 60 => 3.20, 70 => 3.26, 80 => 3.31, 90 => 3.35, 100 => 3.38, 110 => 3.42, 120 => 3.44, 130 => 3.47, 140 => 3.49 }
Class Method Summary collapse
Instance Method Summary collapse
- #critical_z ⇒ Object
- #mean ⇒ Object
- #median ⇒ Object
- #reject_outliers ⇒ Object
- #reject_outliers! ⇒ Object
- #sample_variance ⇒ Object
- #select_outliers ⇒ Object
- #standard_deviation ⇒ Object
- #sum ⇒ Object
- #z(value) ⇒ Object
Class Method Details
.critical_z(n) ⇒ Object
103 104 105 106 107 108 109 110 |
# File 'lib/basic/stats.rb', line 103 def self.critical_z(n) result = nil @@critical_z_table.keys.sort.each do |key| break if key > n result = @@critical_z_table[key] end result end |
Instance Method Details
#critical_z ⇒ Object
33 34 35 |
# File 'lib/basic/stats.rb', line 33 def critical_z Stats.critical_z(self.size) end |
#mean ⇒ Object
9 10 11 |
# File 'lib/basic/stats.rb', line 9 def mean self.sum/self.length.to_f end |
#median ⇒ Object
13 14 15 16 17 |
# File 'lib/basic/stats.rb', line 13 def median sorted = self.sort len = sorted.length return (sorted[(len - 1) / 2] + sorted[len / 2]) / 2.0 end |
#reject_outliers ⇒ Object
37 38 39 40 |
# File 'lib/basic/stats.rb', line 37 def reject_outliers cz = self.critical_z self.reject { |value| z(value) > cz } end |
#reject_outliers! ⇒ Object
42 43 44 45 |
# File 'lib/basic/stats.rb', line 42 def reject_outliers! cz = self.critical_z self.reject! { |value| z(value) > cz } end |
#sample_variance ⇒ Object
19 20 21 22 23 |
# File 'lib/basic/stats.rb', line 19 def sample_variance m = self.mean sum = self.inject(0){|accum, i| accum +(i-m)**2 } sum/(self.length - 1).to_f end |
#select_outliers ⇒ Object
47 48 49 50 |
# File 'lib/basic/stats.rb', line 47 def select_outliers cz = self.critical_z self.select { |value| z(value) > cz } end |
#standard_deviation ⇒ Object
25 26 27 |
# File 'lib/basic/stats.rb', line 25 def standard_deviation return Math.sqrt(self.sample_variance) end |
#sum ⇒ Object
5 6 7 |
# File 'lib/basic/stats.rb', line 5 def sum self.inject(0){|accum, i| accum + i } end |
#z(value) ⇒ Object
29 30 31 |
# File 'lib/basic/stats.rb', line 29 def z(value) (self.mean - value).abs/standard_deviation end |