使用FactoMineR标记个人因子图(PCA)上的点

时间:2015-10-05 13:43:38

标签: r pca labeling

我使用FactoMineR运行PCA,似乎无法获得Individuals因子图上标记的各个点。我的数据集(“ExData.csv”)包含13行(标记为A到M)和10列(标记为N到W)的矩阵中的值。我正在运行以下内容:

mydata <- read.csv("ExData.csv",header=TRUE,row.names=1)
attach(mydata)

library(FactoMineR)
X <- cbind(N,O,P,Q,R,S,T,U,V,W)
res.pca <- PCA(X)

当PCA运行时,我得到个人因子图(PCA),其标记为1-13,而不是A谷M.变量因子图(PCA)正确标记负载N到W.

如何才能正确标记个人因子图(PCA)图上的各个点(即A到J)?

enter image description here

enter image description here

1 个答案:

答案 0 :(得分:1)

问题是您的矩阵X具有列名但没有行名。因此,列标签会显示在您的PCA图中,但您只需将行 indices 作为图中观察值的标识,而不是行名称。

以下是一个例子:

#install.packages("FactoMineR")
library(FactoMineR)
set.seed(1)

df <- data.frame(matrix(runif(13 * 10),
                        nrow = 13,
                        ncol = 10,
                        dimnames = list(LETTERS[1:13], LETTERS[14:23])))

attach(df)
X <- cbind(N, O, P, Q, R, S, T, U, V, W)

此时rownames(X)NULLPCA(X)只能使用行索引来标识其图表中的观察结果。

要解决此问题,只需将行名称添加到传递给X的矩阵PCA()

# restore row names
rownames(X) <- rownames(df)   # or something similar in your actual program
res.pca <- PCA(X)

结果如下:

enter image description here enter image description here