Vajira Prabuddhaka
Vajira Prabuddhaka

Reputation: 932

statsmodels.discrete.discrete_model.NegativeBinomial.fit() raises LinAlgError: "Singular matrix"

I'm using statsmodels.discrete.discrete_model.NegativeBinomial for negative binomial regresson task, So I created a model using following script:

from statsmodels.discrete.discrete_model import NegativeBinomial
#create a model
regr = NegativeBinomial(y_train, X_train)

Here my y_train & X_train have type <class 'numpy.ndarray'> and in shape of (276,) & (276, 252) respectively.

My problem is when I call regr.fit() it raises numpy.linalg.linalg.LinAlgError: Singular matrix error. Here is my stack trace:

Traceback (most recent call last):
  File "/home/vajira/PycharmProjects/dengAI/neg_binomial_custom.py", line 137, in <module>
    regr_iq = regr_run(nptrain_iq, degree_iq, exploring=True)
  File "/home/vajira/PycharmProjects/dengAI/neg_binomial_custom.py", line 92, in regr_run
    regr.fit()
  File "/home/vajira/ipython/lib/python3.6/site-packages/statsmodels/discrete/discrete_model.py", line 2756, in fit
    res_poi = mod_poi.fit(**optim_kwds_prelim)
  File "/home/vajira/ipython/lib/python3.6/site-packages/statsmodels/discrete/discrete_model.py", line 1034, in fit
    disp=disp, callback=callback, **kwargs)
  File "/home/vajira/ipython/lib/python3.6/site-packages/statsmodels/discrete/discrete_model.py", line 220, in fit
    disp=disp, callback=callback, **kwargs)
  File "/home/vajira/ipython/lib/python3.6/site-packages/statsmodels/base/model.py", line 466, in fit
    full_output=full_output)
  File "/home/vajira/ipython/lib/python3.6/site-packages/statsmodels/base/optimizer.py", line 191, in _fit
    hess=hessian)
  File "/home/vajira/ipython/lib/python3.6/site-packages/statsmodels/base/optimizer.py", line 278, in _fit_newton
    newparams = oldparams - np.dot(np.linalg.inv(H),
  File "/home/vajira/ipython/lib/python3.6/site-packages/numpy/linalg/linalg.py", line 528, in inv
    ainv = _umath_linalg.inv(a, signature=signature, extobj=extobj)
  File "/home/vajira/ipython/lib/python3.6/site-packages/numpy/linalg/linalg.py", line 89, in _raise_linalgerror_singular
    raise LinAlgError("Singular matrix")
numpy.linalg.linalg.LinAlgError: Singular matrix

Can someone help me to fix this??

Upvotes: 0

Views: 1143

Answers (1)

sacuL
sacuL

Reputation: 51335

I believe that this is an overparametrization issue. It appears that you have 276 samples with 252 features, which suggests too complex a model for a small sample. The Singular matrix warning indicates that the model did not find an optimal convergence with this model.

I would go back and figure out a much smaller number of features you are interested in modelling.

Upvotes: 1

Related Questions