class_docstr: Negative Binomial regression
  
  Parameters
  ----------
  endog : array_like
      1-d array of the response variable.
  exog : array_like
      `exog` is an n x p array where n is the number of observations and p
      is the number of regressors including the intercept if one is
      included in the data.
  ll_type: str
      log-likelihood type
      `nb2`: Negative Binomial type-2 (most common)
      `nb1`: Negative Binomial type-1
      `nbp`: Negative Binomial type-P (Greene, 2008)
      `nbt`: Left-truncated Negative Binomial (type-2)
      `geom`: Geometric regression model
  C: int
      Cut-point for `nbt` model
code: def fit(self, start_params=None, maxiter=10000, maxfun=5000, **kwds):
      if start_params is None:
          countfit = super().fit(
              start_params=self.start_params_default,
              maxiter=maxiter,
              maxfun=maxfun,
              **kwds,
          )
      else:
          countfit = super().fit(
              start_params=start_params,
              maxiter=maxiter,
              maxfun=maxfun,
              **kwds,
          )
      countfit = CountResults(self, countfit)
      return countfit
  
imports: from urllib.request import urlopen
  import numpy
  from numpy.testing import assert_almost_equal
  from scipy.special import digamma
  from scipy.stats import nbinom
  import pandas
  import patsy
  from statsmodels.base.model import GenericLikelihoodModel
  from statsmodels.base.model import GenericLikelihoodModelResults
label_desc: Use image node_id 3 for calling the NBin obj's underlying member method code with example usage: obj.fit(start_params, maxiter, maxfun) and returns: countfit