You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

向量平方(x²)运算符失效及PCA碎石图绘制异常求助(R语言)

问题解决方案

1. 向量平方运算问题

R语言中不存在x²格式的运算符,这个是Unicode字符,无法被识别为平方运算操作符。正确的平方写法有两种:

  • 使用半角脱字符 ^:例如对向量vec做平方,写为vec^2
  • 使用双星号 **:例如vec**2

2. PCA碎石图绘制问题

你的代码存在两个核心问题,修正后即可得到预期的碎石图:

问题1:未对数据做标准化处理

princomp()默认基于协方差矩阵计算PCA,但olympic$tab中的变量单位、尺度差异极大(比如跑步时间为秒,跳远成绩为米),协方差矩阵会被方差大的变量主导,导致PC的方差排序混乱。需要在princomp()中添加cor=TRUE参数,基于相关矩阵做PCA(自动对数据做标准化处理)。

问题2:使用了全角幂运算符号

代码中的ˆ是全角字符,R无法识别为幂运算操作符,需要替换为半角的^。

修正后的代码

library(ade4)
data("olympic")
# 基于相关矩阵做PCA,自动标准化数据
pca.olympic <- princomp(olympic$tab, cor = TRUE)
# 使用半角^计算方差,绘制碎石图
plot(1:length(pca.olympic$sdev), pca.olympic$sdev^2, type="b", 
     xlab="# PCs", ylab="Variance of PC",
     main="PCA of Correlation Matrix")

可选优化:绘制方差解释率百分比碎石图

如果需要更常用的“方差解释率百分比”碎石图,可使用以下代码:

library(ade4)
data("olympic")
pca.olympic <- princomp(olympic$tab, cor = TRUE)
# 计算每个PC的方差解释率百分比
variance_pct <- (pca.olympic$sdev^2 / sum(pca.olympic$sdev^2)) * 100
plot(1:length(variance_pct), variance_pct, type="b",
     xlab="# PCs", ylab="Variance Explained (%)",
     main="Scree Plot - PCA of Olympic Data")

内容的提问来源于stack exchange,提问作者Cole Hendrickson

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.25 05:23:10