def test_likelihoods_equal_priors(self): """likelihoods should equal Pr(D|H) if priors the same""" equal = [0.25, 0.25, 0.25, 0.25] unequal = [0.5, 0.25, 0.125, 0.125] equal_answer = [1, 1, 1, 1] unequal_answer = [2, 1, 0.5, 0.5] for obs, exp in zip(likelihoods(equal, equal), equal_answer): self.assertFloatEqual(obs, exp) for obs, exp in zip(likelihoods(unequal, equal), unequal_answer): self.assertFloatEqual(obs, exp)
def test_likelihoods_equal_evidence(self): """likelihoods should return vector of 1's if evidence equal for all""" equal = [0.25, 0.25, 0.25, 0.25] unequal = [0.5, 0.25, 0.125, 0.125] equal_answer = [1, 1, 1, 1] unequal_answer = [2, 1, 0.5, 0.5] not_unity = [0.7, 0.7, 0.7, 0.7] for obs, exp in zip(likelihoods(equal, unequal), equal_answer): self.assertFloatEqual(obs, exp) # should be the same if evidences don't sum to 1 for obs, exp in zip(likelihoods(not_unity, unequal), equal_answer): self.assertFloatEqual(obs, exp)
def test_likelihoods_unequal_evidence(self): """likelihoods should update based on weighted sum if evidence unequal""" not_unity = [1, 0.5, 0.25, 0.25] unequal = [0.5, 0.25, 0.125, 0.125] products = [1.4545455, 0.7272727, 0.3636364, 0.3636364] # if priors and evidence both unequal, likelihoods should change # (calculated using StarCalc) for obs, exp in zip(likelihoods(not_unity, unequal), products): self.assertFloatEqual(obs, exp)