【发布时间】:2020-04-23 02:16:34
【问题描述】:
当我将statsmodels.multivariate.pca.PCA 应用于某些数据时,我发现生成的特征值之和不等于数据的总方差。我正在使用以下代码
import numpy as np
import statsmodels.api as sm
corr_matrix = np.array([
[1, 0.8, 0.4],
[0.8, 1, 0.6],
[0.4, 0.6, 1]])
Z = np.random.multivariate_normal([0,0,0], corr, 1000)
pc = sm.PCA(Z, standardize=False, demean=False, normalize=False)
pc.eigenvals.sum()
结果(在给定的随机样本中)是2994.51488403581,而我希望这加起来是3。
我错过了什么?
加1
似乎当对数据X(即使用矩阵X^TX)进行PCA时,方差和与特征值之间的关系不再成立,只有在对数据进行PCA时当特征值之和等于方差之和时,协方差矩阵(即X^TX/n),即trace(X^TX/n) = sum(eigenvalues)。我希望在 PCA 上发现的所有帖子中都能更清楚地说明这一点。
【问题讨论】:
标签: python pca statsmodels