我通常使用该函数执行主成分分析,并使用(或仅使用提取)prcomp
以一种奇特的方式绘制结果。ggbiplot
ggplot2
pca.obj$x
像这样:
#install_github("vqv/ggbiplot")
library(ggbiplot)
data(iris)
pca.obj <- prcomp(iris[,1:4], center=TRUE, scale.=TRUE)
P <- ggbiplot(pca.obj,
obs.scale = 1,
var.scale=1,
ellipse=T,
circle=F,
varname.size=3,
var.axes=T,
groups=iris$Species, #no need for coloring, I'm making the points invisible
alpha=0) #invisible points, I add them below
P$layers <- c(geom_point(aes(color=iris$Species), cex=5), P$layers) #add geom_point in a layer underneath (only way I have to change the size of the points in ggbiplot)
png(filename="test.png", height=600, width=600)
print(#or ggsave()
P
)
dev.off()
但是,现在我面临具有一定数量 NA 的数据,并且我正在使用pcaMethodspca
包中的包装函数,应用该方法(一种能够处理少量缺失值的迭代方法)。nipals
pca
返回 class 的对象pcaRes
,并ggbiplot
返回以下错误:
#introduce NAs
iris$Sepal.Length[sample(1:150, 5)] <- NA
iris$Sepal.Width[sample(1:150, 5)] <- NA
iris$Petal.Length[sample(1:150, 5)] <- NA
iris$Petal.Width[sample(1:150, 5)] <- NA
#pca.obj2 <- prcomp(iris[,1:4], center=TRUE, scale.=TRUE) #cannot use prcomp with NAs
#source("https://bioconductor.org/biocLite.R")
#biocLite("pcaMethods")
library(pcaMethods)
pca.obj2 <- pca(iris[,1:4], method="nipals", nPcs=3, center=TRUE, scale.=TRUE)
class(pca.obj2)
ggbiplot(pca.obj2)
ggbiplot(pca.obj2) 中的错误:需要类 prcomp、princomp、PCA 或 lda 的对象
我的问题是:
如何应用ggbiplot
到pcaRes
对象?
如何将此对象转换为prcomp
对象?
我可以使用另一个函数而不是ggbiplot
接受一个pcaRes
对象来获得相同类型的绘图吗?
我应该用变量的平均值替换 NA 值并prcomp
像往常一样应用函数吗?
非常感谢!