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

如何在R中对ets()预测的归一化时间序列数据进行反归一化?

解决ETS预测结果的反归一化问题

你用的是min-max归一化,反归一化的核心是利用原始训练集的最小值和最大值(必须是未归一化的训练集统计量,不能用归一化后的数据),通过逆运算还原数据。

步骤1:提前保存训练集的关键统计量

你的归一化函数仅返回了归一化后的数据,需要先保存原始训练集的min和max,这是反归一化的核心依据:

# 保存原始训练集的最小值和最大值
ibm_train_min <- min(ibm_train)
ibm_train_max <- max(ibm_train)

# 执行原有归一化操作
normalize <- function(x) {
    return ((x - min(x)) / (max(x) - min(x)))
}
normalized_ibm <- normalize(ibm_train)

步骤2:建模并生成归一化后的预测结果

继续完成ETS建模和预测步骤:

library(forecast)
library(fpp)

ets_ibm <- ets(normalized_ibm)
# 假设需要预测12个时间步长,可根据需求调整h值
forecast_normalized <- forecast(ets_ibm, h = 12)

步骤3:对预测结果执行反归一化

利用之前保存的ibm_train_min和ibm_train_max,对预测的均值、上下置信区间做逆变换:

# 反归一化公式:原始值 = 归一化值 × (max - min) + min
forecast_original <- forecast_normalized
forecast_original$mean <- forecast_normalized$mean * (ibm_train_max - ibm_train_min) + ibm_train_min
forecast_original$lower <- forecast_normalized$lower * (ibm_train_max - ibm_train_min) + ibm_train_min
forecast_original$upper <- forecast_normalized$upper * (ibm_train_max - ibm_train_min) + ibm_train_min

处理完成后,forecast_original就是还原到原始数据尺度的预测结果,可直接用于分析或可视化。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.24 18:52:06