Обратное для вычислений c SE повышает LinAlgError: Сингулярная матрица - PullRequest
0 голосов
/ 31 марта 2020

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

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

, но когда я применяю ее к моей проблеме регрессии logisti c, я получаю 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

Мне нужны стандартные ошибки для коэффициентов для проверки гипотезы.

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