You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

关于iris数据集prcomp分析中第一行PC1得分计算的技术问询

拆解iris数据集PCA第一行PC1得分的计算过程

嘿,我来一步步帮你搞清楚怎么得到第一行的PC1得分-2.257141,核心是理解prcomp的参数设置和主成分得分的计算逻辑。


先明确前提:你的prcomp参数设置

看你给出的载荷矩阵,每个主成分的载荷平方和都是1(比如PC1的四个载荷平方加起来≈0.521²+(-0.269)²+0.580²+0.565²=1),这说明你调用prcomp的时候启用了标准化(也就是参数scale.=TRUE),再加上函数默认的中心化(center=TRUE),所以数据会先经过「中心化→标准化」的预处理。

主成分得分的核心公式很简单:

得分 = 标准化后的原始数据 × 对应主成分的载荷向量

分步计算第一行PC1得分

步骤1:先算四个变量的均值和标准差

从iris数据集里,我们可以算出四个特征的均值(用来做中心化)和标准差(用来做标准化):

  • Sepal.Length: 均值=5.8433,标准差=0.8281
  • Sepal.Width: 均值=3.0573,标准差=0.4359
  • Petal.Length: 均值=3.7580,标准差=1.7653
  • Petal.Width: 均值=1.1993,标准差=0.7622

步骤2:对第一行原始数据做标准化处理

第一行的原始数据是:5.1, 3.5, 1.4, 0.2
标准化的公式是 (原始值 - 均值) / 标准差,代入计算后得到:

  • Sepal.Length: (5.1 - 5.8433)/0.8281 ≈ -0.8977
  • Sepal.Width: (3.5 - 3.0573)/0.4359 ≈ 1.0156
  • Petal.Length: (1.4 - 3.7580)/1.7653 ≈ -1.3358
  • Petal.Width: (0.2 - 1.1993)/0.7622 ≈ -1.3110

步骤3:乘以PC1载荷并求和

你给出的PC1载荷是:
Sepal.Length → 0.5210659,Sepal.Width → -0.2693474,Petal.Length → 0.5804131,Petal.Width → 0.5648565

把标准化后的数据和对应载荷相乘,再把结果加起来:

(-0.8977 × 0.5210659) + (1.0156 × -0.2693474) + (-1.3358 × 0.5804131) + (-1.3110 × 0.5648565)

拆开来算每一项:

  • 第一项:≈ -0.4678
  • 第二项:≈ -0.2735
  • 第三项:≈ -0.7753
  • 第四项:≈ -0.7405

把这些数加起来:-0.4678 - 0.2735 - 0.7753 - 0.7405 ≈ -2.2571,和你得到的第一行PC1得分完全对上了!


额外补充

如果当时你没有启用scale.=TRUE,得分的计算逻辑就变成「中心化后的数据 × 载荷」,但此时载荷的平方和不会等于1,你可以自己试试这个差异。

内容的提问来源于stack exchange,提问作者Ananth Subramanian

火山引擎 最新活动