2016-09-19 28 views
2

Rの主成分分析を初めて勉強しました。私の質問はかなり素朴です。私はRの関数 'prcomp'を使って行列(A)のPCAを行った。今ではAのPC1とPC2のPCA空間にベクトルをプロットしたい。このベクトルのプロットについてはどうすればよいのだろうか?RのPCA空間に新しいベクトルをプロットする方法

答えて

1

使用バイプロット(赤arrrowsは、元の空間の次元です):

a <- princomp(iris[1:4]) 
biplot(a, cex=0.5) 

enter image description here

次のように、あなたも自分でPCA空間に投影を行うことができます。

library(ggplot2) 
data <- iris[1:4] 
labels <- iris[,5] 
res <- princomp(data) 
res.proj <- as.matrix(data) %*% res$loadings[,1:2] 
ggplot(as.data.frame(res.proj), aes(Comp.1, Comp.2, col=labels)) + geom_point() 

prcomp(数値的に安定しています)を使用した同じプロット:

data <- iris[1:4] 
labels <- iris[,5] 
res <- prcomp(data) 
res.proj <- as.matrix(data) %*% res$rotation[,1:2] 
ggplot(as.data.frame(res.proj), aes(PC1, PC2, col=labels)) + geom_point() 

enter image description here

ファンシーなggbiplot:

library(ggbiplot) 
g <- ggbiplot(res, obs.scale = 1, var.scale = 1, 
       groups = labels, ellipse = TRUE, 
       circle = TRUE) 
g <- g + scale_color_discrete(name = '') 
g <- g + theme(legend.direction = 'horizontal', 
       legend.position = 'top') 
print(g) 

enter image description here

+2

それは 'prcomp'を使用すると、R.' princomp'で優先的な方法は、S-PLUSとの互換性のために存在していることは注目に値します。 –

+0

数値安定性が必要な場合は、svdを使用するので代わりにprcompを使用してください。 –

関連する問題