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

SAS Proc ARIMA建模咨询:因实际值延迟4天需调整滞后取值范围

解决方案:在SAS Proc ARIMA中使用D-4及更早滞后值建模

好问题!这种延迟获取实际值的场景在时间序列预测里挺常见的,我来帮你梳理下可行的解决方案:

有没有内置选项直接实现?

Proc ARIMA本身并没有专门的参数可以直接指定“仅使用D-4及更早的滞后观测”——它的默认逻辑是基于数据集中最新的可用观测值来构建模型。所以核心思路是通过数据预处理来间接实现这个需求,让模型“误以为”最新的观测值就是D-4的实际值。

具体预处理步骤

你需要对原始数据做时间偏移处理,让每个预测时间点对应的输入数据正好是D-4及更早的数值:

  • 创建4期滞后的实际值变量:用SAS的lag4()函数把实际值向后偏移4个时间单位,这样当你要针对日期t做预测时,模型用到的是t-4的实际值,自然就不会用到t-1、t-2、t-3的未获取数据。
  • 调整时间索引(可选但推荐):如果需要让预测结果的日期和实际业务时间对齐,可以把原始日期也向后偏移4天,这样数据集里的forecast_date就对应你要预测的时间点,而对应的滞后值就是截止到D-4的实际数据。
  • 处理缺失值:前4个观测的滞后变量会是缺失值,你可以根据业务需求选择删除这些行,或者用均值、插值等方式填充。

代码示例

假设你的原始数据集original_data包含date(日期变量)和actual_value(实际观测值),可以这样处理:

/* 生成偏移后的数据集 */
data shifted_data;
    set original_data;
    /* 生成4期滞后的实际值 */
    lag4_actual = lag4(actual_value);
    /* 生成对应的预测日期(原始日期+4天) */
    forecast_date = intnx('day', date, 4);
    /* 仅保留有有效滞后值的观测 */
    if not missing(lag4_actual);
run;

/* 使用偏移后的数据集构建ARIMA模型 */
proc arima data=shifted_data;
    /* 识别序列特征,这里用滞后后的变量 */
    identify var=lag4_actual;
    /* 估计ARIMA模型,p/d/q参数根据你的数据调整 */
    estimate p=2 d=1 q=1 method=ml;
    /* 生成预测,lead指定预测天数 */
    forecast lead=10 out=arima_forecasts;
run;

关键说明

这样处理后,模型在拟合和预测阶段,所有用到的输入数据都是截止到D-4的实际值,完全匹配你“D+4才收到实际值”的业务场景。如果你的时间单位不是天(比如小时、周),只需要把intnx函数的时间间隔参数改成对应的单位即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 06:29:07