class TeaLeaves::SeasonalComponents

Public Class Methods

new(period, data) click to toggle source
# File lib/tealeaves/seasonal_components.rb, line 3
def initialize(period, data)
  @period = period
  @data = data
end

Public Instance Methods

seasonal_averages() click to toggle source
# File lib/tealeaves/seasonal_components.rb, line 8
def seasonal_averages
  @seasonal_averages ||= seasonal_groups.map do |group| 
    group.inject(&:+) / group.size.to_f
  end
end
seasonal_factors(operation = :-) click to toggle source
# File lib/tealeaves/seasonal_components.rb, line 14
def seasonal_factors(operation = :-)
  @seasonal_factors ||= seasonal_averages.map {|i| i.send(operation, avg) }
end

Private Instance Methods

avg() click to toggle source
# File lib/tealeaves/seasonal_components.rb, line 20
def avg
  @avg ||= seasonal_averages.inject(&:+) / @period.to_f
end
seasonal_groups() click to toggle source
# File lib/tealeaves/seasonal_components.rb, line 24
def seasonal_groups
  @data.take(@period).zip( *(@data.drop(@period).each_slice(@period)) ).map(&:compact)
end