def test_init12(): outcomes = ['0', '1'] pmf = [1 / 2, 1 / 2] d = Distribution(outcomes, pmf) sd = ScalarDistribution.from_distribution(d, base=10) d.set_base(10) # Different sample space representations assert not d.is_approx_equal(sd)
def test_init12(): outcomes = ["0", "1"] pmf = [1 / 2, 1 / 2] d = Distribution(outcomes, pmf) sd = ScalarDistribution.from_distribution(d, base=10) d.set_base(10) # Different sample space representations assert_false(d.is_approx_equal(sd))
def distribution_from_data(d, L, trim=True, base=None): """ Returns a distribution over words of length `L` from `d`. The returned distribution is the naive estimate of the distribution, which assigns probabilities equal to the number of times a particular word appeared in the data divided by the total number of times a word could have appeared in the data. Roughly, it corresponds to the stationary distribution of a maximum likelihood estimate of the transition matrix of an (L-1)th order Markov chain. Parameters ---------- d : list A list of symbols to be converted into a distribution. L : integer The length of the words for the distribution. trim : bool If true, then words with zero probability are trimmed from the distribution. base : int or string The desired base of the returned distribution. If `None`, then the value of `dit.ditParams['base']` is used. """ from dit import ditParams, Distribution try: d = list(map(tuple, d)) except TypeError: pass if base is None: base = ditParams['base'] words, _, counts, _ = counts_from_data(d, L, 0) # We turn the counts to probabilities pmf = counts / counts.sum() dist = Distribution(words, pmf, trim=trim) dist.set_base(base) if L == 1: try: dist = modify_outcomes(dist, lambda o: o[0]) except ditException: pass return dist
def test_to_string9(): # Basic outcomes = ['00', '01', '10', '11'] pmf = [1/4]*4 d = Distribution(outcomes, pmf) d.set_base(2) s = d.to_string() s_ = """Class: Distribution Alphabet: ('0', '1') for all rvs Base: 2 Outcome Class: str Outcome Length: 2 RV Names: None x log p(x) 00 -2.0 01 -2.0 10 -2.0 11 -2.0""" assert_equal(s, s_)
def test_to_string9(): # Basic outcomes = ['00', '01', '10', '11'] pmf = [1/4]*4 d = Distribution(outcomes, pmf) d.set_base(2) s = d.to_string() s_ = """Class: Distribution Alphabet: ('0', '1') for all rvs Base: 2 Outcome Class: str Outcome Length: 2 RV Names: None x log p(x) 00 -2.0 01 -2.0 10 -2.0 11 -2.0""" assert s == s_