code: def evaluate(args, samples):
      # Print estimated values.
      names = {
          "basic_reproduction_number": "R0",
          "response_rate": "rho",
      }
      for name, key in names.items():
          mean = samples[key].mean().item()
          std = samples[key].std().item()
          logging.info(
              "{}: truth = {:0.3g}, estimate = {:0.3g} \u00B1 {:0.3g}".format(
                  key, getattr(args, name), mean, std
              )
          )
  
      # Optionally plot histograms.
      if args.plot:
          import matplotlib.pyplot as plt
          import seaborn as sns
  
          fig, axes = plt.subplots(2, 1, figsize=(5, 5))
          axes[0].set_title("Posterior parameter estimates")
          for ax, (name, key) in zip(axes, names.items()):
              truth = getattr(args, name)
              sns.distplot(samples[key], ax=ax, label="posterior")
              ax.axvline(truth, color="k", label="truth")
              ax.set_xlabel(key + " = " + name.replace("_", " "))
              ax.set_yticks(())
              ax.legend(loc="best")
          plt.tight_layout()
  
imports: import argparse
  import logging
  import math
  import re
  from collections import OrderedDict
  import torch
  import pyro
  import pyro.distributions
  import pyro.distributions.hmm
  import pyro.poutine
  from pyro.infer import MCMC, NUTS, config_enumerate, infer_discrete
  from pyro.infer.autoguide import init_to_value
  from pyro.ops.special import safe_log
  from pyro.ops.tensor_utils import convolve
  from pyro.util import warn_if_nan
label_desc: Use image node_id 13 for calling a global function with example usage: evaluate(args, samples) without return types