def test_mean_doesnt_mutate_argument(self): xs = [-2.9, -64.34, 98.76, 56.14, 20.62, 120.62, 22.33, 277.13, 45.1, -80.51, 114.01, 209.34, -79.91, 200.83, 144.65, -53.38, -92.95, 208.1, 84.47, 138.65] copy = xs[:] basic_stats.mean(xs) assert_equals(xs, copy)
def test_mean_doesnt_mutate_argument(self): xs = [ -2.9, -64.34, 98.76, 56.14, 20.62, 120.62, 22.33, 277.13, 45.1, -80.51, 114.01, 209.34, -79.91, 200.83, 144.65, -53.38, -92.95, 208.1, 84.47, 138.65 ] copy = xs[:] basic_stats.mean(xs) assert_equals(xs, copy)
def test_mean_return_value(self): xs = [ -2.9, -64.34, 98.76, 56.14, 20.62, 120.62, 22.33, 277.13, 45.1, -80.51, 114.01, 209.34, -79.91, 200.83, 144.65, -53.38, -92.95, 208.1, 84.47, 138.65 ] assert_equals(basic_stats.mean(xs), 68.338)
def scottknott(data, max_rank_size=3, epsilon=0.01): """ Recursively split data, maximizing delta of the expected value of the mean before and after the splits. Reject splits with under max_rank_size items. """ flat_data = [x for log in data for x in log.contents()] data_mean = basic_stats.mean(flat_data) def recurse_and_rank(parts, rank=0): "Split, then recurse_and_rank on each part." cut = min_mu(parts, data_mean, len(flat_data), max_rank_size, epsilon) if cut: # if cut, rank "right" higher than "left" rank = recurse_and_rank(parts[:cut], rank) + 1 rank = recurse_and_rank(parts[cut:], rank) else: # if no cut, then all get same rank for part in parts: part.rank = rank return rank recurse_and_rank(sorted(data, key=lambda x: x.median())) return data
def mean(self): if self._cached_mean is not None: return self._cached_mean self._cached_mean = basic_stats.mean(self._cache) return self._cached_mean
def test_mean_return_value(self): xs = [-2.9, -64.34, 98.76, 56.14, 20.62, 120.62, 22.33, 277.13, 45.1, -80.51, 114.01, 209.34, -79.91, 200.83, 144.65, -53.38, -92.95, 208.1, 84.47, 138.65] assert_equals(basic_stats.mean(xs), 68.338)