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