Проблема с np.cov, результат другой - PullRequest
0 голосов
/ 26 марта 2020

У меня следующая проблема: я пытаюсь вычислить ковариационную матрицу для матрицы X, используя np.cov(). Однако результат отличается по сравнению с формулой np.linalg.inv(np.dot(X.T, X)). Используемый код выглядит следующим образом:

import numpy as np
x1 = np.arange(1, 11)
x2 = np.ones(len(x1))
X = np.c_[x2, x1]
cov1 = np.cov(X.T)
cov2 = np.linalg.inv(np.dot(X.T, X))
print(f"X=\n{X.T}\n")
print(f"cov1=\n{cov1}\n")
print(f"cov2=\n{cov2}\n")

Результат выглядит следующим образом

X=
[[ 1.  1.  1.  1.  1.  1.  1.  1.  1.  1.]
 [ 1.  2.  3.  4.  5.  6.  7.  8.  9. 10.]]

cov1=
[[0.         0.        ]
 [0.         9.16666667]]

cov2=
[[ 0.46666667 -0.06666667]
 [-0.06666667  0.01212121]]

Кто-нибудь знает, что такое причина наличия двух разных матриц? по идее они должны np.cov(X.T)==np.linalg.inv(np.dot(X.T, X)). Я пытался использовать np.cov(X.T, bias=True, ddof=1). Однако результат отличается от cov2. Спасибо

...