逻辑SE的逆运算会产生LinAlgError:奇异矩阵

时间:2020-03-30 22:23:22

标签: python logistic-regression standard-error

我想在我的逻辑回归模型中计算某些系数的标准误差。现在,我找到了这个有用的链接:

https://stats.stackexchange.com/questions/89484/how-to-compute-the-standard-errors-of-a-logistic-regressions-coefficients

但是当我将其应用于逻辑回归问题时,我得到LinAlgError: Singular matrix。无论如何,我可以改为使用#covLogit = np.linalg.pinv(np.dot(np.dot(X_design.T, V), X_design))来强制进行逆计算,但是我不知道这是否是正确的解决方案。

但是,为什么我会首先收到错误消息?。

我不能相信我的矩阵没有逆。.我很少发生这种情况。我的矩阵X_train也很稀疏。

predProbs is np (1896, 1) float32
X_train  is np (1896, 300) float32
# source: https://stats.stackexchange.com/questions/89484/how-to-compute-the-standard-errors-of-a-logistic-regressions-coefficients
# Design matrix -- add column of 1's at the beginning of your X_train matrix
X_design = np.hstack([np.ones((X_train.shape[0], 1)), X_train])

# Initiate matrix of 0's, fill diagonal with each predicted observation's variance
V = np.diagflat(np.product(predProbs, axis=1))


# Covariance matrix
covLogit = np.linalg.inv(np.dot(np.dot(X_design.T, V), X_design))

我得到了错误

  File "<ipython-input-47-1c8cccf8d818>", line 11, in <module>
    covLogit = np.linalg.inv(np.dot(np.dot(X_design.T, V), X_design))

  File "<__array_function__ internals>", line 6, in inv

  File "anaconda3\lib\site-packages\numpy\linalg\linalg.py", line 551, in inv
    ainv = _umath_linalg.inv(a, signature=signature, extobj=extobj)

  File "anaconda3\lib\site-packages\numpy\linalg\linalg.py", line 97, in _raise_linalgerror_singular
    raise LinAlgError("Singular matrix")

LinAlgError: Singular matrix

对于假设检验,我需要系数的标准误差。

0 个答案:

没有答案
相关问题