我正在尝试使用 R 对我的数据进行 PCA 分析,我发现这个很好的指南,使用prcomp
and 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] 我上传了我的数据子集,当我不删除所有零时,它给了我错误,而当我这样做时,它会工作。我以前没有使用过 gist,但我认为就是这样。或者这个...