【发布时间】:2013-02-05 21:11:17
【问题描述】:
我有一个包含 17 列(每列一个基因)和 34 行(每行一个患者)的数据框
Patient EXO1 MLH1 MSH2 MSH3 MSH6 PCNA PMS1 PMS2 POLE POLE2 POLE3 POLH RFC2
1651109 0 0 1 1 1 1 1 1 1 0 1 0 0
1651648 0 1 1 1 1 0 1 0 1 0 0 1 1
........
数据框的名称是testdb。
然后我运行
res=princomp(testdb);
summary(res);
这表明
Importance of components:
Comp.1 Comp.2 Comp.3 Comp.4 Comp.5
Standard deviation 0.6577676 0.4757815 0.4138278 0.39002636 0.37679135
Proportion of Variance 0.2822533 0.1476757 0.1117206 0.09923892 0.09261812
Cumulative Proportion 0.2822533 0.4299290 0.5416497 0.64088859 0.73350672
....
名字是comp.1comp.2comp.3....
如何将名称映射回基因名称?
我知道biplot(res) 会在输出图上打印一些基因,但这显然不是获取基因名称的正确方法。
【问题讨论】:
-
主成分是所有变量的组合,将它们映射回原始变量是没有意义的。您希望从 PCA 分析中得到什么?
-
没有。 PCA 应该让我知道哪些变量是主要贡献者。如果不是,我不知道为什么要发明 PCA。后向/前向变量选择足以告诉主要贡献者,但受变量进入模型的顺序影响。 PCA 对订单不敏感。
-
@user1143669 PCA 让您知道哪些变量是数据中最大方差的主要贡献者。沿着这些方差的正交向量是您的主要成分。变量对每台 PC 的贡献由加载矩阵 (
? loadings) 表示。 @Marius 是绝对正确的:除非您的加载矩阵不是单位矩阵,否则将特定变量映射回某些 PC 根本没有意义。 -
顺便说一句:看起来你的变量不是正态分布的,而是二进制性质的。您应该重新考虑 PCA 是否适合您的数据。 (二进制)判别分析可能更合适。 stats.stackexchange.com/questions/16331/… 是进一步阅读的好入门书。