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

使用fpp3包构建多特征时间序列TSLM模型的预测步骤咨询

fpp3包构建多特征时间序列TSLM模型的预测步骤咨询

嗨,你遇到的这个问题其实是多变量时间序列预测里的典型场景,我来给你拆解下原因和解决步骤:

为什么单特征没问题,多特征会报错?

你单特征用的TSLM(Consumption)本质是仅含截距项的模型(等同于TSLM(Consumption ~ 1)),它只需要用历史数据算出的截距项来生成未来预测,完全不需要额外变量。但当你加入Income + Production + Savings + Unemployment这些预测变量后,模型变成了回归模型——要预测Consumption的未来值,必须先知道这几个自变量在未来4个季度的取值,这就是报错提示“Unable to compute required variables from provided new_data”的核心原因。

而你之前能正常运行report()和glance(),是因为这两个函数只需要历史数据集来计算模型的拟合统计量,不需要任何未来数据,所以不会触发这个问题。

多特征TSLM模型的预测步骤

下面是具体的解决流程:

1. 准备预测期的自变量数据

你有两种获取未来自变量数据的方式:

  • 如果已经有未来4个季度的实际观测值(比如提前拿到了这些经济指标的官方预测数据),直接整理成和us_change格式一致的时间序列数据框即可。
  • 如果没有实际数据,需要先对每个自变量单独建立时间序列模型,预测它们的未来值。这里用ARIMA模型举例(你也可以用TSLM或者其他fpp3支持的模型):
library(fpp3)
library(tidyverse)

# 对每个自变量建立预测模型并生成未来4期预测值
var_forecasts <- us_change |>
  # 提取需要预测的自变量和时间列
  select(Quarter, Income, Production, Savings, Unemployment) |>
  # 转换为长格式方便批量建模
  pivot_longer(-Quarter, names_to = "Variable", values_to = "Value") |>
  # 为每个变量拟合ARIMA模型
  model(arima = ARIMA(Value)) |>
  # 预测未来4个季度
  forecast(h = 4) |>
  # 转换回宽格式,和原数据集结构匹配
  pivot_wider(names_from = Variable, values_from = .mean)

2. 传入自变量预测值进行Consumption的预测

把上面生成的自变量预测数据,通过new_data参数传给forecast()函数,就能得到多特征模型的预测结果了:

# 先拟合多特征TSLM模型
fit_consMR <- us_change |>
  model(tslm = TSLM(Consumption ~ Income + Production + Savings + Unemployment))

# 传入自变量预测数据,生成Consumption的预测
cons_forecast <- forecast(fit_consMR, new_data = var_forecasts)

# 查看结果
cons_forecast

3. 验证预测结果

运行后你会得到和单特征模型类似的fable对象,里面包含未来4个季度Consumption的预测分布和均值,此时模型已经用上了所有自变量的未来预测值。

额外提示

如果你的自变量有已知的未来取值(比如某些政策变量是固定的),直接把这些值整理成符合要求的时间序列数据框传入new_data即可,不需要额外建模预测。

备注:内容来源于stack exchange,提问作者Russ Conte

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.21 13:39:50