Module: RunKit::CoreExt::Enumerable
- Defined in:
- lib/run_kit/core_ext.rb
Instance Method Summary collapse
-
#mean ⇒ Object
one-liners.
- #stddev(sample: true) ⇒ Object
- #tally_sorted ⇒ Object
- #variance(sample: true) ⇒ Object
Instance Method Details
#mean ⇒ Object
one-liners
30 |
# File 'lib/run_kit/core_ext.rb', line 30 def mean = empty? ? nil : sum(0.0) / length |
#stddev(sample: true) ⇒ Object
31 |
# File 'lib/run_kit/core_ext.rb', line 31 def stddev(sample: true) = variance(sample:)&.sqrt |
#tally_sorted ⇒ Object
4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
# File 'lib/run_kit/core_ext.rb', line 4 def tally_sorted keyfn = case find { _1 } when ::String then -> { _1&.downcase || "\uffff" } when ::Numeric then -> { _1 || Float::MAX } when ::Array then -> { _1 || [] } when TrueClass, FalseClass then -> { (_1 != nil) ? (_1 ? 0 : 1) : Float::MAX } end unsorted = tally begin unsorted.sort_by { [-_2, keyfn&.call(_1)] } rescue ArgumentError, NoMethodError keyfn = nil # mixed types, don't sort on key retry end.to_h end |
#variance(sample: true) ⇒ Object
21 22 23 24 25 26 27 |
# File 'lib/run_kit/core_ext.rb', line 21 def variance(sample: true) n = length return if (sample && n < 2) || (!sample && n.zero?) mu = mean denom = sample ? (n - 1) : n sum(0.0) { (_1 - mu)**2 } / denom end |