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

PLS-R交叉验证中R2与RMSE的计算方法技术问询

PLS-R交叉验证中R²与RMSE的计算逻辑(对应pls包)

嘿,我来给你拆解下你用的Mevik开发的pls包中,10折交叉验证下R²和RMSE的具体计算方式,完全匹配你写的这段代码:

pls.fa <- plsr(FA ~ ., ncomp = xcomp, scale = TRUE, validation = "CV", segments = 10, jackknife =TRUE, data=train)

先明确10折交叉验证的基础流程

你的代码指定了segments=10,所以整个训练集train会被随机拆分成10个互斥且大小相近的子集。之后会循环10次:

  • 每次用9个子集作为临时训练集,拟合对应成分数的PLS模型
  • 用这个临时模型预测剩下1个子集(验证子集)的FA值
  • 最终每个样本都会被当作验证样本恰好一次,得到全样本的预测值集合

交叉验证RMSE的计算步骤

RMSE(均方根误差)是衡量预测值与真实值偏差的指标,具体计算:

  1. 对每个成分数(1到xcomp),收集所有10轮交叉验证中每个验证样本的真实值$y_i$和模型预测值$\hat{y}_i$
  2. 计算所有样本的残差平方和:$SSE_{CV} = \sum_{i=1}^N (y_i - \hat{y}_i)^2$,其中$N$是训练集总样本数
  3. 计算均方误差MSE:$MSE_{CV} = \frac{SSE_{CV}}{N}$
  4. RMSE就是MSE的平方根:$RMSE_{CV} = \sqrt{MSE_{CV}}$

交叉验证R²的计算步骤

R²(决定系数)衡量模型解释变异的比例,具体计算:

  1. 先计算总平方和$SST_{CV}$:这是所有样本真实值相对于训练集整体均值的变异程度,公式为$SST_{CV} = \sum_{i=1}^N (y_i - \bar{y})^2$,其中$\bar{y}$是训练集FA的均值
  2. 用前面得到的$SSE_{CV}$,代入公式:$R^2_{CV} = 1 - \frac{SSE_{CV}}{SST_{CV}}$
  3. 你看到的Intercept对应的是仅用均值预测的基准模型,此时$SSE_{CV}=SST_{CV}$,所以$R^2=0$,用来和添加成分后的模型效果做对比

关于jackknife=TRUE的补充

你代码里加了这个参数,它不会改变R²和RMSE的点估计值,而是用来计算这些指标的标准误或置信区间,方便你判断模型效果的稳定性。

内容的提问来源于stack exchange,提问作者Phuong Ho

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 07:54:15