def sample_multi_posterior_predictive(rng_key, n, model, model_args, guide, guide_args, params, with_intermediates=False, **kwargs):
    ' Samples n times from the posterior predictive distribution.\n\n    Note that if the model function is written in such a way that it returns, e.g.,\n    multiple observations, say n_model many, from a single posterior draw, the same is\n    true for the values returned by this function, i.e., this function will\n    output n x n_model observations.\n\n    :param rng_key: Jax PRNG key\n    :param model: Function representing the model using numpyro distributions\n        and the `sample` primitive\n    :param model_args: Arguments to the model function\n    :param guide: Function representing the variational distribution (the guide)\n        using numpyro distributions as well as the `sample` and `param` primitives\n    :param guide_args: Arguments to the guide function\n    :param params: A dictionary providing values for the parameters\n        designated by call to `param` in the guide\n    :param with_intermediates: If True, intermediate(/latent) samples from\n        sample site distributions are included in the result.\n    :param **kwargs: Keyword arguments passed to the model and guide functions.\n    :return: Dictionary of sampled values associated with the names given\n        via `sample()` in the model. If with_intermediates is True,\n        dictionary values are tuples where the first element is the final\n        sample values and the second element is a list of intermediate values.\n    '

    def single_sample_fn(rng):
        return sample_posterior_predictive(rng, model, model_args, guide, guide_args, params, with_intermediates=with_intermediates, **kwargs)
    return _sample_a_lot(rng_key, n, single_sample_fn)
Samples n times from the posterior predictive distribution.

Note that if the model function is written in such a way that it returns, e.g.,
multiple observations, say n_model many, from a single posterior draw, the same is
true for the values returned by this function, i.e., this function will
output n x n_model observations.

:param rng_key: Jax PRNG key
:param model: Function representing the model using numpyro distributions
    and the `sample` primitive
:param model_args: Arguments to the model function
:param guide: Function representing the variational distribution (the guide)
    using numpyro distributions as well as the `sample` and `param` primitives
:param guide_args: Arguments to the guide function
:param params: A dictionary providing values for the parameters
    designated by call to `param` in the guide
:param with_intermediates: If True, intermediate(/latent) samples from
    sample site distributions are included in the result.
:param **kwargs: Keyword arguments passed to the model and guide functions.
:return: Dictionary of sampled values associated with the names given
    via `sample()` in the model. If with_intermediates is True,
    dictionary values are tuples where the first element is the final
    sample values and the second element is a list of intermediate values.
def sample_multi_posterior_predictive(rng_key, n, model, model_args, guide, guide_args, params, with_intermediates=False, **kwargs):
    ' Samples n times from the posterior predictive distribution.\n\n    Note that if the model function is written in such a way that it returns, e.g.,\n    multiple observations, say n_model many, from a single posterior draw, the same is\n    true for the values returned by this function, i.e., this function will\n    output n x n_model observations.\n\n    :param rng_key: Jax PRNG key\n    :param model: Function representing the model using numpyro distributions\n        and the `sample` primitive\n    :param model_args: Arguments to the model function\n    :param guide: Function representing the variational distribution (the guide)\n        using numpyro distributions as well as the `sample` and `param` primitives\n    :param guide_args: Arguments to the guide function\n    :param params: A dictionary providing values for the parameters\n        designated by call to `param` in the guide\n    :param with_intermediates: If True, intermediate(/latent) samples from\n        sample site distributions are included in the result.\n    :param **kwargs: Keyword arguments passed to the model and guide functions.\n    :return: Dictionary of sampled values associated with the names given\n        via `sample()` in the model. If with_intermediates is True,\n        dictionary values are tuples where the first element is the final\n        sample values and the second element is a list of intermediate values.\n    '

    def single_sample_fn(rng):
        return sample_posterior_predictive(rng, model, model_args, guide, guide_args, params, with_intermediates=with_intermediates, **kwargs)
    return _sample_a_lot(rng_key, n, single_sample_fn)