Matlab PCA主要组件的顺序

时间:2014-10-13 21:01:08

标签: matlab statistics pca numerical-analysis

因此,我阅读了有关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的方差不是最大的吗?

1 个答案:

答案 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 )。