-1

我刚刚在 iris 数据集上运行了 PC 分析。这在过去已经讨论过几次,但我对输出有点困惑。我使用了 prcomp,这是加载的输出:

                    PC1         PC2        PC3        PC4
Sepal.Length  0.5210659 -0.37741762  0.7195664  0.2612863
Sepal.Width  -0.2693474 -0.92329566 -0.2443818 -0.1235096
Petal.Length  0.5804131 -0.02449161 -0.1421264 -0.8014492
Petal.Width   0.5648565 -0.06694199 -0.6342727  0.5235971

这是分数的前 6 行:

           PC1        PC2         PC3          PC4
[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

这是原始值的前 6 行:

  Sepal.Length Sepal.Width Petal.Length Petal.Width
1          5.1         3.5          1.4         0.2
2          4.9         3.0          1.4         0.2
3          4.7         3.2          1.3         0.2
4          4.6         3.1          1.5         0.2
5          5.0         3.6          1.4         0.2
6          5.4         3.9          1.7         0.4

有人能解释一下我们如何获得第 1 行的 -2.25 的 PC1 分数吗?

谢谢。

4

1 回答 1

0

根据文档?prcomp(因此,让我们对第 1 行和 PC 1 进行计算以进行检查。在此示例中,我使用了一个富有想象力的 PCA 对象,称为pca.

首先,我们将第一行数据 , 居中,然后使用iris[1, 1:4]缩放。最后,我们乘以 PC 1 的载荷,然后将结果相加。pca$centerpca$scalepca$rotation[, 1]

# Perform PCA
pca <- prcomp(iris[, 1:4], center = TRUE, scale = TRUE)

# Calculate PC1 score for first row of 'iris'
sum(pca$rotation[,1] * (iris[1, 1:4] - pca$center) / pca$scale)
#> [1] -2.257141

reprex 包于 2019-01-23 创建(v0.2.1.9000)

正如预期的那样,我们得到 -2.257141。

于 2019-01-24T02:36:47.067 回答