你如何绘制PCA的前几个值

时间:2018-06-17 21:29:25

标签: r pca

我已经运行了一个具有中等大小数据集的PCA,但我只想从该分析中可视化一定数量的点,因为它们来自重复观察,我想看看配对观察到每个点的距离有多近其他的情节。我已经设置了它,以便前18个人是我想要绘制的那些人,但我似乎不能只绘制前18个点,而不仅仅分析前18个而不是整个数据集(43个人)。

# My data file
TrialsMR<-read.csv("NER_Trials_Matrix_Retrials.csv", row.names = 1)
# I ran the PCA of all of my values (without the categorical variable in col 8)
R.pca <- PCA(TrialsMR[,-8], graph = FALSE)
# When I try to plot only the first 18 individuals with this method, I get an error
fviz_pca_ind(R.pca[1:18,], 
             labelsize = 4, 
             pointsize = 1, 
             col.ind = TrialsMR$Bands, 
             palette = c("red", "blue", "black", "cyan", "magenta", "yellow", "gray", "green3", "pink" ))
# This is the error
Error in R.pca[1:18, ] : incorrect number of dimensions 

18个人每个都配对,所以只使用9种颜色不应该导致错误(我希望)。

有人可以帮助我从我的整个数据集的PCA中仅绘制前18个点吗?

我的数据框在结构

中与此类似
TrialsMR
      Trees Bushes Shrubs Bands
JOHN1     1      4     18  BLUE
JOHN2     2      6     25  BLUE
CARL1     1      3     12 GREEN
CARL2     2      4     15 GREEN
GREG1     1      1     15   RED
GREG2     3     11     26   RED
MIKE1     1      7     19  PINK
MIKE2     1      1     25  PINK

其中每个波段对应于已经过两次测试的特定个体。

1 个答案:

答案 0 :(得分:1)

您使用错误的参数指定个人。使用select.ind选择所需的个人,例如:

data(iris)                                                  # test data

如果要根据特定的分组条件重命名行,以便在图中轻松识别。例如。让 setosa 从1开头,类似于100-199,类似于200-299中的 versicolor 和300-399中的 virginica 。在 PCA 之前完成。

new_series <- c(101:150, 201:250, 301:350)                # there are 50 of each 
rownames(iris) <- new_series
R.pca <- prcomp(iris[,1:4],scale. = T)                    # pca

library(factoextra)

fviz_pca_ind(X= R.pca, labelsize = 4, pointsize = 1, 
             select.ind= list(name = new_series[1:120]),  # 120 out of 150 selected
             col.ind = iris$Species ,
             palette = c("blue", "red", "green" ))

enter image description here

在使用新功能之前,

始终 首先参考R文档。

  

R文档: fviz_pca {factoextra}

     

X
  PCA类的一个对象[FactoMineR]; prcomp和princomp [stats]; dudi和pca [ade4]; expOutput / epPCA [ExPosition]。

     

select.ind,select.var
  选择要绘制的个体/变量。允许的值为NULL或包含参数name,cos2或contrib

的列表

对于您的特定虚拟数据,应执行以下操作:

 R.pca <- prcomp(TrailsMR[,1:3], scale. = TRUE)

 fviz_pca_ind(X= R.pca, 
              select.ind= list(name = row.names(TrialsMR)[1:4]),  # 4 out of 8
              pointsize = 1, labelsize = 4,
              col.ind = TrialsMR$Bands,
              palette = c("blue", "green" )) + ylim(-1,1)

DD PCA: TrialsMR

虚拟数据:

TrialsMR <- read.table( text = "Trees Bushes Shrubs Bands
JOHN1     1      4     18  BLUE
JOHN2     2      6     25  BLUE
CARL1     1      3     12 GREEN
CARL2     2      4     15 GREEN
GREG1     1      1     15   RED
GREG2     3     11     26   RED
MIKE1     1      7     19  PINK
MIKE2     1      1     25  PINK", header = TRUE)