Я пытаюсь вычислить t-квадрат статистики Хотеллинга в Pytohn после выполнения PCA и сохранения только двух составляющих.Я использую sklearn и numpy.
def get_pca(X, n=2, scale=True):
if scale:
scale = StandardScaler()
scale.fit(X)
X_scaled = scale.transform(X)
else:
X_scaled = X
pca = PCA(n_components=n)
pca.fit(X_scaled)
return scale, pca, pca.transform(X_scaled)
def get_mu(T):
return [np.mean(T[:, k]) for k in range(T.shape[1])]
def get_SD(pcs, mu):
sigma = np.linalg.inv(np.cov(pcs.T))
SD = np.zeros(len(pcs), dtype='float')
for i in range(len(pcs)):
temp = np.subtract(pcs[i], mu)
SD[i] = temp.dot(sigma).dot(temp.T)
return SD
Но я думаю, что с этим что-то не так.Правильно ли выполнен расчет в моем коде?