Class: ABAnalyzer::ABTest
- Inherits:
-
Object
- Object
- ABAnalyzer::ABTest
- Defined in:
- lib/abanalyzer/abtest.rb
Instance Method Summary collapse
- #chisquare_p ⇒ Object
- #chisquare_score ⇒ Object
- #different?(sig = 0.05) ⇒ Boolean
- #gtest_p ⇒ Object
- #gtest_score ⇒ Object
-
#initialize(values) ⇒ ABTest
constructor
values should be hash of hashes, with top level hash the group names: { :groupa => { :yes => 20, :no => 10 }, :groupb => { :yes => 18, :no => 8 } }.
Constructor Details
Instance Method Details
#chisquare_p ⇒ Object
36 37 38 |
# File 'lib/abanalyzer/abtest.rb', line 36 def chisquare_p ABTest.chi2dist(df, self.chisquare_score) end |
#chisquare_score ⇒ Object
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
12 13 14 |
# File 'lib/abanalyzer/abtest.rb', line 12 def different?(sig=0.05) gtest_p < sig end |
#gtest_p ⇒ Object
40 41 42 |
# File 'lib/abanalyzer/abtest.rb', line 40 def gtest_p ABTest.chi2dist(df, 2*self.gtest_score) end |
#gtest_score ⇒ Object
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 |