gpt4 book ai didi

r - 使用 prcomp 手动计算第一主成分时的结果冲突

转载 作者:行者123 更新时间:2023-12-01 00:14:40 25 4
gpt4 key购买 nike

我正在计算 iris 数据集的 PCA,如下所示:

data(iris)
ir.pca <- prcomp(iris[, 1:4], center = TRUE, scale. = TRUE)

这是 iris 数据集的第一行:
head(iris, 1)
#Sepal.Length Sepal.Width Petal.Length Petal.Width Species
#1 5.1 3.5 1.4 0.2 setosa

对于第一行,我可以看到第一个主成分的值为 -2.257141:
head(ir.pca$x, 1)
# PC1 PC2 PC3 PC4
#[1,] -2.257141 -0.4784238 0.1272796 0.02408751

但是当我尝试提取负载时:
ir.pca$rotation[, 1]
Sepal.Length Sepal.Width Petal.Length Petal.Width
0.5210659 -0.2693474 0.5804131 0.5648565

并自己计算第一个主成分:
0.5210659 * 5.1  + -0.2693474 * 3.5  + 0.5804131 * 1.4 + 0.5648565 * 0.2

我得到了 2.64027 的不同结果。

这是为什么?

最佳答案

缩放是问题。

要么降低 prcomp() 中的缩放比例称呼

data(iris)
ir.pca <- prcomp(iris[, 1:4], center = FALSE, scale. = FALSE)

head(ir.pca$x, 1)
# PC1 PC2 PC3 PC4
# [1,] -5.912747 2.302033 0.007401536 0.003087706

ir.pca$rotation[, 1] %*% t(iris[1, 1:4])
# 1
# [1,] -5.912747

或规模 iris在您手动应用加载之前
ir.pca <- prcomp(iris[, 1:4], center = TRUE, scale. = TRUE)

head(ir.pca$x, 1)
# PC1 PC2 PC3 PC4
# [1,] -2.257141 -0.4784238 0.1272796 0.02408751

ir.pca$rotation[, 1] %*% scale(iris[, 1:4])[1,]
# [,1]
# [1,] -2.257141

关于r - 使用 prcomp 手动计算第一主成分时的结果冲突,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54023496/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com