matlab中pca的系数不是p * p矩阵

时间:2015-06-18 19:21:03

标签: matlab pca

我的数据矩阵为X,即4999*37152。然后我在Matlab中使用这个命令: [coeff, score, latent, tsquared1, explained1] = pca(X);

输出:coeff37152*4998score4999*4998latent4998*1。根据{{​​3}},coeff应该是p * p。那我的代码有什么问题?

1 个答案:

答案 0 :(得分:2)

正如Matlab文档所说," X的行对应于观察,列对应于变量"。所以你喂的是一个只有4999个观测值的矩阵,用于37152次观测。几何上,在37152维空间中有4999个点。这些点包含在4998维仿射子空间中,因此Matlab在那里获得4998个方向(每个方向表示为具有37152个分量的向量)。

有关更多信息,请参阅统计网站:

MATLAB文档的编写假设您至少有与变量一样多的观察值,这就是人们通常使用PCA的方式。

当然,您的数据可能实际上有4个变量的37152个观测值,在这种情况下您需要转置X.