2017-06-05 19 views
1

私は、ツールを持つ私のデータセットhereからバイプロットを生成するために、PCAを使用しているS-PlusはPCAバイプロット - アロー長

私のデータを実行するためのスクリプトです:

a= princomp(x = ~ ., data = Week.2.Mon.portsweep,scores=T,cor =F) 
a$loadings 
a$scores 
biplot(a,scale=F) 

バイプロット結果は here.

は、私の知る限りでは、私は次のようバイプロットを解釈:

  1. 左&底軸:PC1 & PC2のスコアを

  2. 右&上部軸:PC1 & PC2のローディング値

  3. 観察は黒色であり、パソコンのスコアに基づいてプロット

  4. 矢印ベクトルは、どの変数がほとんどのPCを占めるかを示します。

  5. 矢印名の位置は、PC1 & PC2

  6. 矢印長さのローディング値の組み合わせに基づいています - ?

しかし、私は矢印の長さが何であるかを知りません。 私は矢印の長さが分散の割合であるといういくつかの参考文献を読んでいます。本当?バイプロットグラフに基づいてどのように計算できますか?

あなたは私を助けてくれますか?ありがとう

答えて

0

私はstats:::biplot.princompstats:::biplot.defaultの中を見ました。
矢印の長さは次のように計算されます。

(1)biplotscale = Fオプションが指定されています。

# Data generating process 
set.seed(12345) 
library(MASS) 
n <- 100 
mu <- c(1,-2,-0.5) 
Sigma <- diag(rep(1,3)) 
X <- mvrnorm(n, mu=mu, Sigma=Sigma) 

pca <- princomp(X, cor=T, scores=T) 
biplot(pca, choices = 1:2, scale = F) 

# Calculates arrow lengths 
lam <- 1 
len <- t(t(pca$loadings[, 1:2]) * lam)*0.8 

# Plot arrows in green and see if overlap the red ones 
mapply(function(x,y) arrows(0, 0, x, y, col = "green", 
      length = .1), x=len[,1], y=len[,2]) 

enter image description here

(2)biplotscale = 0.5オプションが指定されています。

scale <- 0.5 
biplot(pca, choices = 1:2, scale = scale) 

lam <- (pca$sdev[1:2]*sqrt(pca$n.obs))^scale 
len <- t(t(pca$loadings[, 1:2]) * lam)*0.8 

mapply(function(x,y) arrows(0, 0, x, y, col = "green", length = .1), 
     len[,1], len[,2]) 

enter image description here

+0

まあ、私はそれを得た、ありがとうございました。 –