'The log-likelihood function in terms of the fitted mean response.
Parameters
endog : array-like
Endogenous response variable
mu : array-like
The fitted mean response values
iweights : array-like
1d array of weights. The default is 1.
scale : float
The scale parameter. The default is 1.
Returns
llf : float
The value of the loglikelihood function evaluated at
(endog,mu,iweights,scale) as defined below.
Notes
Defined as:
.. math::
llf = \sum_i iweights_i * (Y_i * \log{(\alpha * \mu_i /
(1 + \alpha * \mu_i))} - \log{(1 + \alpha * \mu_i)}/
\alpha + Constant)
where :math:`Constant` is defined as:
.. math::
Constant = \ln \Gamma{(Y_i + 1/ \alpha )} - \ln \Gamma(Y_i + 1) -
\ln \Gamma{(1/ \alpha )}'

def loglike(self, endog, mu, iweights=1.0, scale=1.0):

    constant = ((special.gammaln((endog + (1 / self.alpha))) - special.gammaln((endog + 1))) - special.gammaln((1 / self.alpha)))
    return np.sum(((((endog * np.log(((self.alpha * mu) / (1 + (self.alpha * mu))))) - (np.log((1 + (self.alpha * mu))) / self.alpha)) + constant) * iweights))
