class Ablab::Result

Public Class Methods

new(experiment) click to toggle source
# File lib/ablab.rb, line 130
def initialize(experiment)
  @experiment = experiment
end

Public Instance Methods

data() click to toggle source
# File lib/ablab.rb, line 134
def data
  counts_c = counts(control)
  groups.map do |group|
    if group == control
      next [group.name, counts_c.merge(control: true, description: group.description)]
    end
    counts = counts(group)
    z = z_score(counts[:sessions], counts[:conversions],
                counts_c[:sessions], counts_c[:conversions])
    [group.name, counts.merge(z_score: z, control: false, description: group.description)]
  end.to_h
end

Private Instance Methods

counts(group) click to toggle source
# File lib/ablab.rb, line 147
        def counts(group)
  Ablab.tracker.counts(name, group.name)
end
z_score(s, c, sc, cc) click to toggle source
# File lib/ablab.rb, line 151
        def z_score(s, c, sc, cc)
  return nil if s == 0 || sc == 0
  p  = c.to_f / s
  pc = cc.to_f / sc
  (p - pc) / Math.sqrt((p*(1 - p) / s) + (pc*(1 - pc) / sc))
end