【发布时间】:2013-11-04 16:46:25
【问题描述】:
我是 R 的新用户,我尝试使用 R 对我的数据集进行 PCA。数据的维度是 20x10000,即特征数是 10000,个体数是 20。似乎 prcomp() 不能准确处理数据,因为计算的特征向量和新数据的维度是 20x20 和 10000x20,而不是 10000x10000 和 20x10000。我也尝试了 FactoMineR 库,但结果看起来它也失去了一些维度。有没有办法对这样的数据进行 PCA 分析? :(
【问题讨论】:
-
prcomp可以处理特征多于观察的数据集,我自己已经做过好几次了。您能否添加一个失败代码的虚拟示例来帮助我们定位问题?会不会是缺失值造成的? -
这是一个编程问题还是一个统计问题?如果是后者,我建议将其移至 crossvalidated.com。
-
@Backlin 实际上,我想做的是减少数据集的维度,删除优先级较低的特征。为此,我只是尝试了“prcomp(X)”,但没有任何选项,其中 dim(X)=20x10000。我只能找到 dim(prcomp(X)$rot)=10000x20 和 dim(prcomp(X)$x)=20x20。 dim(prcomp(X)$rot)=10000x10000 和 dim(prcomp(X)$x)=20x10000 对吗?我也尝试手动查找特征向量,但输出中有很多 NaN..
-
听起来
prcomp工作正常。由于x(行)中有 20 个观测值,因此 PCA 投影的维度为 20。prcomp()$x是x在新空间中的坐标(20 个观测值作为行,坐标位于 20 个新基向量上又名 components 作为列)。prcomp()$rot保存了以原始空间(行)坐标表示的新基向量/分量(列)的定义。 -
@Backlin 我应该从 SVD 的角度考虑 prcomp() 。我只是试图找到维度为 10000x10000 的协方差矩阵的特征向量。由于您的解释,事情变得更加清晰。谢谢你。 :)