gpt4 book ai didi

r - prcomp 和 ggbiplot : invalid 'rot' value

转载 作者:行者123 更新时间:2023-12-04 11:23:43 26 4
gpt4 key购买 nike

我正在尝试使用 R 对我的数据进行 PCA 分析,我发现 this nice guide , 使用 prcompggbiplot .我的数据是两种样本类型,每种类型具有三个生物学重复(即 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,但我认为 this是吗。或 this ...

最佳答案

转置您的数据后,我能够复制您的错误。第一个错误是主要问题。 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)

关于r - prcomp 和 ggbiplot : invalid 'rot' value,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27016619/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com