因此,我阅读了有关pca的文档,并指出列按其方差的降序排列。但是,每当我拿一个例子的PCA并且我采用PCA矩阵的方差时,我都没有得到特定的顺序。一个简单的例子就是例子:
pc = pca(x)
返回
pc =
0.0036 -0.0004
0.0474 -0.0155
0.3149 0.3803
0.3969 -0.1930
0.3794 0.3280
0.5816 -0.2482
0.3188 0.1690
-0.1343 0.7835
0.3719 0.0785
0.0310 -0.0110
含义第一列应为PC1,第二列应为PC2,意味着var(PC1)> var(PC2),但是当我得到方差时,情况显然不是这样。
var(pc)
ans =
0.0518 0.0932
有人能说清楚为什么PC1的方差不是最大的吗?
答案 0 :(得分:2)
The docs表示正在调用
COEFF = pca(x)
将返回 p -by- p 矩阵,因此您的结果相当令人惊讶(编辑: 这是因为您的与列相比,x数据集具有如此少的行(即类似于具有10个未知数且仅有3个等式))。无论哪种方式,当他们谈论方差时,他们并不意味着每个组件的系数的方差,而是在投射到每个主要组件之后的x
数据列的方差。文档声明输出score
包含这些预测,因此要查看您应该执行的降序变化:
[COEFF, score, latent] = pca(x)
var(score)
您将看到var(score)
等于第三个输出latent
,并且确实按降序排列。
您的误解是您正在尝试计算主成分矢量的系数的方差。这些只是单位向量,用于描述投影数据的超平面方向,使得生成的投影数据具有最大方差。这些向量 ARE 按顺序排列,以便投影到每个描述的超平面上的原始数据将按方差的降序排列,但方差主成分矢量(score
的系数或代码COEFF
的系数的投影数据(pc
)和 NOT )。