SAS:预测未来销售额的简单方法
我有如下数据:SAS:预测未来销售额的简单方法,sas,predict,Sas,Predict,我有如下数据: > Data sales; > Infile datalines missover; > Input year $ month sales; > Datalines; > 2016 1 489 > 2016 2 475 > 2016 3 523 > 2016 4 546 > 2016 5 675 > 2016 6 667 > 20
> Data sales;
> Infile datalines missover;
> Input year $ month sales;
> Datalines;
> 2016 1 489
> 2016 2 475
> 2016 3 523
> 2016 4 546
> 2016 5 675
> 2016 6 667
> 2016 7 334
> 2016 8 359
> 2016 9 521
> 2016 10 526
> 2016 11 459
> 2016 12 439
> 2017 1 500
> 2017 2 445
> 2017 3 531
> 2017 4 541
> 2017 5 620
> 2017 6 630
> 2017 7 300
> 2017 8 350
> 2017 9 502
> 2017 10 524
> 2017 11 402
> 2017 12 469
> ;
我希望以去年的平均增长率为例,并用它来预测未来12个月的月度增长。我不是在寻找一种高级方法,这纯粹是为我编程
到目前为止,我得到的是这个(太难看了):
下面的代码回答了您的问题/您正在尝试做什么。 请注意,我使用了:
- 保留方法而不是滞后函数
- 而不是观察值 montonic()的
/*Calculate the difference*/
data diff;
set sales;
row = _n_;
retain prev;
if row=1 then do; prev=0; diff=0; output; prev=sales;end;
else do; diff=sales -prev; output; prev=sales; end;
run;
/*select avg for 2016, for live data feed change to -1*/
proc sql noprint;
select avg(diff) into:avg from diff where input(year,4.)=year(today())-2;
quit;
/*select avg for 2017, for live data feed remove the -1*/
proc sql;
create table sales_new as
select year,month, sales, &avg as avg_diff, Sales+&avg as sales_pred from diff where input(year,4.)=year(today())-1;
quit;
差异表:
输出:
/*Calculate the difference*/
data diff;
set sales;
row = _n_;
retain prev;
if row=1 then do; prev=0; diff=0; output; prev=sales;end;
else do; diff=sales -prev; output; prev=sales; end;
run;
/*select avg for 2016, for live data feed change to -1*/
proc sql noprint;
select avg(diff) into:avg from diff where input(year,4.)=year(today())-2;
quit;
/*select avg for 2017, for live data feed remove the -1*/
proc sql;
create table sales_new as
select year,month, sales, &avg as avg_diff, Sales+&avg as sales_pred from diff where input(year,4.)=year(today())-1;
quit;
下面的代码回答了您的问题/您正在尝试做什么。 请注意,我使用了:
- 保留方法而不是滞后函数
- 而不是观察值 montonic()的
/*Calculate the difference*/
data diff;
set sales;
row = _n_;
retain prev;
if row=1 then do; prev=0; diff=0; output; prev=sales;end;
else do; diff=sales -prev; output; prev=sales; end;
run;
/*select avg for 2016, for live data feed change to -1*/
proc sql noprint;
select avg(diff) into:avg from diff where input(year,4.)=year(today())-2;
quit;
/*select avg for 2017, for live data feed remove the -1*/
proc sql;
create table sales_new as
select year,month, sales, &avg as avg_diff, Sales+&avg as sales_pred from diff where input(year,4.)=year(today())-1;
quit;
差异表:
输出:
/*Calculate the difference*/
data diff;
set sales;
row = _n_;
retain prev;
if row=1 then do; prev=0; diff=0; output; prev=sales;end;
else do; diff=sales -prev; output; prev=sales; end;
run;
/*select avg for 2016, for live data feed change to -1*/
proc sql noprint;
select avg(diff) into:avg from diff where input(year,4.)=year(today())-2;
quit;
/*select avg for 2017, for live data feed remove the -1*/
proc sql;
create table sales_new as
select year,month, sales, &avg as avg_diff, Sales+&avg as sales_pred from diff where input(year,4.)=year(today())-1;
quit;
为什么投反对票?你原来的问题很清楚,不需要投反对票,我会投你的票。为什么投反对票?你原来的问题很清楚,不需要投反对票,我会投你的票。