def test_distributions_normal_freeze_thaw_fit(): d = NormalDistribution(5, 2) d.freeze() d.thaw() d.fit([5, 4, 5, 4, 6, 5, 6, 5, 4, 6, 5, 4]) assert_array_almost_equal(d.parameters, [4.9166, 0.7592], 4)
def test_normal(): d = NormalDistribution(5, 2) e = NormalDistribution(5., 2.) assert_true(isinstance(d.log_probability(5), float)) assert_true(isinstance(d.log_probability([5]), float)) assert_true(isinstance(d.log_probability([5, 6]), numpy.ndarray)) assert_almost_equal(d.log_probability(5), -1.61208571, 8) assert_equal(d.log_probability(5), e.log_probability(5)) assert_equal(d.log_probability(5), d.log_probability(5.)) assert_almost_equal(d.log_probability(0), -4.737085713764219) assert_equal(d.log_probability(0), e.log_probability(0.)) d.fit([5, 4, 5, 4, 6, 5, 6, 5, 4, 6, 5, 4]) assert_almost_equal(d.parameters[0], 4.9167, 4) assert_almost_equal(d.parameters[1], 0.7592, 4) assert_not_equal(d.log_probability(4), e.log_probability(4)) assert_almost_equal(d.log_probability(4), -1.3723678499651766) assert_almost_equal(d.log_probability(18), -149.13140399454429) assert_almost_equal(d.log_probability(1e8), -8674697942168743.0, -4) d = NormalDistribution(5, 1e-10) assert_almost_equal(d.log_probability(1e100), -4.9999999999999994e+219) d.fit([0, 2, 3, 2, 100], weights=[0, 5, 2, 3, 200]) assert_equal(round(d.parameters[0], 4), 95.3429) assert_equal(round(d.parameters[1], 4), 20.8276) assert_equal(round(d.log_probability(50), 8), -6.32501194) d = NormalDistribution(5, 2) d.fit([0, 5, 3, 5, 7, 3, 4, 5, 2], inertia=0.5) assert_equal(round(d.parameters[0], 4), 4.3889) assert_equal(round(d.parameters[1], 4), 1.9655) d.summarize([0, 2], weights=[0, 5]) d.summarize([3, 2], weights=[2, 3]) d.summarize([100], weights=[200]) d.from_summaries() assert_equal(round(d.parameters[0], 4), 95.3429) assert_equal(round(d.parameters[1], 4), 20.8276) d.freeze() d.fit([0, 1, 1, 2, 3, 2, 1, 2, 2]) assert_equal(round(d.parameters[0], 4), 95.3429) assert_equal(round(d.parameters[1], 4), 20.8276) d.thaw() d.fit([5, 4, 5, 4, 6, 5, 6, 5, 4, 6, 5, 4]) assert_equal(round(d.parameters[0], 4), 4.9167) assert_equal(round(d.parameters[1], 4), 0.7592) e = Distribution.from_json(d.to_json()) assert_equal(e.name, "NormalDistribution") assert_equal(round(e.parameters[0], 4), 4.9167) assert_equal(round(e.parameters[1], 4), 0.7592) f = pickle.loads(pickle.dumps(e)) assert_equal(f.name, "NormalDistribution") assert_equal(round(f.parameters[0], 4), 4.9167) assert_equal(round(f.parameters[1], 4), 0.7592)