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

基于TSLM的预测逆变换:还原Open变量水平值方法

还原TSLM预测值为原始Open水平值

你当前的模型预测的是对数Open的一阶差分(dl0pen),要还原成原始Open的水平值,需要逆向执行数据预处理的步骤:先还原差分得到对数水平,再取指数得到原始数值。具体操作如下:

步骤1:获取还原的起点值

从训练数据中提取最后一个观测的对数Open值(lopen),作为还原差分序列的基准:

# 提取训练集最后一个lopen值
last_lopen <- df %>% filter(Date < "2015-12-23") %>% pull(lopen) %>% last()

步骤2:还原差分序列为对数水平

对预测得到的dl0pen做累加计算,加上起点的对数Open,得到预测期的对数Open值:

# 处理预测结果,计算对数Open的预测值
xd_with_lopen <- xd %>%
  mutate(
    # 累加差分得到对数水平,第一个预测值的差分对应训练集最后一个值的变化
    lopen_pred = last_lopen + cumsum(.pred)
  )

步骤3:转换为原始Open水平值

对对数Open的预测值取指数,得到原始Open的预测水平:

# 指数转换得到原始Open的预测值
xd_final <- xd_with_lopen %>%
  mutate(Open_pred = exp(lopen_pred))

完整代码示例

把上述步骤整合起来:

# 1. 获取训练集最后一个对数Open值
last_lopen <- df %>% filter(Date < "2015-12-23") %>% pull(lopen) %>% last()

# 2. 处理预测结果,还原为原始Open水平
xd_final <- xd %>%
  mutate(
    lopen_pred = last_lopen + cumsum(.pred),
    Open_pred = exp(lopen_pred)
  )

# 查看结果
xd_final %>% select(Date, .pred, lopen_pred, Open_pred)

补充说明

  • dl0pen = difference(log(Open), 1)等价于dl0pen[t] = lopen[t] - lopen[t-1],所以还原时lopen[t] = lopen[t-1] + dl0pen[t],累加所有预测的差分就能得到从起点开始的对数序列。
  • 确保预测结果的时间索引连续,cumsum的顺序才会正确对应日期。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.01 16:22:28