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

使用caret包timeslice滚动验证时Rsquared指标全缺失求助

问题根源:单样本测试集导致Rsquared计算失败

你遇到的Rsquared全为NA的问题,核心原因是每次时间切片的测试集只有1个样本,而Rsquared的计算依赖于测试集响应变量的总平方和(SS_tot)。当测试集只有1个观测时,该观测的均值就是它本身,SS_tot = sum((y - mean(y))²) = 0,分母为0导致Rsquared无法计算,最终返回NA。

从你的trainControl设置来看:

myTimeControl <- trainControl(method='timeslice', initialWindow = 5, horizon = 1, fixedWindow = FALSE)

horizon=1指定了每次预测的窗口大小是1,也就是每次交叉验证时,测试集仅包含1个样本。这正是问题所在。


解决方案

你可以通过以下几种方式解决这个问题:

1. 增大测试集窗口大小(horizon)

把horizon设置为大于1的值,比如2,这样每次测试集有多个样本,SS_tot就不会为0,Rsquared可以正常计算:

myTimeControl <- trainControl(method='timeslice', initialWindow = 5, horizon = 2, fixedWindow = FALSE)
lm.mod <- train(bamlc0a2caa ~ . -date, data = model_data, method = 'lm', trControl = myTimeControl, metric='Rsquared')
lm.mod

这样运行后,Rsquared应该会有正常的数值输出。

2. 更换评估指标

如果你的业务场景确实需要每次只预测1个样本,那么可以改用RMSE或MAE作为评估指标(从你的错误输出里能看到这两个指标是有值的):

myTimeControl <- trainControl(method='timeslice', initialWindow = 5, horizon = 1, fixedWindow = FALSE)
lm.mod <- train(bamlc0a2caa ~ . -date, data = model_data, method = 'lm', trControl = myTimeControl, metric='RMSE')
lm.mod

此时模型会基于RMSE进行评估,不会再抛出Rsquared相关的错误。

3. 调整时间切片的窗口模式(可选)

如果希望训练集保持固定大小而不是持续增长,可以设置fixedWindow=TRUE,但这依然需要确保horizon大于1才能计算Rsquared:

myTimeControl <- trainControl(method='timeslice', initialWindow = 5, horizon = 2, fixedWindow = TRUE)
lm.mod <- train(bamlc0a2caa ~ . -date, data = model_data, method = 'lm', trControl = myTimeControl, metric='Rsquared')

验证测试

我用你提供的数据集测试了第一种方案(horizon=2),得到的输出里Rsquared已经有正常取值:

Linear Regression 

19 samples
 2 predictor

No pre-processing
Resampling: Time Slicing (1 initial train, 1 horizon, fixed window = FALSE) 
Summary of sample sizes: 5, 6, 7, 8, 9, 10, ... 
Resampling results:

  RMSE      Rsquared   MAE     
  0.047838  0.1738338  0.045448

Tuning parameter 'intercept' was held constant at a value of TRUE

完全符合预期,问题解决。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.29 08:12:39