提问者:小点点

SAS中的PROC UCM:如何在每日数据系列中指定星期几和月份季节性


我有从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天。我如何解决这个问题?我知道可以使用季节来指定命令。但是怎么做呢?


共2个答案

匿名用户

这是一个有趣的问题。对于快速解决方案,我建议在原始数据集中手动创建虚拟变量,您可以将其指定为输入变量。我确信有更好和更先进的方法使用赛季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指定为块。