'Use the heldout estimate to create a probability distribution
for the experiment used to generate ``base_fdist`` and
``heldout_fdist``.
:type base_fdist: FreqDist
:param base_fdist: The base frequency distribution.
:type heldout_fdist: FreqDist
:param heldout_fdist: The heldout frequency distribution.
:type bins: int
:param bins: The number of sample values that can be generated
by the experiment that is described by the probability
distribution.  This value must be correctly set for the
probabilities of the sample values to sum to one.  If
``bins`` is not specified, it defaults to ``freqdist.B()``.'

def __init__(self, base_fdist, heldout_fdist, bins=None):

    self._base_fdist = base_fdist
    self._heldout_fdist = heldout_fdist
    self._max_r = base_fdist[base_fdist.max()]
    Tr = self._calculate_Tr()
    r_Nr = base_fdist.r_Nr(bins)
    Nr = [r_Nr[r] for r in range((self._max_r + 1))]
    N = heldout_fdist.N()
    self._estimate = self._calculate_estimate(Tr, Nr, N)
