'Poisson model Hessian matrix of the loglikelihood
Parameters
params : array-like
The parameters of the model
Returns
hess : ndarray, (k_vars, k_vars)
The Hessian, second derivative of loglikelihood function,
evaluated at `params`
Notes
.. math:: \frac{\partial^{2}\ln L}{\partial\beta\partial\beta^{\prime}}=-\sum_{i=1}^{n}\lambda_{i}x_{i}x_{i}^{\prime}
where the loglinear model is assumed
.. math:: \ln\lambda_{i}=x_{i}\beta'

def hessian(self, params):

    offset = getattr(self, 'offset', 0)
    exposure = getattr(self, 'exposure', 0)
    X = self.exog
    L = np.exp(((np.dot(X, params) + exposure) + offset))
    return (- np.dot((L * X.T), X))
