Reputation: 932
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
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