class TrailGuide::Calculators::Calculator
Attributes
choice[R]
experiment[R]
goal[R]
probability[R]
Public Class Methods
new(experiment, probability=TrailGuide::Calculators::DEFAULT_PROBABILITY, base: :default, goal: nil, against: nil)
click to toggle source
# File lib/trail_guide/calculators/calculator.rb, line 9 def initialize(experiment, probability=TrailGuide::Calculators::DEFAULT_PROBABILITY, base: :default, goal: nil, against: nil) @experiment = experiment @probability = probability @base_type = base @goal = goal @against = against end
Public Instance Methods
base()
click to toggle source
# File lib/trail_guide/calculators/calculator.rb, line 34 def base @base ||= case @base_type when :control # use the control as the "base" variants.find { |variant| variant.control } else # use the second-best converting as the "base" (default behavior) variants[-2] end end
best()
click to toggle source
# File lib/trail_guide/calculators/calculator.rb, line 45 def best @best ||= variants_with_conversion.last end
calculate!()
click to toggle source
# File lib/trail_guide/calculators/calculator.rb, line 53 def calculate! raise NotImplementedError, "You must define a calculate! method on your calculator class" end
variants()
click to toggle source
# File lib/trail_guide/calculators/calculator.rb, line 17 def variants @variants ||= experiment.variants.map do |variant| superset = @against ? variant.converted(@against) : variant.participants converts = variant.converted(goal) measure = (converts.to_f / superset.to_f) rescue 0 measure = 0 if measure.nan? Struct.new(:name, :control, :superset, :subset, :measure, :difference, :probability, :significance, :z_score) .new(variant.name, variant.control?, superset, converts, measure, 0, 0, nil, nil) end.sort_by { |v| v.measure } end
variants_with_conversion()
click to toggle source
# File lib/trail_guide/calculators/calculator.rb, line 30 def variants_with_conversion @variants_with_conversion ||= variants.select { |variant| variant.measure > 0.0 } end
worst()
click to toggle source
# File lib/trail_guide/calculators/calculator.rb, line 49 def worst @worst ||= variants_with_conversion.first end