code: def loglike(self, endog, mu, freq_weights=1, scale=1.):
          r
  
          if np.shape(self.n) == () and self.n == 1:
              return scale * np.sum((endog * np.log(mu/(1 - mu) + 1e-200) +
                                     np.log(1 - mu)) * freq_weights)
          else:
              y = endog * self.n  # convert back to successes
              return scale * np.sum((special.gammaln(self.n + 1) -
                                     special.gammaln(y + 1) -
                                     special.gammaln(self.n - y + 1) + y *
                                     np.log(mu/(1 - mu)) + self.n *
                                     np.log(1 - mu)) * freq_weights)
docs: r"""
          The log-likelihood function in terms of the fitted mean response.
  
          Parameters
          ----------
          endog : array-like
              Endogenous response variable
          mu : array-like
              Fitted mean response variable
          freq_weights : array-like
              1d array of frequency weights. The default is 1.
          scale : float, optional
              Not used for the Binomial GLM.
  
          Returns
          -------
          llf : float
              The value of the loglikelihood function evaluated at
              (endog,mu,freq_weights,scale) as defined below.