def _test_scipy_stats(name): if name in known_failures: raise SkipTest('known failure') dist = getattr(scipy.stats, name) try: params = default_params[name] except KeyError: params = [tuple(1.0 + rand(dist.numargs))] for param in params: print 'param = {}'.format(param) dim = get_dim(dist.rvs(*param)) sample_count = 100 + 1000 * dim samples = list(dist.rvs(*param, size=sample_count)) if hasattr(dist, 'pmf'): probs = [dist.pmf(sample, *param) for sample in samples] probs_dict = dict(izip(samples, probs)) gof = discrete_goodness_of_fit(samples, probs_dict, plot=True) else: probs = [dist.pdf(sample, *param) for sample in samples] gof = auto_density_goodness_of_fit(samples, probs, plot=True) assert_greater(gof, TEST_FAILURE_RATE) gof = mixed_density_goodness_of_fit(samples, probs, plot=True) assert_greater(gof, TEST_FAILURE_RATE)
def test_good_fit(self): for param in self.dist_params(): dim = get_dim(self.dist.rvs(*param, size=2)[0]) sample_count = NUM_BASE_SAMPLES + NUM_SAMPLES_SCALE * dim samples = self.dist.rvs(*param, size=sample_count) samples = list(map(self._sample_postprocessing, samples)) probabilities = [self.pdf(sample, *param) for sample in samples] gof = self.goodness_of_fit(samples, probabilities) self.assertGreater(gof, TEST_FAILURE_RATE)