У меня следующая проблема: я пытаюсь вычислить ковариационную матрицу для матрицы 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. Спасибо