![](/img/trans.png)
[英]ggplot2: Adjusting label positions for the PCA loadings in a PCA biplot in R
[英]PCA: scores vs loadings in biplot
在这个问题中,我正在调查双标图的解释和PCA中的负荷/分数的含义: 主要成分分数是多少?
根据第一个答案的作者,得分是:
x y
John -44.6 33.2
Mike -51.9 48.8
Kate -21.1 44.35
根据关于“双极四轴的解释”的第二个答案 :
左轴和下轴显示[标准化]主成分分数; 顶部和右侧轴显示负载。
因此,理论上在绘制了“什么是主要成分得分”的双标图后,我应该在左下轴上得分:
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在问题的第一个答案中这个帖子)。
如果我正在做或理解错误,我的错误在哪里?
你错过了一些细微差别:
出于某种原因, biplot.princomp
以不同的方式缩放加载和得分轴。 所以你看到的分数会被改变。 要获得实际值,您可以调用biplot函数,如下所示:
biplot(pca, scale=0)
请参阅help(biplot.princomp)
了解更多信息。
现在这些值是实际分数。 您可以通过将图表与pca$x
进行比较来确认。
但是,结果仍然与您在交叉验证的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)
绘制的相同分数biplot(pca, scale=0)
希望这可以帮助。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.