def test_pc_diff_from_mean_50pc(self): """Percentage difference from the mean between values where one is 50% of the other""" value_1 = 2000 value_2 = 4000 diff_1 = percentage_difference_from_mean(value_2, value_1) diff_2 = percentage_difference_from_mean(value_1, value_2) self.assertEquals(diff_1, diff_2) self.assertAlmostEquals(0.333, diff_1, 2)
def test_pc_diff_from_mean_99pc(self): """Percentage difference from the mean between a very small value and a relatively large value""" value_1 = 0.0000000001 value_2 = 2**32 diff_1 = percentage_difference_from_mean(value_2, value_1) diff_2 = percentage_difference_from_mean(value_1, value_2) self.assertEquals(diff_1, diff_2) self.assertAlmostEquals(0.999999, diff_1, 2)
def test_percentage_diff_from_mean(self): """Percentage difference from the mean between two values that are almost equal""" value_1 = 3999.9999 value_2 = 4000 diff_1 = percentage_difference_from_mean(value_2, value_1) diff_2 = percentage_difference_from_mean(value_1, value_2) self.assertEquals(diff_1, diff_2) self.assertAlmostEquals(0.00000, diff_1, 2)
def _print_interval(self, output, percentage, interval, ingredient): """Output confidence interval for one ingredient""" upper_value = percentage + interval upper = self._float_format() % upper_value lower_value = percentage - interval lower = self._float_format() % lower_value mean = self._float_format() % percentage text = "The " + str(ingredient) + " proportion " if interval == 0.0: difference = 0.0 else: difference = percentage_difference_from_mean(lower_value, upper_value) * 100 if difference > 0.01: diff_text = ("%% (the interval is %0.0f%% of the mean " "proportion: %s%%)") % (difference, mean) output.line(text + "is between " + lower + "% and " + upper \ + diff_text) else: output.line(text + lower)