BookmarkSubscribeRSS Feed
🔒 This topic is solved and locked. Need further help from the community? Please sign in and ask a new question.
pmorel3
Obsidian | Level 7

This is the extract of my log just before the one I inserted first.

We can see how dataset previsions_US was created.

Here we see how I created variable "f_dmspe09" which seems missed.

 

5590  /*Calculer les prévisions combinées selon les 5 méthodes différentes*/
5591
5592  data previsions_US;
5593  merge m.oos_zdp m.oos_zdy m.oos_zep m.oos_zde m.oos_zsvar /*m.oos_zcsp*/ m.oos_zbm m.oos_zntis m.oos_ztbl m.oos_zlty
5593! m.oos_zltr m.oos_ztms m.oos_zdfy m.oos_zdfr m.oos_zinfl;
5594  by obs date;
5595
5596  pred_mean=mean(pred_zdp, pred_zdy, pred_zep, pred_zde, pred_zsvar, /*pred_zcsp, */pred_zbm, pred_zntis, pred_ztbl,
5596! pred_zlty, pred_zltr, pred_ztms, pred_zdfy, pred_zdfr, pred_zinfl);
5597  res2_mean=(act_oos-pred_mean)**2;
5598
5599  pred_mediane=median(pred_zdp, pred_zdy, pred_zep, pred_zde, pred_zsvar, /*pred_zcsp, */pred_zbm, pred_zntis, pred_ztbl,
5599!  pred_zlty, pred_zltr, pred_ztms, pred_zdfy, pred_zdfr, pred_zinfl);
5600  res2_mediane=(act_oos-pred_mediane)**2;
5601
5602  max=max(pred_zdp, pred_zdy, pred_zep, pred_zde, pred_zsvar, /*pred_zcsp, */pred_zbm, pred_zntis, pred_ztbl, pred_zlty,
5602! pred_zltr, pred_ztms, pred_zdfy, pred_zdfr, pred_zinfl);
5603  min=min(pred_zdp, pred_zdy, pred_zep, pred_zde, pred_zsvar, /*pred_zcsp, */pred_zbm, pred_zntis, pred_ztbl, pred_zlty,
5603! pred_zltr, pred_ztms, pred_zdfy, pred_zdfr, pred_zinfl);
5604
5605
5606  if (pred_zdp=max or pred_zdp=min) then v1=.; else v1=pred_zdp;
5607  if (pred_zdy=max or pred_zdy=min) then v2=.; else v2=pred_zdy;
5608  if (pred_zep=max or pred_zep=min) then v3=.; else v3=pred_zep;
5609  if (pred_zde=max or pred_zde=min) then v4=.; else v4=pred_zde;
5610  if (pred_zsvar=max or pred_zsvar=min) then v5=.; else v5=pred_zsvar;
5611  /*if (pred_zcsp=max or pred_zcsp=min) then v6=.; else v6=pred_zcsp;*/
5612  if (pred_zbm=max or pred_zbm=min) then v7=.; else v7=pred_zbm;
5613  if (pred_zntis=max or pred_zntis=min) then v8=.; else v8=pred_zntis;
5614  if (pred_ztbl=max or pred_ztbl=min) then v9=.; else v9=pred_ztbl;
5615  if (pred_zlty=max or pred_zlty=min) then v10=.; else v10=pred_zlty;
5616  if (pred_zltr=max or pred_zltr=min) then v11=.; else v11=pred_zltr;
5617  if (pred_ztms=max or pred_ztms=min) then v12=.; else v12=pred_ztms;
5618  if (pred_zdfy=max or pred_zdfy=min) then v13=.; else v13=pred_zdfy;
5619  if (pred_zdfr=max or pred_zdfr=min) then v14=.; else v14=pred_zdfr;
5620  if (pred_zinfl=max or pred_zinfl=min) then v15=.; else v15=pred_zinfl;
5621
5622  pred_trim=mean(v1, v2, v3, v4, v5, /*v6, */v7, v8, v9, v10, v11, v12, v13, v14, v15);
5623  res2_trim=(act_oos-pred_trim)**2;
5624
5625  phi09inv = phi09inv_zdp + phi09inv_zdy + phi09inv_zep + phi09inv_zde + phi09inv_zsvar + phi09inv_zcsp + phi09inv_zbm +
5625! phi09inv_zntis + phi09inv_ztbl + phi09inv_zlty + phi09inv_zltr + phi09inv_ztms + phi09inv_zdfy + phi09inv_zdfr +
5625! phi09inv_zinfl;
5626  w09_zdp = phi09inv_zdp / phi09inv; u09_zdp=w09_zdp*pred_zdp;
5627  w09_zdy = phi09inv_zdy / phi09inv; u09_zdy=w09_zdy*pred_zdy;
5628  w09_zep = phi09inv_zep / phi09inv; u09_zep=w09_zep*pred_zep;
5629  w09_zde = phi09inv_zde / phi09inv; u09_zde=w09_zde*pred_zde;
5630  w09_zsvar = phi09inv_zsvar / phi09inv; u09_zsvar=w09_zsvar*pred_zsvar;
5631  /*w09_zcsp = phi09inv_zcsp / phi09inv; u09_zcsp=w09_zcsp*pred_zcsp;*/
5632  w09_zbm = phi09inv_zbm / phi09inv; u09_zbm=w09_zbm*pred_zbm;
5633  w09_zntis = phi09inv_zntis / phi09inv; u09_zntis=w09_zntis*pred_zntis;
5634  w09_ztbl = phi09inv_ztbl / phi09inv; u09_ztbl=w09_ztbl*pred_ztbl;
5635  w09_zlty = phi09inv_zlty / phi09inv; u09_zlty=w09_zlty*pred_zlty;
5636  w09_zltr = phi09inv_zltr / phi09inv; u09_zltr=w09_zltr*pred_zltr;
5637  w09_ztms = phi09inv_ztms / phi09inv; u09_ztms=w09_ztms*pred_ztms;
5638  w09_zdfy = phi09inv_zdfy / phi09inv; u09_zdfy=w09_zdfy*pred_zdfy;
5639  w09_zdfr = phi09inv_zdfr / phi09inv; u09_zdfr=w09_zdfr*pred_zdfr;
5640  w09_zinfl = phi09inv_zinfl / phi09inv; u09_zinfl=w09_zinfl*pred_zinfl;
5641
5642  pred_dmspe09=sum(u09_zdp, u09_zdy, u09_zep, u09_zde, u09_zsvar, /*u09_zcsp, */u09_zbm, u09_zntis, u09_ztbl, u09_zlty,
5642! u09_zltr, u09_ztms, u09_zdfy, u09_zdfr, u09_zinfl);
5643  res2_dmspe09=(act_oos-pred_dmspe09)**2;
5644
5645  phi1inv = phi1inv_zdp + phi1inv_zdy + phi1inv_zep + phi1inv_zde + phi1inv_zsvar + /*phi1inv_zcsp +*/phi1inv_zbm +
5645! phi1inv_zntis + phi1inv_ztbl + phi1inv_zlty + phi1inv_zltr + phi1inv_ztms + phi1inv_zdfy + phi1inv_zdfr + phi1inv_zinfl
5645! ;
5646  w1_zdp = phi1inv_zdp / phi1inv; u1_zdp=w1_zdp*pred_zdp;
5647  w1_zdy = phi1inv_zdy / phi1inv; u1_zdy=w1_zdy*pred_zdy;
5648  w1_zep = phi1inv_zep / phi1inv; u1_zep=w1_zep*pred_zep;
5649  w1_zde = phi1inv_zde / phi1inv; u1_zde=w1_zde*pred_zde;
5650  w1_zsvar = phi1inv_zsvar / phi1inv; u1_zsvar=w1_zsvar*pred_zsvar;
5651  /*w1_zcsp = phi1inv_zcsp / phi1inv; u1_zcsp=w1_zcsp*pred_zcsp;*/
5652  w1_zbm = phi1inv_zbm / phi1inv; u1_zbm=w1_zbm*pred_zbm;
5653  w1_zntis = phi1inv_zntis / phi1inv; u1_zntis=w1_zntis*pred_zntis;
5654  w1_ztbl = phi1inv_ztbl / phi1inv; u1_ztbl=w1_ztbl*pred_ztbl;
5655  w1_zlty = phi1inv_zlty / phi1inv; u1_zlty=w1_zlty*pred_zlty;
5656  w1_zltr = phi1inv_zltr / phi1inv; u1_zltr=w1_zltr*pred_zdp;
5657  w1_ztms = phi1inv_ztms / phi1inv; u1_ztms=w1_ztms*pred_ztms;
5658  w1_zdfy = phi1inv_zdfy / phi1inv; u1_zdfy=w1_zdfy*pred_zdfy;
5659  w1_zdfr = phi1inv_zdfr / phi1inv; u1_zdfr=w1_zdfr*pred_zdfr;
5660  w1_zinfl = phi1inv_zinfl / phi1inv; u1_zinfl=w1_zinfl*pred_zinfl;
5661
5662  pred_dmspe1=sum(u1_zdp, u1_zdy, u1_zep, u1_zde, u1_zsvar, /*u1_zcsp, */u1_zbm, u1_zntis, u1_ztbl, u1_zlty, u1_zltr,
5662! u1_ztms, u1_zdfy, u1_zdfr, u1_zinfl);
5663  res2_dmspe1=(act_oos-pred_dmspe1)**2;
5664
5665  res2_n_oos=res_n_oos**2;
5666
5667  f_mean=res2_n_oos-(res2_mean-((pred_n_oos-pred_mean)**2));
5668  f_mediane=res2_n_oos-(res2_mediane-((pred_n_oos-pred_mediane)**2));
5669  f_trim=res2_n_oos-(res2_trim-((pred_n_oos-pred_trim)**2));
5670  f_dmspe09=res2_n_oos-(res2_dmspe09-((pred_n_oos-pred_dmspe09)**2));
5671  f_dmspe1=res2_n_oos-(res2_dmspe1-((pred_n_oos-pred_dmspe1)**2));
5672
5673  if 195001 le date le 197212 then periode="1950-1972";
5674  if 197301 le date le 199512 then periode="1973-1995";
5675  if 199601 le date le 201812 then periode="1996-2018";
5676
5677  keep obs date periode act_oos pred_n_oos res_n_oos res2_n_oos
5678      pred_zdp pred_zdy pred_zep pred_zde pred_zsvar /*pred_zcsp */pred_zbm pred_zntis pred_ztbl pred_zlty pred_zltr
5678! pred_ztms pred_zdfy pred_zdfr pred_zinfl
5679      res_zdp res_zdy res_zep res_zde res_zsvar /*res_zcsp */res_zbm res_zntis res_ztbl res_zlty res_zltr res_ztms
5679! res_zdfy res_zdfr res_zinfl
5680      res2_zdp res2_zdy res2_zep res2_zde res2_zsvar /*res2_zcsp */res2_zbm res2_zntis res2_ztbl res2_zlty res2_zltr
5680! res2_ztms res2_zdfy res2_zdfr res2_zinfl
5681      pred_mean pred_mediane pred_trim pred_dmspe09 pred_dmspe1
5682      res2_mean res2_mediane res2_trim res2_dmspe09 res2_dmspe1
5683      f_mean f_mediane f_trim f_dmspe09 f_dmspe1;
5684  run;
5685  proc print data=previsions_US;
5686  run;
5687
5688  data previsions_US; set previsions_US;
5689  if res2_mean=. then res2_n_mean=.; else res2_n_mean=res2_n_oos;
5690  if res2_mediane=. then res2_n_mediane=.; else res2_n_mediane=res2_n_oos;
5691  if res2_trim=. then res2_n_trim=.; else res2_n_trim=res2_n_oos;
5692  if res2_dmspe09=. then res2_n_dmspe09=.; else res2_n_dmspe09=res2_n_oos;
5693  if res2_dmspe1=. then res2_n_dmspe1=.; else res2_n_dmspe1=res2_n_oos;
5694  run;
5695
5696  proc print data=previsions_US;
5697  run;
5698
5699  PROC EXPORT DATA=previsions_US
5700              OUTFILE= "C:\Users\NPMOR\Desktop\Pas\results\CF_OS_prev_US.xlsx"
5701              DBMS=XLSX REPLACE;
5702  RUN;
5703
5704
5705


ChrisNZ
Tourmaline | Level 20

Unsure it's related, but you have a bug. Fix this:

 

NOTE: Variable rtsx is uninitialized.

Catch up on SAS Innovate 2026

Nearly 200 sessions are now available on demand with the SAS Innovate Digital Pass.

Explore Now →
How to Concatenate Values

Learn how use the CAT functions in SAS to join values from multiple variables into a single value.

Find more tutorials on the SAS Users YouTube channel.

SAS Training: Just a Click Away

 Ready to level-up your skills? Choose your own adventure.

Browse our catalog!

Discussion stats
  • 16 replies
  • 10414 views
  • 2 likes
  • 5 in conversation