首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >prcomp和ggbi图:无效的“rot”值

prcomp和ggbi图:无效的“rot”值
EN

Stack Overflow用户
提问于 2014-11-19 12:16:19
回答 1查看 6K关注 0票数 7

我试图用R对我的数据进行PCA分析,我找到了这个很好的向导,使用prcompggbiplot。我的数据是两个样本类型,三个生物复制,每个(即6行)和大约20000个基因(即变量)。首先,使用指南中描述的代码获取PCA模型不起作用:

代码语言:javascript
复制
>pca=prcomp(data,center=T,scale.=T)
Error in prcomp.default(data, center = T, scale. = T) : 
cannot rescale a constant/zero column to unit variance

但是,如果我删除了scale. = T部分,它就可以正常工作,并得到一个模型。这是为什么,这是造成下面错误的原因吗?

代码语言:javascript
复制
> summary(pca)
Importance of components:
                             PC1       PC2       PC3       PC4       PC5
Standard deviation     4662.8657 3570.7164 2717.8351 1419.3137 819.15844
Proportion of Variance    0.4879    0.2861    0.1658    0.0452   0.01506
Cumulative Proportion     0.4879    0.7740    0.9397    0.9849   1.00000

第二,绘制PCA图。即使仅仅使用基本代码,我也会得到一个错误和一个空的情节映像:

代码语言:javascript
复制
> ggbiplot(pca)
Error: invalid 'rot' value

这是什么意思,我该怎么解决呢?这与PCA的(非)尺度有关吗?还是有什么不同?我想,这一定是我的数据,因为如果我使用一个标准的示例代码(下面),我会得到一个非常好的PCA图。

代码语言:javascript
复制
> data(wine)
> wine.pca=prcomp(wine,scale.=T)
> print(ggbiplot(wine.pca, obs.scale = 1, var.scale = 1, groups = wine.class, 
  ellipse = TRUE, circle = TRUE))

编辑1我尝试过用两种方式对我的数据进行细分: 1)删除所有列,所有行为0,2)删除所有列,如果任何行为0。第一个子设置仍然给出了scale错误,但没有删除任何0的列。为什么呢?这对我的PCA有什么影响?

另外,我尝试对原始数据(非缩放)和上面的子设置数据使用普通的biplot命令,并且在这两种情况下都可以工作。所以这和ggbiplot有关

编辑2我已经上传了我的数据子集,当我不删除所有的零时给出错误,并且当我删除时工作。我以前没有使用过gist,但我认为是它。或者..。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-12-04 13:34:17

在转换您的数据之后,我能够复制您的错误。第一个错误是主要问题。PCA力求使每个分量的方差最大化,所以重要的是不要只关注一个可能具有很高方差的变量。第一个错误:

代码语言:javascript
复制
Error in prcomp.default(tdf, center = T, scale. = T) : 
  cannot rescale a constant/zero column to unit variance

这告诉你,你的一些变量的方差为零(即没有变化)。看看PCA是如何通过最大化方差来对事物进行分组的,保留这些变量是没有意义的。可以通过以下调用轻松地删除它们:

代码语言:javascript
复制
df_f <- data[,apply(data, 2, var, na.rm=TRUE) != 0]

完成此筛选之后,其余的调用将正常工作。

代码语言:javascript
复制
pca=prcomp(df_f,center=T,scale.=T)
ggbiplot(pca)
票数 11
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27016619

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档