【问题标题】:Can SAS Score a Data Set to an ARIMA Model?SAS 能否将数据集评分为 ARIMA 模型?
【发布时间】:2017-01-25 23:29:10
【问题描述】:

是否可以使用由 PROC ARIMA 在 SAS 中创建的模型对数据集进行评分?

这是我没有工作的代码:

proc arima data=work.data;
identify var=x crosscorr=(y(7) y(30));
estimate outest=work.arima;
run;

proc score data=work.data score=work.arima type=parms predict out=pred;
var x;
run;

当我运行此代码时,我从 PROC SCORE 部分收到一条错误消息,显示“错误:未找到变量 x”。 x 列在数据集 work.data 中。

【问题讨论】:

  • 可以显示数据吗?
  • 您通常会使用 PROC ARIMA 中的 FORECAST 语句进行预测。在时间序列数据中对数据集进行评分有点不同,PROC SCORE 需要一个线性模型,所以我怀疑这会按预期工作。
  • @Dinesh.hmn 很遗憾,出于保密原因,我无法显示数据。

标签: sas


【解决方案1】:

proc score 不支持自相关变量。获得样本外分数的最简单方法是将proc arimadata 步骤结合起来。这是一个使用 sashelp.air 的示例。

第 1 步:生成历史数据

我们省略了 1960 年作为我们的分数数据集。

data have;
    set sashelp.air;
    where year(date) < 1960;
run;

第 2 步:生成模型并进行预测

nooutall 选项告诉proc arima 仅生成 12 个未来预测。

proc arima data=have;
    identify var=air(12);
    estimate p=1 q=(2) method=ml;
    forecast lead=12 id=date interval=month out=forecast nooutall;
run;

第 3 步:得分

将您的预测数据和完整的历史数据集合并在一起,看看模型的表现如何。我个人喜欢update statement,因为它不会用缺失值替换任何东西。

data want;
    update forecast(in=fcst) 
           sashelp.air(in=historical);
    by Date;

    /* Generate fit statistics */
    Error    = Forecast-Air;
    PctError = Error/Air;
    AbsPctError = abs(PctError);

    /* Helpful for bookkeeping */
    if(fcst) then Type = 'Score';
        else if(historical) then Type = 'Est';

    format PctError AbsPctError percent8.2;
run; 

您可以获取此代码并将其转换为自己的通用宏。这样以后,如果你想得分,你可以简单地调用一个宏程序来获得你需要的东西。

【讨论】:

    猜你喜欢
    • 2014-02-21
    • 1970-01-01
    • 1970-01-01
    • 2020-06-01
    • 2020-09-27
    • 2014-03-07
    • 1970-01-01
    • 1970-01-01
    • 2020-01-31
    相关资源
    最近更新 更多