def __init__(self, prior: Prior, likelihood: Likelihood):
        r"""
        Joint distribution class. This is the joint distribution of target variables and random model parameters given
        input variables and calibration parameters. It is given by

        .. math::
            p(y, w|x, \phi),

        where:
         - :math:`x` is an observed input variable;
         - :math:`y` is an observed target variable;
         - :math:`w` denotes the random model parameters;
         - :math:`\phi` denotes the calibration parameters.

        Parameters
        ----------
        prior : Prior
            A prior distribution.
        likelihood : Likelihood
            A likelihood function.
        """
        self.prior = prior
        self.likelihood = likelihood

        Joint distribution class. This is the joint distribution of target variables and random model parameters given
        input variables and calibration parameters. It is given by

        .. math::
            p(y, w|x, \phi),

        where:
         - :math:`x` is an observed input variable;
         - :math:`y` is an observed target variable;
         - :math:`w` denotes the random model parameters;
         - :math:`\phi` denotes the calibration parameters.

        Parameters
        ----------
        prior : Prior
            A prior distribution.
        likelihood : Likelihood
            A likelihood function.
        
fortuna/prob_model/joint/base.py