从2014年1月1日到2015年12月31日,我有2年的每日数据。我想使用此数据集预测接下来的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天,而2月有28/29天。我该如何解决这个问题?我知道可以使用season;
命令指定它。但是如何?
答案 0 :(得分:0)
这是一个有趣的问题。为了快速解决,我建议在原始数据集中手动创建虚拟变量,您可以将其指定为输入变量。我确信有更好和更先进的方法可以使用season
或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;
答案 1 :(得分:0)
月份虚拟变量的替代选项:Proc UCM有一个名为BLOCKSEASON的单独语句,位于SEASON语句之上。您可以为一周中的某一天指定7个季节,然后将365.24 / 12指定为块。