我有从2014年1月1日到2015年12月31日的两年每日数据。我想使用此数据集预测未来365天。
*代码**
PROC UCM data=Mydata;
id date interval=day; /*set the interval as day*/
model Sold;
irregular;
level;
slope ;
cycle period=365.24 rho=1 variance=0 noest=(rho period variance);
estimate;
forecast lead=365 OUTFOR=Ucmm.DATA;
run;
有一种趋势是基于一周中的哪一天和一年中的哪一个月。我如何具体说明?
我知道一周中的某一天可以设置为7。这个月我怎么能指定呢?因为有些月份有31天,有些月份有30天,而二月有28/29天。我如何解决这个问题?我知道可以使用季节来指定代码>命令。但是怎么做呢?
这是一个有趣的问题。对于快速解决方案,我建议在原始数据集中手动创建虚拟变量,您可以将其指定为输入变量。我确信有更好和更先进的方法使用赛季
或Splineseason
语句来实现更好的估计,但是与其他ETS程序相比,我没有使用这个特定的过程。
data want;
set have;
array month[*] Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov;
do i = 1 to dim(month);
month[i] = (month(date) = i);
end;
drop i;
run;
proc ucm data=want;
model Sold = Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov;
irregular;
level;
slope ;
cycle period=365.24 rho=1 variance=0 noest=(rho period variance);
estimate;
forecast lead=365 OUTFOR=Ucmm.DATA;
run;
月份假人的替代选项:Proc UCM有一个名为BLOCKSEASON的单独语句,位于SEASON语句之上。您可以为一周中的某一天指定一个7的季节,然后将365.24/12指定为块。