code: def fit(self, ini_betas=None, tol=1.0e-6, max_iter=200, solve='iwls'):
          
          self.fit_params['ini_betas'] = ini_betas
          self.fit_params['tol'] = tol
          self.fit_params['max_iter'] = max_iter
          self.fit_params['solve'] = solve
          if solve.lower() == 'iwls':
              params, predy, w, n_iter = iwls(
                  self.y, self.X, self.family, self.offset, self.y_fix, ini_betas, tol, max_iter)
              self.fit_params['n_iter'] = n_iter
          return GLMResults(self, params.flatten(), predy, w)
docs: Method that fits a model with a particular estimation routine.
  
          Parameters
          ----------
  
          ini_betas     : array
                          k*1, initial coefficient values, including constant.
                          Default is None, which calculates initial values during
                          estimation.
          tol:            float
                          Tolerence for estimation convergence.
          max_iter       : integer
                          Maximum number of iterations if convergence not
                          achieved.
          solve         :string
                         Technique to solve MLE equations.
                         'iwls' = iteratively (re)weighted least squares (default)