statsmodels.discrete.discrete_model.NegativeBinomial.fit () поднимает LinAlgError: «Сингулярная матрица» - PullRequest
0 голосов
/ 23 июня 2018

Я использую statsmodels.discrete.discrete_model.NegativeBinomial для задания отрицательной биномиальной регрессии, поэтому я создал модель, используя следующий скрипт:

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

Здесь мои y_train & X_train имеют тип <class 'numpy.ndarray'> и вформа (276,) & (276, 252) соответственно.

Моя проблема в том, что когда я звоню regr.fit(), возникает ошибка numpy.linalg.linalg.LinAlgError: Singular matrix.Вот мой след стека:

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

Может кто-нибудь помочь мне это исправить ??

1 Ответ

0 голосов
/ 23 июня 2018

Я считаю, что это проблема сверхпараметризации.Похоже, что у вас есть 276 выборок с 252 функциями, что предполагает слишком сложную модель для небольшой выборки.Предупреждение Singular matrix указывает на то, что модель не нашла оптимальной конвергенции с этой моделью.

Я хотел бы вернуться и выяснить гораздо меньшее количество функций, которые вас интересуют в моделировании.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...