Ruby Cheap Tricks - Stats

For when it’s just as quick to roll your own …

  1. # In each of these functions, data is just an array of numbers
  2. # average
  3. def avg(data)
  4.   data.inject(0.0) { |sum, i| sum + i } / data.length
  5. end
  6.  
  7. # median value
  8. def median(data)
  9.   data.sort!
  10.   index = data.length / 2
  11.   (data.length % 2 == 0) ? data[index] : avg(data.values_at(index.floor, index.ceil))
  12. end
  13.  
  14. # interquartile mean
  15. def iqm(data)
  16.   data.sort!
  17.   first = (data.length/4).truncate
  18.   last = 3 * first
  19.   avg(data[first..last])
  20. end

Leave a Reply