'Gamma deviance residuals
Parameters
endog : array-like
Endogenous response variable
mu : array-like
Fitted mean response variable
scale : float, optional
An optional argument to divide the residuals by sqrt(scale).
The default is 1.
Returns
resid_dev : array
Deviance residuals as defined below
Notes
.. math::
resid\_dev_i = sign(Y_i - \mu_i) \sqrt{2 *
((Y_i - \mu_i) / \mu_i - \log(Y_i / \mu_i))/scale}'

def resid_dev(self, endog, mu, scale=1.0):

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