code: def print_summary(self, decimals=2, **kwargs):
          
          justify = string_justify(18)
          print(self)
          print("{} = {}".format(justify("number of subjects"), self.event_observed.shape[0]))
          print("{} = {}".format(justify("number of events"), np.where(self.event_observed)[0].shape[0]))
          print("{} = {:.{prec}f}".format(justify("log-likelihood"), self._log_likelihood, prec=decimals))
          print(
              "{} = {}".format(
                  justify("hypothesis"),
                  ", ".join(
                      "%s != %d" % (name, iv) for (name, iv) in zip(self._fitted_parameter_names, self._initial_values)
                  ),
              )
          )
  
          for k, v in kwargs.items():
              print("{} = {}\n".format(justify(k), v))
  
          print(end="\n")
          print("---")
  
          df = self.summary
          print(
              df.to_string(
                  float_format=format_floats(decimals),
                  formatters={"p": format_p_value(decimals), "exp(coef)": format_exp_floats(decimals)},
              )
          )
docs: Print summary statistics describing the fit, the coefficients, and the error bounds.
  
          Parameters
          -----------
          decimals: int, optional (default=2)
              specify the number of decimal places to show
          kwargs:
              print additional metadata in the output (useful to provide model names, dataset names, etc.) when comparing
              multiple outputs.