Почему мой расчет ковариации не точен - PullRequest
0 голосов
/ 02 декабря 2018

Я пытаюсь написать функцию для расчета ковариационной матрицы.Я получаю очень похожий ответ на встроенный np.cov(), но не совсем.Там, кажется, потеря точности и точности.Кто-нибудь знает, почему моя ковариационная матрица не такая точная и точная.

def cov_matrix(X):

   # initialize covariance matrix
   mat = np.zeros((X[0].size, X[0].size))

   # calculate mean of each column (this is a array)
   mu = np.mean(X, axis=0)

   # normalized data
   norm_X = X-mu

   # calculate covariance for each pair of columns in X
   for (i,j) in np.ndindex(mat.shape):
       mat[i, j] = np.dot(norm_X[:,i], norm_X[:,j])/len(X)

   return mat

# X is a 50*4 numpy array

# My function for covariance matrix
print(cov_matrix(X))

# Builtin np function for covariance matrix
print(np.cov(X.T))

Вывод:

Covariance matrix from cov_matrix():
array([[0.121764, 0.098292, 0.015816, 0.010336],
       [0.098292, 0.142276, 0.011448, 0.011208],
       [0.015816, 0.011448, 0.029504, 0.005584],
       [0.010336, 0.011208, 0.005584, 0.011264]])

Covariance matrix from np.cov():
array([[0.12424898, 0.10029796, 0.01613878, 0.01054694],
       [0.10029796, 0.14517959, 0.01168163, 0.01143673],
       [0.01613878, 0.01168163, 0.03010612, 0.00569796],
       [0.01054694, 0.01143673, 0.00569796, 0.01149388]])
...