Exemplo n.º 1
0
def main():
    # make a uniform prior
    param = 1.2
    prior = _make_uniform_suite(0.5, 1.5, 1000)

    # try out the sample in the book
    t = []
    sample = [2.675, 0.198, 1.152, 0.787, 2.717, 4.269]
    name = 'post%d' % len(sample)
    posterior = _estimate_parameter(prior, sample, name)
    t.append(posterior)

    # try out a range of sample sizes
    for n in [10, 20, 40]:
        # generate a sample
        sample = [random.expovariate(param) for _ in range(n)]
        name = 'post%d' % n

        # compute the posterior
        posterior = _estimate_parameter(prior, sample, name)
        t.append(posterior)

    # plot the posterior distributions
    for i, posterior in enumerate(t):
        pyplot.subplot(2, 2, i + 1)
        _05_myplot._pmf(posterior)
        pyplot.xlabel('lambda')
        pyplot.ylabel('Posterior probability')
        pyplot.legend()

    _05_myplot._save(root='posteriors')
Exemplo n.º 2
0
def main():
    results = _read_results()
    speeds = _get_speeds(results)
    pmf = _04_Pmf._make_pmf_from_list(speeds, 'speeds')
    _05_myplot._pmf(pmf)
    _05_myplot._show(title='PMF of running speed',
                     xlabel='speed (mph)',
                     ylabel='probability')
Exemplo n.º 3
0
def main():
    suite = _make_uniform_suite(0.0, 1.0, 1001)
    evidence = 140, 110

    _update(suite, evidence)
    suite.name = 'posterior'

    # plot the posterior distributions
    _05_myplot._pmf(suite)
    _05_myplot._show(title='Biased coin',
                     xlabel='P(heads)',
                     ylabel='Posterior probability')
Exemplo n.º 4
0
def main():
    upper_bound = 200
    prior = _make_uniform_suite(1, upper_bound, upper_bound)
    prior.name = 'prior'

    evidence = 60
    posterior = prior._copy()
    _update(posterior, evidence)
    posterior.name = 'posterior'

    print(_credible_interval(posterior, 90))

    # plot the posterior distribution
    pyplot.subplots_adjust(wspace=0.4, left=0.15)
    plot_options = dict(linewidth=2)

    _05_myplot._pmf(posterior, **plot_options)
    _05_myplot._save(root='locomotive',
                     title='Locomotive problem',
                     xlabel='Number of trains',
                     ylabel='Posterior probability')