def get_samples()

in src/mozanalysis/bayesian_stats/binary.py [0:0]


def get_samples(df, num_enrollments_label, num_conversions_label, num_samples):
    """Return samples from Beta distributions.

    Assumes a Beta(1, 1) prior.

    Args:
        df: A pandas dataframe of integers:

            * ``df.index`` lists the experiment branches
            * ``df.columns`` is
              ``(num_enrollments_label, num_conversions_label)``

        num_enrollments_label: Label for the df column containing the
            number of enrollments in each branch.
        num_conversions_label: Label for the df column containing the
            number of conversions in each branch.
        num_samples: The number of samples to compute

    Returns a pandas.DataFrame of sampled conversion rates

        * columns: list of branches
        * index: enumeration of samples
    """
    samples = pd.DataFrame(index=np.arange(num_samples), columns=df.index)
    for branch_label, r in df.iterrows():
        # Oh, for a better prior...
        samples[branch_label] = np.random.beta(
            r.loc[num_conversions_label] + 1,
            r.loc[num_enrollments_label] - r.loc[num_conversions_label] + 1,
            size=num_samples,
        )

    return samples