def _differences()

in spotify_confidence/analysis/bayesian/bayesian_models.py [0:0]


    def _differences(self, difference_posterior, level_1, level_2, absolute):
        # 95% credible interval for posterior
        credible_interval = (
            pd.Series(difference_posterior).quantile((1.0 - self._interval_size) / 2),
            pd.Series(difference_posterior).quantile((1.0 - self._interval_size) / 2 + self._interval_size),
        )

        # Probability that posterior is greater
        # than zero (count occurences in the MC sample)
        p_gt_zero = (difference_posterior > 0).mean()

        expected_loss_v2 = difference_posterior[difference_posterior < 0].sum() / len(difference_posterior)
        if (difference_posterior > 0).sum() == 0:
            expected_gain_v2 = 0
        else:
            expected_gain_v2 = difference_posterior[difference_posterior > 0].sum() / len(difference_posterior)

        expected_loss_v1 = (difference_posterior[difference_posterior * -1.0 < 0] * -1.0).sum() / len(
            difference_posterior
        )

        if (difference_posterior * -1.0 > 0).sum() == 0:
            expected_gain_v1 = 0
        else:
            expected_gain_v1 = (difference_posterior[difference_posterior * -1.0 > 0] * -1.0).sum() / len(
                difference_posterior
            )

        return pd.DataFrame(
            OrderedDict(
                [
                    ("level_1", str(level_1)),
                    ("level_2", str(level_2)),
                    ("absolute_difference", absolute),
                    ("difference", difference_posterior.mean()),
                    ("ci_lower", [credible_interval[0]]),
                    ("ci_upper", [credible_interval[1]]),
                    ("P(level_2 > level_1)", p_gt_zero),
                    ("level_1 potential loss", expected_loss_v1),
                    ("level_1 potential gain", expected_gain_v1),
                    ("level_2 potential loss", expected_loss_v2),
                    ("level_2 potential gain", expected_gain_v2),
                ]
            )
        )