【问题标题】:PCA scaling not applied to individuals?PCA 缩放不适用于个人?
【发布时间】:2019-01-07 05:32:27
【问题描述】:

这个问题适用于我自己的数据,但为了可重复性,我的问题/问题也出现在 FactoExtra 小插图或 here 中,所以为了简单起见,我将使用它。

首先,生成了一个简单的 PCA(比例 = T)并提取了前 4 个轴的坐标变量:

head(var$coord) # coordinates of variables
>                   Dim.1       Dim.2       Dim.3       Dim.4

> Sepal.Length  0.8901688 -0.36082989  0.27565767  0.03760602

> Sepal.Width  -0.4601427 -0.88271627 -0.09361987 -0.01777631

> Petal.Length  0.9915552 -0.02341519 -0.05444699 -0.11534978

> Petal.Width   0.9649790 -0.06399985 -0.24298265  0.07535950

这也适用于“个人”。这是输出:

head(ind$coord) # coordinates of individuals
>       Dim.1      Dim.2       Dim.3        Dim.4

> 1 -2.257141 -0.4784238  0.12727962  0.024087508

> 2 -2.074013  0.6718827  0.23382552  0.102662845

> 3 -2.356335  0.3407664 -0.04405390  0.028282305

4 -2.291707  0.5953999 -0.09098530 -0.065735340

5 -2.381863 -0.6446757 -0.01568565 -0.035802870

6 -2.068701 -1.4842053 -0.02687825  0.006586116

由于 PCA 是使用 scale=T 生成的,我非常困惑为什么不缩放各个坐标(-1 到 1?)。例如,“个人 1”的 DIM-1 得分为 -2.257141,但对于范围从 -0.46 到 0.991 的变量坐标,我没有比较依据。如何用 -1 到 1 的比例 PCA 范围来解释 -2.25 的分数?

我错过了什么吗? 感谢您的宝贵时间!

更新并填补了所有相关的代码空白:

> data(iris)

> res.pca <- prcomp(iris[, -5],  scale = TRUE)

> ind <- get_pca_ind(res.pca)

> print(ind)

>var <- get_pca_var(res.pca)

> print(var)

【问题讨论】:

  • @Hack-R 我不确定我是否应该这样做,因为这要么是一个错误问题,要么是我的错误解释!对不起!

标签: r pca


【解决方案1】:

我向 FactoExtra 的作者提出了这个问题。这是他的回复:

Scale = TRUE 将标准化变量以使它们具有可比性。当以不同的尺度(例如:公斤、公里、厘米……)测量变量时,特别推荐这样做;(http://www.sthda.com/english/articles/31-principal-component-methods-in-r-practical-guide/112-pca-principal-component-analysis-essentials/)。

在这种情况下,变量和主成分(PC)之间的相关性被用作PC上变量的坐标。变量的表示与观察的图不同:观察用它们的投影表示,但变量用它们的相关性表示。

因此,即使 scale = TRUE,个体的坐标也不应介于 -1 和 1 之间。

只能通过创建双图来解释个体和变量的相对位置,如下所述:http://www.sthda.com/english/articles/31-principal-component-methods-in-r-practical-guide/112-pca-principal-component-analysis-essentials/

双标图对我来说不是个好主意,但我尝试过重新缩放并且它有效。另外,我想我可以带一个人并将他们投射到 PCA 中,看看他们落在哪里。

不管怎样,到此为止。感谢您的帮助@Hack-r!

【讨论】:

    【解决方案2】:

    prcomp(...,scale=T) 将输入变量缩放到单位方差时进行的缩放。

    我认为它对各个坐标的范围标准化没有任何作用,除非可能使用center = ...。但是,做事后(或事前)会很容易。这是一个相关的帖子:

    Range standardization (0 to 1) in R

    【讨论】:

    • 对,但我不明白为什么这些人的规模不一样。当比例为 -1 到 1 时,我不明白如何解释 PC-1 的值 -2.55。但是,我只是尝试了您发布的链接并尝试了重新调整比例 - 看起来这可能会奏效!谢谢!
    • @Eric 听起来您可能会混淆 variance 的缩放与值的范围。原始代码中发生的任何事情都没有尝试将 values 放在 -1 到 1 的范围内。您缩放了方差
    • 也许我对这个的应用感到困惑。例如,在原始帖子中,您如何对“个人 1”做出任何结论? (PC1:-2.257141 PC2:-0.4784238 PC3:0.12727962 PC4:0.024087508)本质上,我想看看生成的 PCA 中的“个人在哪里”。
    猜你喜欢
    • 2015-09-24
    • 2017-10-15
    • 2018-11-27
    • 2016-01-25
    • 1970-01-01
    • 2013-08-05
    • 2019-06-08
    相关资源
    最近更新 更多