Esempio n. 1
0
    def summary(self, prob=0.9):
        """
        Prints a summary table displaying diagnostics of samples obtained from
        posterior. The diagnostics displayed are mean, standard deviation, median,
        the 90% Credibility Interval, :func:`~pyro.ops.stats.effective_sample_size`,
        :func:`~pyro.ops.stats.split_gelman_rubin`.

        :param float prob: the probability mass of samples within the credibility interval.
        """
        summary(self._samples, prob=prob)
Esempio n. 2
0
def get_summary_table(posterior,
                      sites,
                      player_names,
                      transforms={},
                      diagnostics=False,
                      group_by_chain=False):
    """
    Return summarized statistics for each of the ``sites`` in the
    traces corresponding to the approximate posterior.
    """
    site_stats = {}

    for site_name in sites:
        marginal_site = posterior[site_name].cpu()

        if site_name in transforms:
            marginal_site = transforms[site_name](marginal_site)

        site_summary = summary({site_name: marginal_site},
                               prob=0.5,
                               group_by_chain=group_by_chain)[site_name]
        if site_summary["mean"].shape:
            site_df = pd.DataFrame(site_summary, index=player_names)
        else:
            site_df = pd.DataFrame(site_summary, index=[0])
        if not diagnostics:
            site_df = site_df.drop(["n_eff", "r_hat"], axis=1)
        site_stats[site_name] = site_df.astype(float).round(2)

    return site_stats
Esempio n. 3
0
def get_summary_table(posterior, sites):
    """
    Return summarized statistics for each of the ``sites`` in the
    traces corresponding to the approximate posterior.
    """
    site_stats = {}
    for site_name in sites:
        marginal_site = posterior[site_name].cpu()

        site_summary = summary({site_name: marginal_site},
                               prob=0.5,
                               group_by_chain=group_by_chain)[site_name]
        if site_summary["mean"].shape:
            site_df = pd.DataFrame(site_summary)
        else:
            site_df = pd.DataFrame(site_summary, index=[0])
        site_stats[site_name] = site_df.astype(float).round(2)
    return site_stats
Esempio n. 4
0
 def summary(self, p=0.9, verbose=False):
     self.results = pd.DataFrame(summary(self.mcmc_res._samples, prob=0.9))
     if verbose: print(self.results)
     return self.results