Class: ABAnalyzer::ABTest

Inherits:
Object
  • Object
show all
Defined in:
lib/abanalyzer/abtest.rb

Instance Method Summary collapse

Constructor Details

#initialize(values) ⇒ ABTest

values should be hash of hashes, with top level hash the group names: { :groupa => { :yes => 20, :no => 10 }, :groupb => { :yes => 18, :no => 8 } }



8
9
10
# File 'lib/abanalyzer/abtest.rb', line 8

def initialize(values)
  @values = Matrix.new values
end

Instance Method Details

#chisquare_pObject



36
37
38
# File 'lib/abanalyzer/abtest.rb', line 36

def chisquare_p
  ABTest.chi2dist(df, self.chisquare_score)
end

#chisquare_scoreObject



16
17
18
19
20
21
22
23
24
# File 'lib/abanalyzer/abtest.rb', line 16

def chisquare_score
  sum=0
  @values.each_cell { |colname, rowname, value|
    ex = expected(colname, rowname)
    test_sufficient_data(colname, rowname, ex, value)
    sum += ((value - ex) ** 2) / ex
  }
  return sum
end

#different?(sig = 0.05) ⇒ Boolean

Returns:

  • (Boolean)


12
13
14
# File 'lib/abanalyzer/abtest.rb', line 12

def different?(sig=0.05)
  gtest_p < sig
end

#gtest_pObject



40
41
42
# File 'lib/abanalyzer/abtest.rb', line 40

def gtest_p
  ABTest.chi2dist(df, 2*self.gtest_score)
end

#gtest_scoreObject



26
27
28
29
30
31
32
33
34
# File 'lib/abanalyzer/abtest.rb', line 26

def gtest_score
  sum=0
  @values.each_cell { |colname, rowname, value|
    ex = expected(colname, rowname)
    test_sufficient_data(colname, rowname, ex, value)
    sum += value * Math.log(value / ex)
  }
  return sum
end