Likelihood
Now we are ready to write the likelihood function. As usual, I
define a new class that extends thinkbayes.Suite
:
class Price(thinkbayes.Suite): def __init__(self, pmf, player): thinkbayes.Suite.__init__(self, pmf) self.player = player
pmf
represents the prior
distribution and player
is a Player
object as described in the previous section. Here’s Likelihood
:
def Likelihood(self, data, hypo): price = hypo guess = data error = price - guess like = self.player.ErrorDensity(error) return like
hypo
is the hypothetical price of
the showcase. data
is the contestant’s
best guess at the price. error
is the
difference, and like
is the likelihood
of the data, given the hypothesis.
ErrorDensity
is defined in
Player
:
# class Player: def ErrorDensity(self, error): return self.pdf_error.Density(error)
ErrorDensity
works by evaluating
pdf_error
at the given
value of error
. The result is a
probability density, so it is not really a probability. But remember that
Likelihood
doesn’t need to compute a
probability; it only has to compute something
proportional to a probability. As long as the
constant of proportionality is the same for all likelihoods, it gets
canceled out when we normalize the posterior distribution.
And therefore, a probability density is a perfectly good likelihood.
Get Think Bayes now with O’Reilly online learning.
O’Reilly members experience live online training, plus books, videos, and digital content from 200+ publishers.