'Gamma deviance function
Parameters
endog : array-like
Endogenous response variable
mu : array-like
Fitted mean response variable
iweights : array-like
1d array of weights. The default is 1.
scale : float, optional
An optional scale argument. The default is 1.
Returns
deviance : float
Deviance function as defined below
Notes
.. math::
D = 2 * \sum_i iweights_i *
((Y_i - \mu_i)/\mu_i - \log(Y_i / \mu_i)) / scale'

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

    endog_mu = self._clean((endog / mu))
    return ((2 * np.sum((iweights * (((endog - mu) / mu) - np.log(endog_mu))))) / scale)
