Module: DescriptiveStatistics
- Included in:
- Enumerable
- Defined in:
- lib/descriptive_statistics/sum.rb,
lib/descriptive_statistics/mean.rb,
lib/descriptive_statistics/mode.rb,
lib/descriptive_statistics/range.rb,
lib/descriptive_statistics/median.rb,
lib/descriptive_statistics/number.rb,
lib/descriptive_statistics/variance.rb,
lib/descriptive_statistics/percentile.rb,
lib/descriptive_statistics/percentile_rank.rb,
lib/descriptive_statistics/support/convert.rb,
lib/descriptive_statistics/standard_deviation.rb,
lib/descriptive_statistics/descriptive_statistics.rb
Defined Under Namespace
Modules: Support
Instance Method Summary collapse
- #descriptive_statistics ⇒ Object
- #mean ⇒ Object
- #median ⇒ Object
- #mode ⇒ Object
- #number ⇒ Object
- #percentile(p) ⇒ Object
-
#percentile_rank(p) ⇒ Object
percent of cases that are at or below a score.
- #range ⇒ Object
- #standard_deviation ⇒ Object
- #sum ⇒ Object
- #variance ⇒ Object
Instance Method Details
#descriptive_statistics ⇒ Object
2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
# File 'lib/descriptive_statistics/descriptive_statistics.rb', line 2 def descriptive_statistics return { :number => self.number, :sum => self.sum, :variance => self.variance, :standard_deviation => self.standard_deviation, :min => self.min, :max => self.max, :mean => self.mean, :mode => self.mode, :median => self.median, :range => self.range, :q1 => self.percentile(25), :q2 => self.percentile(50), :q3 => self.percentile(75) } end |
#mean ⇒ Object
2 3 4 5 6 7 |
# File 'lib/descriptive_statistics/mean.rb', line 2 def mean values = Support::convert(self) return unless values.size > 0 values.sum / values.number end |
#median ⇒ Object
2 3 4 5 6 7 |
# File 'lib/descriptive_statistics/median.rb', line 2 def median values = Support::convert(self) return unless values.size > 0 values.percentile(50) end |
#mode ⇒ Object
2 3 4 5 6 7 8 9 10 11 |
# File 'lib/descriptive_statistics/mode.rb', line 2 def mode values = Support::extract(self) return unless values.size > 0 values .group_by { |e| e } .values .max_by(&:size) .first end |
#number ⇒ Object
2 3 4 5 6 |
# File 'lib/descriptive_statistics/number.rb', line 2 def number values = Support::extract(self) values.size.to_f end |
#percentile(p) ⇒ Object
2 3 4 5 6 7 8 9 10 11 12 13 14 |
# File 'lib/descriptive_statistics/percentile.rb', line 2 def percentile(p) values = Support::convert(self) return unless values.size > 0 sorted = values.sort return sorted[-1] if p == 100 rank = p / 100.0 * (values.number - 1) lrank = rank.floor d = rank - lrank lower = sorted[lrank] upper = sorted[lrank+1] lower + (upper - lower) * d end |
#percentile_rank(p) ⇒ Object
percent of cases that are at or below a score
3 4 5 6 7 8 |
# File 'lib/descriptive_statistics/percentile_rank.rb', line 3 def percentile_rank(p) values = Support::convert(self) return unless values.size > 0 return (((values.sort.rindex{ |x| x <= p } || -1.0) + 1.0)) / values.number * 100.0 end |
#range ⇒ Object
2 3 4 5 6 7 |
# File 'lib/descriptive_statistics/range.rb', line 2 def range values = Support::convert(self) return unless values.size > 0 values.max - values.min end |
#standard_deviation ⇒ Object
2 3 4 5 6 7 |
# File 'lib/descriptive_statistics/standard_deviation.rb', line 2 def standard_deviation values = Support::convert(self) return unless values.size > 0 Math.sqrt(values.variance) end |