【发布时间】:2016-12-16 13:36:20
【问题描述】:
我在 SAS 9.4 中使用 proc arima 使用先前校准的模型生成预测,但它会抛出错误,就好像它正在尝试校准模型本身一样:
错误:没有足够的数据来拟合模型
样本数据:
data inputs;
input x var1 var2 var3 var4 var5;
datalines;
20 5 2 4 5 4
25 12 56 13 44 4
20 5 2 4 5 4
25 12 56 13 44 4
20 5 2 4 5 4
25 12 56 13 44 4
. 2 5 6 5 4
;
失败的版本:
proc arima;
identify
data = inputs
var = x
crossCorr = ( var1 var2 var3 var4 var5 )
noPrint;
estimate
p = 1 input = ( var1 var2 var3 var4 var5 )
ar = 0.9
initVal = ( 0.1$var1 0.2$var2 0.3$var3 0.4$var4 0.4$var5 )
noint
noEst /* Using noEst so should not need to do any estimation and short data-set should not be a problem */
method=ml
noprint
;
forecast lead=1 out=outputs noOutAll noprint;
quit;
如果我从模型中删除最终变量,它可以正常工作:
proc arima;
identify
data = inputs
var = x
crossCorr = ( var1 var2 var3 var4 )
noPrint;
estimate
p = 1 input = ( var1 var2 var3 var4 )
ar = 0.9
initVal = ( 0.1$var1 0.2$var2 0.3$var3 0.4$var4 )
noint
noEst /* Using noEst so should not need to do any estimation and short data-set should not be a problem */
method=ml
noprint
;
forecast lead=1 out=outputs noOutAll noprint;
quit;
我还可以通过向数据添加一个新值来使其“工作”。但是,如果模型已经校准(使用更多数据),则不需要这样做。
我检查了 SAS 文档,看看是否有任何标志可以防止导致此错误的不必要检查,但它们都没有帮助。
【问题讨论】:
-
我无法从您的代码中分辨出哪个变量代表时间以及您的数据中有多少个先前的周期,但是 ARMIA 需要一定数量的先前周期进行预测,具体取决于订单或模型.如果我没记错的话,顺序模型 (p,d,q) 需要 max(p+d, q+d+1) 先前的观察。
-
我在顶部的样本数据位有 6 个先前的观察结果。我在这里选择了最简单的模型,即 (1,0,0),因此根据您的公式,我应该只需要 1 次之前的观察(有一个单独的问题,SAS 似乎需要至少 6 次观察)。
-
我认为我不需要提供时间变量,因为无论时间步长是多少,只要它是恒定时间步长,模型的行为都应该相同。它应用的限制基于我使用的预测变量的数量,因为如果我删除一个它可以正常工作。但这种检查只有在必须校准模型时才有意义,而事实并非如此。
标签: sas time-series