eri*_*fas 7 r bioinformatics pca ggbiplot
我正在尝试使用R对我的数据进行PCA分析,我找到了这个很好的指南,使用prcomp和ggbiplot.我的数据是两种样本类型,每种类型有三个生物重复(即6行)和大约20000个基因(即变量).首先,使用指南中描述的代码获取PCA模型不起作用:
>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部件,它工作正常,我得到一个模型.这是为什么,这是下面错误的原因?
> 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.即使只是使用基本代码,我得到一个错误和一个空的情节图像:
> ggbiplot(pca)
Error: invalid 'rot' value
这意味着什么,我该如何解决?是否与制作PCA的(非)规模有关,还是有所不同?我认为它必须与我的数据有关,因为如果我使用标准示例代码(下面),我会得到一个非常好的PCA图.
> 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]我已经上传了我的数据子集,当我不删除所有零并且在我执行时工作时,会给我错误.我以前没有使用要点,但我认为这是它.或者,这 ...
转置数据后,我能够复制您的错误.第一个错误是主要问题.PCA寻求最大化每个组件的方差,因此重要的是它不仅仅关注可能具有非常高的方差的一个变量.第一个错误:
Error in prcomp.default(tdf, center = T, scale. = T) : 
  cannot rescale a constant/zero column to unit variance
这告诉你一些变量的方差为零(即没有变化).看看PCA如何通过最大化方差来对事物进行分组,保留这些变量毫无意义.可以通过以下调用轻松删除它们:
df_f <- data[,apply(data, 2, var, na.rm=TRUE) != 0]
完成此过滤后,剩余的调用将正常工作
pca=prcomp(df_f,center=T,scale.=T)
ggbiplot(pca)