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

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

我正在使用 statsmodels.discrete.discrete_model.NegativeBinomial 进行负二项式回归任务,因此我使用以下脚本创建了一个模型:

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

这里我的 y_trainX_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

有人可以帮我解决这个问题吗??

我认为这是一个过度参数化问题。看起来您有 276 个样本和 252 个特征,这表明模型对于小样本来说过于复杂。 Singular matrix 警告表示模型未找到与该模型的最佳收敛。

我会回去找出您对建模感兴趣的少量功能。