PCA:双标图中的分数与负荷

时间:2015-05-16 13:11:51

标签: r plot pca

在这个问题中,我正在调查双标图的解释和PCA中的负荷/分数的含义:What are the principal components scores?

根据第一个答案的作者,分数是:

      x       y
John  -44.6  33.2
Mike  -51.9   48.8
Kate  -21.1   44.35

根据second answer关于"对双极的四轴的解释":

  

左轴和下轴显示[标准化]主成分   分数;顶部和右侧轴显示负载。

因此,从理论上来说,绘制了双标图"什么是主成分得分"我应该在左下轴上得分:

      x       y
John  -44.6  33.2
Mike  -51.9   48.8
Kate  -21.1   44.35

并在右侧和顶部装载。

我输入了他在R中提供的数据:

DF<-data.frame(Maths=c(80, 90, 95), Science=c(85, 85, 80), English=c(60, 70, 40), Music=c(55, 45, 50))
pca = prcomp(DF, scale = FALSE)
biplot(pca)

这是我得到的情节: 首先,左轴和下轴表示主要成分的载荷。顶部和右侧轴代表分数,但它们与作者从帖子中提供的分数不对应(3个名称Kate在情节上有正分数但在PC1上有一个负数,根据Tony Breyal在问题的第一个答案中帖子)。

如果我正在做或理解错误,我的错误在哪里?

enter image description here

1 个答案:

答案 0 :(得分:3)

你错过了一些细微差别:

  1. biplot.princomp功能
  2. 出于某种原因biplot.princomp不同地缩放加载和得分轴。所以你看到的分数会被改变。要获得实际值,您可以调用biplot函数,如下所示:

    biplot(pca, scale=0)
    

    请参阅help(biplot.princomp)了解更多信息。

    现在价值是实际分数。您可以通过将情节与pca$x进行比较来确认这一点。

    1. 定心。
    2. 但是,结果仍然与您在交叉验证的SO 中找到的答案不一样。

      这是因为Tony Breyal手动计算得分,而他正在使用非中心数据。 prcomp函数默认居中,然后使用居中数据来获得分数。

      所以你可以先把数据集中在一起:

      > scale(DF, scale=FALSE)
               Maths   Science    English Music
      [1,] -8.333333  1.666667   3.333333     5
      [2,]  1.666667  1.666667  13.333333    -5
      [3,]  6.666667 -3.333333 -16.666667     0
      

      现在使用这些数字来得到答案的分数:

                 x                                                   y
      John 0.28*(-8.3) + -0.17*1.6    + -0.94*3     + 0.07*5     0.77*(-8.3) + -0.08*1.6    + 0.19*3     + -0.60*5 
      Mike 0.28*1.6    + -0.17*1.6    + -0.94*13    + 0.07*(-5)  0.77*1.6    + -0.08*1.6    + 0.19*13    + -0.60*(-5)
      Kate 0.28*6.6    + -0.17*(-3.3) + -0.94*(-16) + 0.07*0     0.77*6.6    + -0.08*(-3.3) + 0.19*(-16) + -0.60*0
      

      执行此操作后,您应获得与biplot(pca, scale=0)

      所绘制的相同的分数

      希望这有帮助。