我的数据矩阵为X
,即4999*37152
。然后我在Matlab中使用这个命令:
[coeff, score, latent, tsquared1, explained1] = pca(X);
输出:coeff
为37152*4998
,score
为4999*4998
,latent
为4998*1
。根据{{3}},coeff应该是p * p。那我的代码有什么问题?
答案 0 :(得分:2)
正如Matlab文档所说," X的行对应于观察,列对应于变量"。所以你喂的是一个只有4999个观测值的矩阵,用于37152次观测。几何上,在37152维空间中有4999个点。这些点包含在4998维仿射子空间中,因此Matlab在那里获得4998个方向(每个方向表示为具有37152个分量的向量)。
有关更多信息,请参阅统计网站:
MATLAB文档的编写假设您至少有与变量一样多的观察值,这就是人们通常使用PCA的方式。
当然,您的数据可能实际上有4个变量的37152个观测值,在这种情况下您需要转置X.