Matlab PCA 主成分阶数

标签 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 的方差不是最大的?

最佳答案

The docs声明调用

COEFF = pca(x)

将返回一个pp矩阵,所以你的结果相当令人惊讶(编辑:这是因为你的x 数据集的行数比列数少(即类似于有 10 个未知数且只有 3 个方程)。不管怎样,当他们谈论方差时,他们并不是指每个分量的系数的方差,而是指投影到每个主分量后x数据列的方差。文档指出输出 score 包含这些预测,因此要查看您应该执行的降序方差:

[COEFF, score, latent] = pca(x)
var(score)

您将看到 var(score) 等于第三个输出 latent 并且确实按降序排列。

您的误解是您正在尝试计算主成分向量的系数的方差。这些只是单位向量,描述了在其上投影数据的超平面的方向,以便生成的投影数据具有最大方差。这些向量按顺序排列,投影到每个描述的超平面上的原始数据将按方差降序排列,但方差投影数据 (score) 和主成分向量 (COEFF) 系数的NOT 或您的代码pc)。

关于Matlab PCA 主成分阶数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26348803/

相关文章:

c - 何时释放 mex 文件中分配的内存

R:箱线图 - 如何向下移动 x 轴标签?

sql-server - sp_updatestats 是否会导致 SQL Server 2005 中的表无法访问?

matlab - 在 Matlab 中配置双标图以区分散点图

r - 如何使用 FactoMineR 创建双标图?

python-3.x - sklearn - PCA 的标签点

matlab - 如何在 MATLAB 中实现 3D boolean 运算以像在 Blender(或任何其他 3D 软件)中那样创建交集?

matlab - 在输出向量的匿名函数中创建可变数量的项

matlab - 如何更改 MATLAB 的默认格式?

python - 带 GPS 数据的加权 K 均值