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

Hello, I am a new user of SAS but I did not find where I did wrong after browsing this kind of message error on this website.

 

"22 : impossible de déterminer LINE et COLUMN.
ERROR 22-322: Syntax error, expecting one of the following: ;, (, BLANKLINE, CONTENTS, DATA, DOUBLE, GRANDTOTAL_LABEL,
GRANDTOT_LABEL, GRAND_LABEL, GTOTAL_LABEL, GTOT_LABEL, HEADING, LABEL, N, NOOBS, NOSUMLABEL, OBS, ROUND, ROWS,
SPLIT, STYLE, SUMLABEL, UNIFORM, WIDTH.
202 : impossible de déterminer LINE et COLUMN.
ERROR 202-322: The option or parameter is not recognized and will be ignored."

 

These are my SAS codes. This is a macro:

 

/*Calculer les statistiques pour la signifiance du coefficient R2 et le profit generé */

%macro r2gain(methode, met, setvar, k);

proc summary n nway data=previsions_&setvar.(where= (periode in ("1973-1995" "1996-2018")));
var res2_&methode. res2_n_&methode.;
output out=coeff_det_&methode._&setvar._T(drop=_type_) sum=;run;

data coeff_det_&methode._&setvar._T;set coeff_det_&methode._&setvar._T;
r2_&methode._CF_OS_T = 1-(res2_&methode./res2_n_&methode.);
r2_adj_&methode._CF_OS_T = 1-(_freq_-1)/(_freq_- 1 - &k.)*(1-r2_&methode._CF_OS_T);methode=&met.;
keep r2_&methode._CF_OS_T r2_adj_&methode._CF_OS_T methode;run;

/*proc summary n nway data=previsions_&setvar.(where= (periode in ("1973-1995")));
var res2_&methode. res2_n_&methode.;
output out=coeff_det_&methode._&setvar._S2(drop=_type_) sum=;run;

data coeff_det_&methode._&setvar._S2;set coeff_det_&methode._&setvar._S2;
r2_&methode._CF_OS_S2 = 1-(res2_&methode./res2_n_&methode.);
r2_adj_&methode._CF_OS_S2 = 1-(_freq_-1)/(_freq_- 1 - &k.)*(1-r2_&methode._CF_OS_S2);methode=&met.;
keep r2_&methode._CF_OS_S2 r2_adj_&methode._CF_OS_S2 methode;run;

proc summary n nway data=previsions_&setvar.(where= (periode in ("1996-2018")));
var res2_&methode. res2_n_&methode.;
output out=coeff_det_&methode._&setvar._S3(drop=_type_) sum=;run;

data coeff_det_&methode._&setvar._S3;set coeff_det_&methode._&setvar._S3;
r2_&methode._CF_OS_S3 = 1-(res2_&methode./res2_n_&methode.);
r2_adj_&methode._CF_OS_S3 = 1-(_freq_-1)/(_freq_- 1 - &k.)*(1-r2_&methode._CF_OS_S3);methode=&met.;
keep r2_&methode._CF_OS_S3 r2_adj_&methode._CF_OS_S3 methode;run;*/


proc reg data=previsions_&setvar.(where= (periode in ("1973-1995" "1996-2018"))) outest=f_&methode._stat_T edf outseb tableout;
model f_&methode.= /MSE;quit;

/*proc reg data=previsions_&setvar.(where= (periode in ("1973-1995"))) outest=f_&methode._stat_S2 edf outseb tableout;
model f_&methode.= /MSE;quit;

proc reg data=previsions_&setvar.(where= (periode in ("1996-2018"))) outest=f_&methode._stat_S3 edf outseb tableout;
model f_&methode.= /MSE;quit;*/


data t_&methode._T; set f_&methode._stat_T;
if _type_="T"; keep intercept methode;methode=&met.;rename intercept=tstat_T;label intercept=tstat_T;run;

data pvalue_&methode._T; set f_&methode._stat_T;
if _type_="PVALUE"; keep intercept methode; methode=&met.;rename intercept=PVALUE_T;label intercept=PVALUE_T;run;

/*data t_&methode._S2; set f_&methode._stat_S2;
if _type_="T"; keep intercept methode;methode=&met.;rename intercept=tstat_S2;label intercept=tstat_S2;run;

data pvalue_&methode._S2; set f_&methode._stat_S2;
if _type_="PVALUE"; keep intercept methode; methode=&met.;rename intercept=PVALUE_S2;label intercept=PVALUE_S2;run;

data t_&methode._S3; set f_&methode._stat_S3;
if _type_="T"; keep intercept methode;methode=&met.;rename intercept=tstat_S3;label intercept=tstat_S3;run;

data pvalue_&methode._S3; set f_&methode._stat_S3;
if _type_="PVALUE"; keep intercept methode; methode=&met.;rename intercept=PVALUE_S3;label intercept=PVALUE_S3;run;*/


data previsions_&setvar.;
merge previsions_&setvar. (in=a) varstock rend;
by obs;
if a;
gamma=3;

w0_n=(1/gamma)*(pred_n_oos/var_CRSPSPvw);
w_&methode.=(1/gamma)*(pred_&methode./var_CRSPSPvw);

w0_n_aj=w0_n;
flag0=0;
if w0_n<0 then do; w0_n_aj=0; flag0=1; end;
if w0_n>1.5 then do; w0_n_aj=1.5; flag0=1; end;
if w0_n=. then w0_n_aj=.;

w_&methode._aj=w_&methode.;
flag_&methode.=0;
if w_&methode.<0 then do; w_&methode._aj=0;flag_&methode.=1; end;
if w_&methode.>1.5 then do; w_&methode._aj=1.5;flag_&methode.=1; end;
if w_&methode.=. then w_&methode._aj=.;

rendp_n = w0_n*CRSPSPvw + (1-w0_n)*Rfree;
rendp_&methode. = w_&methode.*rtsx+ (1-w_&methode.)*Rfree;

rendp_n_aj = w0_n_aj*CRSPSPvw + (1-w0_n_aj)*Rfree;
rendp_&methode._aj = w_&methode._aj*CRSPSPvw + (1-w_&methode._aj)*Rfree;
run;

proc summary n nway data=previsions_&setvar.(where= (periode in ("1973-1995" "1996-2018")));
var rendp_n rendp_&methode. rendp_n_aj rendp_&methode._aj;
output out=gain_T (drop=_type_ _freq_) mean(rendp_n)=m0_T mean(rendp_&methode.)=m_&methode._T
var(rendp_n)=var0_T var(rendp_&methode.)=var_&methode._T
mean(rendp_n_aj)=m0_aj_T mean(rendp_&methode._aj)=m_&methode._aj_T
var(rendp_n_aj)=var0_aj_T var(rendp_&methode._aj)=var_&methode._aj_T;
run;

data gain_&methode._T; set gain_T;
gamma=3;
v0_T=m0_T-(1/2)*gamma*var0_T;v_&methode._T=m_&methode._T-(1/2)*gamma*var_&methode._T;
gain_&methode._T=(v_&methode._T-v0_T)*12;
methode=&met.;label m0_T=m0_T;label var0_T=var0_T;

v0_aj_T=m0_aj_T-(1/2)*gamma*var0_aj_T;v_&methode._aj_T=m_&methode._aj_T-(1/2)*gamma*var_&methode._aj_T;
gain_&methode._aj_T=(v_&methode._aj_T-v0_aj_T)*12;
methode=&met.;label m0_aj_T=m0_aj_T;label var0_aj_T=var0_aj_T;
run;

/*proc summary n nway data=previsions_&setvar.(where= (periode in ("1973-1995")));
var rendp_n rendp_&methode. rendp_n_aj rendp_&methode._aj;
output out=gain_S2 (drop=_type_ _freq_) mean(rendp_n)=m0_S2 mean(rendp_&methode.)=m_&methode._S2
var(rendp_n)=var0_S2 var(rendp_&methode.)=var_&methode._S2
mean(rendp_n_aj)=m0_aj_S2 mean(rendp_&methode._aj)=m_&methode._aj_S2
var(rendp_n_aj)=var0_aj_S2 var(rendp_&methode._aj)=var_&methode._aj_S2;
run;

data gain_&methode._S2; set gain_S2;
gamma=3;
v0_S2=m0_S2-(1/2)*gamma*var0_S2;v_&methode._S2=m_&methode._S2-(1/2)*gamma*var_&methode._S2;
gain_&methode._S2=(v_&methode._S2-v0_S2)*12;
methode=&met.;label m0_S2=m0_S2;label var0_S2=var0_S2;

v0_aj_S2=m0_aj_S2-(1/2)*gamma*var0_aj_S2;v_&methode._aj_S2=m_&methode._aj_S2-(1/2)*gamma*var_&methode._aj_S2;
gain_&methode._aj_S2=(v_&methode._aj_S2-v0_aj_S2)*12;
methode=&met.;label m0_aj_S2=m0_aj_S2;label var0_aj_S2=var0_aj_S2;
run;

proc summary n nway data=previsions_&setvar.(where= (periode in ("1996-2018")));
var rendp_n rendp_&methode. rendp_n_aj rendp_&methode._aj;
output out=gain_S3 (drop=_type_ _freq_) mean(rendp_n)=m0_S3 mean(rendp_&methode.)=m_&methode._S3
var(rendp_n)=var0_S3 var(rendp_&methode.)=var_&methode._S3
mean(rendp_n_aj)=m0_aj_S3 mean(rendp_&methode._aj)=m_&methode._aj_S3
var(rendp_n_aj)=var0_aj_S3 var(rendp_&methode._aj)=var_&methode._aj_S3;
run;

data gain_&methode._S3; set gain_S3;
gamma=3;
v0_S3=m0_S3-(1/2)*gamma*var0_S3;v_&methode._S3=m_&methode._S3-(1/2)*gamma*var_&methode._S3;
gain_&methode._S3=(v_&methode._S3-v0_S3)*12;
methode=&met.;label m0_S3=m0_S3;label var0_S3=var0_S3;

v0_aj_S3=m0_aj_S3-(1/2)*gamma*var0_aj_S3;v_&methode._aj_S3=m_&methode._aj_S3-(1/2)*gamma*var_&methode._aj_S3;
gain_&methode._aj_S3=(v_&methode._aj_S3-v0_aj_S3)*12;
methode=&met.;label m0_aj_S3=m0_aj_S3;label var0_aj_S3=var0_aj_S3;
run;*/

data r2gain_&methode.;
merge coeff_det_&methode._&setvar._T t_&methode._T pvalue_&methode._T gain_&methode._T
/*coeff_det_&methode._&setvar._S2 t_&methode._S2 pvalue_&methode._S2 gain_&methode._S2
coeff_det_&methode._&setvar._S3 t_&methode._S3 pvalue_&methode._S3 gain_&methode._S3*/;
by methode;
run;

proc print data=r2gain_&methode.
RUN;

PROC EXPORT DATA=r2gain_&methode.
OUTFILE= "C:\Users\U-FSA-SDM-B11\Desktop\Pas\results\CF_OS_r2gain_&methode._&setvar..xlsx"
DBMS=XLSX REPLACE;
RUN;

%mend r2gain;

 

/* Voici les 5 principaux modèles de combinaison de prévisions OS utilisés. */

%r2gain(mean, 'mean', US, 14);
%r2gain(mediane, 'mediane', US, 14);
%r2gain(trim, 'trim', US, 14);
%r2gain(dmspe09,'dmspe09', US, 14);
%r2gain(dmspe1, 'dmspe1', US, 14);

 

Could you please help me to find where is my mistake ?

Thanks !

1 ACCEPTED SOLUTION

Accepted Solutions
ChrisNZ
Tourmaline | Level 20

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

 

NOTE: Variable rtsx is uninitialized.

View solution in original post

16 REPLIES 16
PaigeMiller
Diamond | Level 26

Please re-run your code with this as the first line

 

options mprint;

Then copy (as text, not as a screen capture) the entire log (not just the error messages) and paste it into the window that appears when you click on the {i} icon. Do not paste it directly into your reply, as this destroys the formatting and makes the log nearly impossible to read.

--
Paige Miller
pmorel3
Obsidian | Level 7

Hello Paige,

Thanks for your answer.

I am sorry but the entire log is too long to paste into the window that appears when I click on the {i} icon.

I enclosed the entire word log file to this reply.

PaigeMiller
Diamond | Level 26

Many of us will not open Microsoft Office documents, as they are security threats.

 

If the entire log didn't fit in the {i} window, try showing us 50 lines before the error messages, plus the error messages.

--
Paige Miller
pmorel3
Obsidian | Level 7

I put "options mprint;" as first line but you cannot see it because of the long log.

This I can do. Thanks !

 

5254  /* Explications de la macro r2gain(methode, met, setvar, k)
5255  La macro r2gain(methode, met, setvar, k calcule les statistiques pour la signifiance du coefficient R2 OS
5256  et le profit generé pour la période totale et les deux sous-périodes.
5257
5258  methode: méthode de sélection du "combining weight" à utiliser, qui détermine la pondération à mettre sur chaque
5259           prévision individuelle dans leur combinaison;
5260  meth: identifiant associé à la méthode; l'identifiant doit concorder avec le choix de méthode;
5261  setvar: nom du set de variables à utiliser, soit CAN, US, BV ou ALL;
5262  k: nombre de variables dans le setvar choisi; le nombre doit concorder avec le choix de setvar (voir ci-dessous);
5263
5264  Cinq choix sont possibles pour methode: methode = mean, methode = mediane, methode = trim,
5265  methode = dmspe1, methode = dmspe09.
5266
5267  Le nombre de variables dans le set de variables doit concorder avec le choix du set de variables:
5268  Si le setvar est "US", alors k = 14;
5269  */
5270
5271  /* Voici les 5 principaux modèles de combinaison de prévisions OS utilisés. */
5272
5273  %r2gain(mean, 'mean', US, 14);
MPRINT(R2GAIN):   proc summary n nway data=previsions_US(where= (periode in ("1973-1995" "1996-2018")));
MPRINT(R2GAIN):   var res2_mean res2_n_mean;
MPRINT(R2GAIN):   output out=coeff_det_mean_US_T(drop=_type_) sum=;
MPRINT(R2GAIN):  run;
MPRINT(R2GAIN):   data coeff_det_mean_US_T;
MPRINT(R2GAIN):  set coeff_det_mean_US_T;
MPRINT(R2GAIN):   r2_mean_CF_OS_T = 1-(res2_mean/res2_n_mean);
MPRINT(R2GAIN):   r2_adj_mean_CF_OS_T = 1-(_freq_-1)/(_freq_- 1 - 14)*(1-r2_mean_CF_OS_T);
MPRINT(R2GAIN):  methode='mean';
MPRINT(R2GAIN):   keep r2_mean_CF_OS_T r2_adj_mean_CF_OS_T methode;
MPRINT(R2GAIN):  run;
MPRINT(R2GAIN):   proc reg data=previsions_US(where= (periode in ("1973-1995" "1996-2018"))) outest=f_mean_stat_T edf outseb
tableout;
MPRINT(R2GAIN):   model f_mean= /MSE;
MPRINT(R2GAIN):  quit;
MPRINT(R2GAIN):   data t_mean_T;
MPRINT(R2GAIN):   set f_mean_stat_T;
MPRINT(R2GAIN):   if _type_="T";
MPRINT(R2GAIN):   keep intercept methode;
MPRINT(R2GAIN):  methode='mean';
MPRINT(R2GAIN):  rename intercept=tstat_T;
MPRINT(R2GAIN):  label intercept= tstat_T;
MPRINT(R2GAIN):  run;
MPRINT(R2GAIN):   data pvalue_mean_T;
MPRINT(R2GAIN):   set f_mean_stat_T;
MPRINT(R2GAIN):   if _type_="PVALUE";
MPRINT(R2GAIN):   keep intercept methode;
MPRINT(R2GAIN):   methode='mean';
MPRINT(R2GAIN):  rename intercept=PVALUE_T;
MPRINT(R2GAIN):  label intercept= PVALUE_T;
MPRINT(R2GAIN):  run;
MPRINT(R2GAIN):   data previsions_US;
MPRINT(R2GAIN):   merge previsions_US (in=a) varstock rend;
MPRINT(R2GAIN):   by obs;
MPRINT(R2GAIN):   if a;
MPRINT(R2GAIN):   gamma=3;
MPRINT(R2GAIN):   w0_n=(1/gamma)*(pred_n_oos/var_CRSPSPvw);
MPRINT(R2GAIN):   w_mean=(1/gamma)*(pred_mean/var_CRSPSPvw);
MPRINT(R2GAIN):   w0_n_aj=w0_n;
MPRINT(R2GAIN):   flag0=0;
MPRINT(R2GAIN):   if w0_n<0 then do;
MPRINT(R2GAIN):   w0_n_aj=0;
MPRINT(R2GAIN):   flag0=1;
MPRINT(R2GAIN):   end;
MPRINT(R2GAIN):   if w0_n>1.5 then do;
MPRINT(R2GAIN):   w0_n_aj=1.5;
MPRINT(R2GAIN):   flag0=1;
MPRINT(R2GAIN):   end;
MPRINT(R2GAIN):   if w0_n=. then w0_n_aj=.;
MPRINT(R2GAIN):   w_mean_aj=w_mean;
MPRINT(R2GAIN):   flag_mean=0;
MPRINT(R2GAIN):   if w_mean<0 then do;
MPRINT(R2GAIN):   w_mean_aj=0;
MPRINT(R2GAIN):  flag_mean=1;
MPRINT(R2GAIN):   end;
MPRINT(R2GAIN):   if w_mean>1.5 then do;
MPRINT(R2GAIN):   w_mean_aj=1.5;
MPRINT(R2GAIN):  flag_mean=1;
MPRINT(R2GAIN):   end;
MPRINT(R2GAIN):   if w_mean=. then w_mean_aj=.;
MPRINT(R2GAIN):   rendp_n = w0_n*CRSPSPvw + (1-w0_n)*Rfree;
MPRINT(R2GAIN):   rendp_mean = w_mean*rtsx+ (1-w_mean)*Rfree;
MPRINT(R2GAIN):   rendp_n_aj = w0_n_aj*CRSPSPvw + (1-w0_n_aj)*Rfree;
MPRINT(R2GAIN):   rendp_mean_aj = w_mean_aj*CRSPSPvw + (1-w_mean_aj)*Rfree;
MPRINT(R2GAIN):   run;
MPRINT(R2GAIN):   proc summary n nway data=previsions_US(where= (periode in ("1973-1995" "1996-2018")));
MPRINT(R2GAIN):   var rendp_n rendp_mean rendp_n_aj rendp_mean_aj;
MPRINT(R2GAIN):   output out=gain_T (drop=_type_ _freq_) mean(rendp_n)=m0_T mean(rendp_mean)=m_mean_T var(rendp_n)=var0_T
var(rendp_mean)=var_mean_T mean(rendp_n_aj)=m0_aj_T mean(rendp_mean_aj)=m_mean_aj_T var(rendp_n_aj)=var0_aj_T
var(rendp_mean_aj)=var_mean_aj_T;
MPRINT(R2GAIN):   run;
MPRINT(R2GAIN):   data gain_mean_T;
MPRINT(R2GAIN):   set gain_T;
MPRINT(R2GAIN):   gamma=3;
MPRINT(R2GAIN):   v0_T=m0_T-(1/2)*gamma*var0_T;
MPRINT(R2GAIN):  v_mean_T=m_mean_T-(1/2)*gamma*var_mean_T;
MPRINT(R2GAIN):   gain_mean_T=(v_mean_T-v0_T)*12;
MPRINT(R2GAIN):   methode='mean';
MPRINT(R2GAIN):  label m0_T= m0_T;
MPRINT(R2GAIN):  label var0_T= var0_T;
MPRINT(R2GAIN):   v0_aj_T=m0_aj_T-(1/2)*gamma*var0_aj_T;
MPRINT(R2GAIN):  v_mean_aj_T=m_mean_aj_T-(1/2)*gamma*var_mean_aj_T;
MPRINT(R2GAIN):   gain_mean_aj_T=(v_mean_aj_T-v0_aj_T)*12;
MPRINT(R2GAIN):   methode='mean';
MPRINT(R2GAIN):  label m0_aj_T= m0_aj_T;
MPRINT(R2GAIN):  label var0_aj_T= var0_aj_T;
MPRINT(R2GAIN):   run;
MPRINT(R2GAIN):   data r2gain_mean;
MPRINT(R2GAIN):   merge coeff_det_mean_US_T t_mean_T pvalue_mean_T gain_mean_T ;
MPRINT(R2GAIN):   by methode;
MPRINT(R2GAIN):   run;
22 : impossible de déterminer LINE et COLUMN.
ERROR 22-322: Syntax error, expecting one of the following: ;, (, BLANKLINE, CONTENTS, DATA, DOUBLE, GRANDTOTAL_LABEL,
              GRANDTOT_LABEL, GRAND_LABEL, GTOTAL_LABEL, GTOT_LABEL, HEADING, LABEL, N, NOOBS, NOSUMLABEL, OBS, ROUND, ROWS,
              SPLIT, STYLE, SUMLABEL, UNIFORM, WIDTH.
202 : impossible de déterminer LINE et COLUMN.
ERROR 202-322: The option or parameter is not recognized and will be ignored.
MPRINT(R2GAIN):   proc print data=r2gain_mean RUN PROC EXPORT DATA=r2gain_mean OUTFILE=
"C:\Users\U-FSA-SDM-B11\Desktop\Pas\results\CF_OS_r2gain_mean_US.xlsx" DBMS=XLSX REPLACE;
MPRINT(R2GAIN):   WXLX;
MPRINT(R2GAIN):   RUN;
PaigeMiller
Diamond | Level 26

Thank you for following the instructions! It looks like @r_behata has correctly diagnosed the problem.

--
Paige Miller
r_behata
Barite | Level 11

Looks like you are missing a semi-colon.

 

	proc print data=r2gain_&methode. ;
		RUN;
pmorel3
Obsidian | Level 7

Thanks r_behata.

I tried to add a semi-colon but I always get 1 error message for my macro dmspe09 "%r2gain(dmspe09,'dmspe09', US, 14);"

 

1310  /* Voici les 5 principaux modèles de combinaison de prévisions OS utilisés. */
1311
1312  %r2gain(mean, 'mean', US, 14);
MPRINT(R2GAIN):   proc summary n nway data=previsions_US(where= (periode in ("1973-1995" "1996-2018")));
MPRINT(R2GAIN):   var res2_mean res2_n_mean;
MPRINT(R2GAIN):   output out=coeff_det_mean_US_T(drop=_type_) sum=;
MPRINT(R2GAIN):  run;

NOTE: There were 6 observations read from the data set WORK.PREVISIONS_US.
      WHERE periode in ('1973-1995', '1996-2018');
NOTE: The data set WORK.COEFF_DET_MEAN_US_T has 1 observations and 3 variables.
NOTE: PROCEDURE SUMMARY a utilisé (Durée totale du traitement) :
      real time           0.01 seconds
      cpu time            0.00 seconds


MPRINT(R2GAIN):   data coeff_det_mean_US_T;
MPRINT(R2GAIN):  set coeff_det_mean_US_T;
MPRINT(R2GAIN):   r2_mean_CF_OS_T = 1-(res2_mean/res2_n_mean);
MPRINT(R2GAIN):   r2_adj_mean_CF_OS_T = 1-(_freq_-1)/(_freq_- 1 - 14)*(1-r2_mean_CF_OS_T);
MPRINT(R2GAIN):  methode='mean';
MPRINT(R2GAIN):   keep r2_mean_CF_OS_T r2_adj_mean_CF_OS_T methode;
MPRINT(R2GAIN):  run;

NOTE: There were 1 observations read from the data set WORK.COEFF_DET_MEAN_US_T.
NOTE: The data set WORK.COEFF_DET_MEAN_US_T has 1 observations and 3 variables.
NOTE: DATA statement a utilisé (Durée totale du traitement) :
      real time           0.00 seconds
      cpu time            0.01 seconds


MPRINT(R2GAIN):   proc reg data=previsions_US(where= (periode in ("1973-1995" "1996-2018"))) outest=f_mean_stat_T edf outseb
tableout;
MPRINT(R2GAIN):   model f_mean= /MSE;
MPRINT(R2GAIN):  quit;

NOTE: The data set WORK.F_MEAN_STAT_T has 7 observations and 11 variables.
NOTE: PROCEDURE REG a utilisé (Durée totale du traitement) :
      real time           1.24 seconds
      cpu time            0.43 seconds


MPRINT(R2GAIN):   data t_mean_T;
MPRINT(R2GAIN):   set f_mean_stat_T;
MPRINT(R2GAIN):   if _type_="T";
MPRINT(R2GAIN):   keep intercept methode;
MPRINT(R2GAIN):  methode='mean';
MPRINT(R2GAIN):  rename intercept=tstat_T;
MPRINT(R2GAIN):  label intercept= tstat_T;
MPRINT(R2GAIN):  run;

NOTE: There were 7 observations read from the data set WORK.F_MEAN_STAT_T.
NOTE: The data set WORK.T_MEAN_T has 1 observations and 2 variables.
NOTE: DATA statement a utilisé (Durée totale du traitement) :
      real time           0.00 seconds
      cpu time            0.00 seconds


MPRINT(R2GAIN):   data pvalue_mean_T;
MPRINT(R2GAIN):   set f_mean_stat_T;
MPRINT(R2GAIN):   if _type_="PVALUE";
MPRINT(R2GAIN):   keep intercept methode;
MPRINT(R2GAIN):   methode='mean';
MPRINT(R2GAIN):  rename intercept=PVALUE_T;
MPRINT(R2GAIN):  label intercept= PVALUE_T;
MPRINT(R2GAIN):  run;

NOTE: There were 7 observations read from the data set WORK.F_MEAN_STAT_T.
NOTE: The data set WORK.PVALUE_MEAN_T has 1 observations and 2 variables.
NOTE: DATA statement a utilisé (Durée totale du traitement) :
      real time           0.01 seconds
      cpu time            0.00 seconds


MPRINT(R2GAIN):   data previsions_US;
MPRINT(R2GAIN):   merge previsions_US (in=a) varstock rend;
MPRINT(R2GAIN):   by obs;
MPRINT(R2GAIN):   if a;
MPRINT(R2GAIN):   gamma=3;
MPRINT(R2GAIN):   w0_n=(1/gamma)*(pred_n_oos/var_CRSPSPvw);
MPRINT(R2GAIN):   w_mean=(1/gamma)*(pred_mean/var_CRSPSPvw);
MPRINT(R2GAIN):   w0_n_aj=w0_n;
MPRINT(R2GAIN):   flag0=0;
MPRINT(R2GAIN):   if w0_n<0 then do;
MPRINT(R2GAIN):   w0_n_aj=0;
MPRINT(R2GAIN):   flag0=1;
MPRINT(R2GAIN):   end;
MPRINT(R2GAIN):   if w0_n>1.5 then do;
MPRINT(R2GAIN):   w0_n_aj=1.5;
MPRINT(R2GAIN):   flag0=1;
MPRINT(R2GAIN):   end;
MPRINT(R2GAIN):   if w0_n=. then w0_n_aj=.;
MPRINT(R2GAIN):   w_mean_aj=w_mean;
MPRINT(R2GAIN):   flag_mean=0;
MPRINT(R2GAIN):   if w_mean<0 then do;
MPRINT(R2GAIN):   w_mean_aj=0;
MPRINT(R2GAIN):  flag_mean=1;
MPRINT(R2GAIN):   end;
MPRINT(R2GAIN):   if w_mean>1.5 then do;
MPRINT(R2GAIN):   w_mean_aj=1.5;
MPRINT(R2GAIN):  flag_mean=1;
MPRINT(R2GAIN):   end;
MPRINT(R2GAIN):   if w_mean=. then w_mean_aj=.;
MPRINT(R2GAIN):   rendp_n = w0_n*CRSPSPvw + (1-w0_n)*Rfree;
MPRINT(R2GAIN):   rendp_mean = w_mean*rtsx+ (1-w_mean)*Rfree;
MPRINT(R2GAIN):   rendp_n_aj = w0_n_aj*CRSPSPvw + (1-w0_n_aj)*Rfree;
MPRINT(R2GAIN):   rendp_mean_aj = w_mean_aj*CRSPSPvw + (1-w_mean_aj)*Rfree;
MPRINT(R2GAIN):   run;

NOTE: Variable rtsx is uninitialized.
NOTE: Missing values were generated as a result of performing an operation on missing values.
      Each place is given by: (Number of times) at (Line):(Column).
      6 à 9:137
NOTE: There were 6 observations read from the data set WORK.PREVISIONS_US.
NOTE: There were 827 observations read from the data set WORK.VARSTOCK.
NOTE: There were 828 observations read from the data set WORK.REND.
NOTE: The data set WORK.PREVISIONS_US has 6 observations and 84 variables.
NOTE: DATA statement a utilisé (Durée totale du traitement) :
      real time           0.02 seconds
      cpu time            0.01 seconds


MPRINT(R2GAIN):   proc summary n nway data=previsions_US(where= (periode in ("1973-1995" "1996-2018")));
MPRINT(R2GAIN):   var rendp_n rendp_mean rendp_n_aj rendp_mean_aj;
MPRINT(R2GAIN):   output out=gain_T (drop=_type_ _freq_) mean(rendp_n)=m0_T mean(rendp_mean)=m_mean_T var(rendp_n)=var0_T
var(rendp_mean)=var_mean_T mean(rendp_n_aj)=m0_aj_T mean(rendp_mean_aj)=m_mean_aj_T var(rendp_n_aj)=var0_aj_T
var(rendp_mean_aj)=var_mean_aj_T;
MPRINT(R2GAIN):   run;

NOTE: There were 6 observations read from the data set WORK.PREVISIONS_US.
      WHERE periode in ('1973-1995', '1996-2018');
NOTE: The data set WORK.GAIN_T has 1 observations and 8 variables.
NOTE: PROCEDURE SUMMARY a utilisé (Durée totale du traitement) :
      real time           0.01 seconds
      cpu time            0.03 seconds


MPRINT(R2GAIN):   data gain_mean_T;
MPRINT(R2GAIN):   set gain_T;
MPRINT(R2GAIN):   gamma=3;
MPRINT(R2GAIN):   v0_T=m0_T-(1/2)*gamma*var0_T;
MPRINT(R2GAIN):  v_mean_T=m_mean_T-(1/2)*gamma*var_mean_T;
MPRINT(R2GAIN):   gain_mean_T=(v_mean_T-v0_T)*12;
MPRINT(R2GAIN):   methode='mean';
MPRINT(R2GAIN):  label m0_T= m0_T;
MPRINT(R2GAIN):  label var0_T= var0_T;
MPRINT(R2GAIN):   v0_aj_T=m0_aj_T-(1/2)*gamma*var0_aj_T;
MPRINT(R2GAIN):  v_mean_aj_T=m_mean_aj_T-(1/2)*gamma*var_mean_aj_T;
MPRINT(R2GAIN):   gain_mean_aj_T=(v_mean_aj_T-v0_aj_T)*12;
MPRINT(R2GAIN):   methode='mean';
MPRINT(R2GAIN):  label m0_aj_T= m0_aj_T;
MPRINT(R2GAIN):  label var0_aj_T= var0_aj_T;
MPRINT(R2GAIN):   run;

NOTE: Missing values were generated as a result of performing an operation on missing values.
      Each place is given by: (Number of times) at (Line):(Column).
      1 à 95054:227   1 à 14:33
NOTE: There were 1 observations read from the data set WORK.GAIN_T.
NOTE: The data set WORK.GAIN_MEAN_T has 1 observations and 16 variables.
NOTE: DATA statement a utilisé (Durée totale du traitement) :
      real time           0.01 seconds
      cpu time            0.00 seconds


MPRINT(R2GAIN):   run;
MPRINT(R2GAIN):   data r2gain_mean;
MPRINT(R2GAIN):   merge coeff_det_mean_US_T t_mean_T pvalue_mean_T gain_mean_T ;
MPRINT(R2GAIN):   by methode;
MPRINT(R2GAIN):   run;

NOTE: There were 1 observations read from the data set WORK.COEFF_DET_MEAN_US_T.
NOTE: There were 1 observations read from the data set WORK.T_MEAN_T.
NOTE: There were 1 observations read from the data set WORK.PVALUE_MEAN_T.
NOTE: There were 1 observations read from the data set WORK.GAIN_MEAN_T.
NOTE: The data set WORK.R2GAIN_MEAN has 1 observations and 20 variables.
NOTE: DATA statement a utilisé (Durée totale du traitement) :
      real time           0.01 seconds
      cpu time            0.01 seconds


MPRINT(R2GAIN):   proc print data=r2gain_mean;
MPRINT(R2GAIN):   RUN;

NOTE: There were 1 observations read from the data set WORK.R2GAIN_MEAN.
NOTE: PROCEDURE PRINT a utilisé (Durée totale du traitement) :
      real time           0.01 seconds
      cpu time            0.01 seconds


MPRINT(R2GAIN):   PROC EXPORT DATA=r2gain_mean OUTFILE= "C:\Users\NPMOR\Desktop\Pas\results\CF_OS_r2gain_mean_US.xlsx"
DBMS=XLSX REPLACE;
MPRINT(R2GAIN):   WXLX;
MPRINT(R2GAIN):   RUN;

NOTE: The export data set has 1 observations and 20 variables.
NOTE: "C:\Users\NPMOR\Desktop\Pas\results\CF_OS_r2gain_mean_US.xlsx" file was successfully created.
NOTE: PROCEDURE EXPORT a utilisé (Durée totale du traitement) :
      real time           0.04 seconds
      cpu time            0.00 seconds


1313  %r2gain(mediane, 'mediane', US, 14);
MPRINT(R2GAIN):   proc summary n nway data=previsions_US(where= (periode in ("1973-1995" "1996-2018")));
MPRINT(R2GAIN):   var res2_mediane res2_n_mediane;
MPRINT(R2GAIN):   output out=coeff_det_mediane_US_T(drop=_type_) sum=;
MPRINT(R2GAIN):  run;

NOTE: There were 6 observations read from the data set WORK.PREVISIONS_US.
      WHERE periode in ('1973-1995', '1996-2018');
NOTE: The data set WORK.COEFF_DET_MEDIANE_US_T has 1 observations and 3 variables.
NOTE: PROCEDURE SUMMARY a utilisé (Durée totale du traitement) :
      real time           0.01 seconds
      cpu time            0.01 seconds


MPRINT(R2GAIN):   data coeff_det_mediane_US_T;
MPRINT(R2GAIN):  set coeff_det_mediane_US_T;
MPRINT(R2GAIN):   r2_mediane_CF_OS_T = 1-(res2_mediane/res2_n_mediane);
MPRINT(R2GAIN):   r2_adj_mediane_CF_OS_T = 1-(_freq_-1)/(_freq_- 1 - 14)*(1-r2_mediane_CF_OS_T);
MPRINT(R2GAIN):  methode='mediane';
MPRINT(R2GAIN):   keep r2_mediane_CF_OS_T r2_adj_mediane_CF_OS_T methode;
MPRINT(R2GAIN):  run;

NOTE: There were 1 observations read from the data set WORK.COEFF_DET_MEDIANE_US_T.
NOTE: The data set WORK.COEFF_DET_MEDIANE_US_T has 1 observations and 3 variables.
NOTE: DATA statement a utilisé (Durée totale du traitement) :
      real time           0.01 seconds
      cpu time            0.00 seconds


MPRINT(R2GAIN):   proc reg data=previsions_US(where= (periode in ("1973-1995" "1996-2018"))) outest=f_mediane_stat_T edf
outseb tableout;
MPRINT(R2GAIN):   model f_mediane= /MSE;
MPRINT(R2GAIN):  quit;

NOTE: The data set WORK.F_MEDIANE_STAT_T has 7 observations and 11 variables.
NOTE: PROCEDURE REG a utilisé (Durée totale du traitement) :
      real time           0.68 seconds
      cpu time            0.18 seconds


MPRINT(R2GAIN):   data t_mediane_T;
MPRINT(R2GAIN):   set f_mediane_stat_T;
MPRINT(R2GAIN):   if _type_="T";
MPRINT(R2GAIN):   keep intercept methode;
MPRINT(R2GAIN):  methode='mediane';
MPRINT(R2GAIN):  rename intercept=tstat_T;
MPRINT(R2GAIN):  label intercept= tstat_T;
MPRINT(R2GAIN):  run;

NOTE: There were 7 observations read from the data set WORK.F_MEDIANE_STAT_T.
NOTE: The data set WORK.T_MEDIANE_T has 1 observations and 2 variables.
NOTE: DATA statement a utilisé (Durée totale du traitement) :
      real time           0.00 seconds
      cpu time            0.00 seconds


MPRINT(R2GAIN):   data pvalue_mediane_T;
MPRINT(R2GAIN):   set f_mediane_stat_T;
MPRINT(R2GAIN):   if _type_="PVALUE";
MPRINT(R2GAIN):   keep intercept methode;
MPRINT(R2GAIN):   methode='mediane';
MPRINT(R2GAIN):  rename intercept=PVALUE_T;
MPRINT(R2GAIN):  label intercept= PVALUE_T;
MPRINT(R2GAIN):  run;

NOTE: There were 7 observations read from the data set WORK.F_MEDIANE_STAT_T.
NOTE: The data set WORK.PVALUE_MEDIANE_T has 1 observations and 2 variables.
NOTE: DATA statement a utilisé (Durée totale du traitement) :
      real time           0.02 seconds
      cpu time            0.01 seconds


MPRINT(R2GAIN):   data previsions_US;
MPRINT(R2GAIN):   merge previsions_US (in=a) varstock rend;
MPRINT(R2GAIN):   by obs;
MPRINT(R2GAIN):   if a;
MPRINT(R2GAIN):   gamma=3;
MPRINT(R2GAIN):   w0_n=(1/gamma)*(pred_n_oos/var_CRSPSPvw);
MPRINT(R2GAIN):   w_mediane=(1/gamma)*(pred_mediane/var_CRSPSPvw);
MPRINT(R2GAIN):   w0_n_aj=w0_n;
MPRINT(R2GAIN):   flag0=0;
MPRINT(R2GAIN):   if w0_n<0 then do;
MPRINT(R2GAIN):   w0_n_aj=0;
MPRINT(R2GAIN):   flag0=1;
MPRINT(R2GAIN):   end;
MPRINT(R2GAIN):   if w0_n>1.5 then do;
MPRINT(R2GAIN):   w0_n_aj=1.5;
MPRINT(R2GAIN):   flag0=1;
MPRINT(R2GAIN):   end;
MPRINT(R2GAIN):   if w0_n=. then w0_n_aj=.;
MPRINT(R2GAIN):   w_mediane_aj=w_mediane;
MPRINT(R2GAIN):   flag_mediane=0;
MPRINT(R2GAIN):   if w_mediane<0 then do;
MPRINT(R2GAIN):   w_mediane_aj=0;
MPRINT(R2GAIN):  flag_mediane=1;
MPRINT(R2GAIN):   end;
MPRINT(R2GAIN):   if w_mediane>1.5 then do;
MPRINT(R2GAIN):   w_mediane_aj=1.5;
MPRINT(R2GAIN):  flag_mediane=1;
MPRINT(R2GAIN):   end;
MPRINT(R2GAIN):   if w_mediane=. then w_mediane_aj=.;
MPRINT(R2GAIN):   rendp_n = w0_n*CRSPSPvw + (1-w0_n)*Rfree;
MPRINT(R2GAIN):   rendp_mediane = w_mediane*rtsx+ (1-w_mediane)*Rfree;
MPRINT(R2GAIN):   rendp_n_aj = w0_n_aj*CRSPSPvw + (1-w0_n_aj)*Rfree;
MPRINT(R2GAIN):   rendp_mediane_aj = w_mediane_aj*CRSPSPvw + (1-w_mediane_aj)*Rfree;
MPRINT(R2GAIN):   run;

NOTE: Missing values were generated as a result of performing an operation on missing values.
      Each place is given by: (Number of times) at (Line):(Column).
      6 à 9:137
NOTE: There were 6 observations read from the data set WORK.PREVISIONS_US.
NOTE: There were 827 observations read from the data set WORK.VARSTOCK.
NOTE: There were 828 observations read from the data set WORK.REND.
NOTE: The data set WORK.PREVISIONS_US has 6 observations and 89 variables.
NOTE: DATA statement a utilisé (Durée totale du traitement) :
      real time           0.02 seconds
      cpu time            0.01 seconds


MPRINT(R2GAIN):   proc summary n nway data=previsions_US(where= (periode in ("1973-1995" "1996-2018")));
MPRINT(R2GAIN):   var rendp_n rendp_mediane rendp_n_aj rendp_mediane_aj;
MPRINT(R2GAIN):   output out=gain_T (drop=_type_ _freq_) mean(rendp_n)=m0_T mean(rendp_mediane)=m_mediane_T
var(rendp_n)=var0_T var(rendp_mediane)=var_mediane_T mean(rendp_n_aj)=m0_aj_T mean(rendp_mediane_aj)=m_mediane_aj_T
var(rendp_n_aj)=var0_aj_T var(rendp_mediane_aj)=var_mediane_aj_T;
MPRINT(R2GAIN):   run;

NOTE: There were 6 observations read from the data set WORK.PREVISIONS_US.
      WHERE periode in ('1973-1995', '1996-2018');
NOTE: The data set WORK.GAIN_T has 1 observations and 8 variables.
NOTE: PROCEDURE SUMMARY a utilisé (Durée totale du traitement) :
      real time           0.01 seconds
      cpu time            0.01 seconds


MPRINT(R2GAIN):   data gain_mediane_T;
MPRINT(R2GAIN):   set gain_T;
MPRINT(R2GAIN):   gamma=3;
MPRINT(R2GAIN):   v0_T=m0_T-(1/2)*gamma*var0_T;
MPRINT(R2GAIN):  v_mediane_T=m_mediane_T-(1/2)*gamma*var_mediane_T;
MPRINT(R2GAIN):   gain_mediane_T=(v_mediane_T-v0_T)*12;
MPRINT(R2GAIN):   methode='mediane';
MPRINT(R2GAIN):  label m0_T= m0_T;
MPRINT(R2GAIN):  label var0_T= var0_T;
MPRINT(R2GAIN):   v0_aj_T=m0_aj_T-(1/2)*gamma*var0_aj_T;
MPRINT(R2GAIN):  v_mediane_aj_T=m_mediane_aj_T-(1/2)*gamma*var_mediane_aj_T;
MPRINT(R2GAIN):   gain_mediane_aj_T=(v_mediane_aj_T-v0_aj_T)*12;
MPRINT(R2GAIN):   methode='mediane';
MPRINT(R2GAIN):  label m0_aj_T= m0_aj_T;
MPRINT(R2GAIN):  label var0_aj_T= var0_aj_T;
MPRINT(R2GAIN):   run;

NOTE: Missing values were generated as a result of performing an operation on missing values.
      Each place is given by: (Number of times) at (Line):(Column).
      1 à 95169:227   1 à 14:33
NOTE: There were 1 observations read from the data set WORK.GAIN_T.
NOTE: The data set WORK.GAIN_MEDIANE_T has 1 observations and 16 variables.
NOTE: DATA statement a utilisé (Durée totale du traitement) :
      real time           0.01 seconds
      cpu time            0.01 seconds


MPRINT(R2GAIN):   run;
MPRINT(R2GAIN):   data r2gain_mediane;
MPRINT(R2GAIN):   merge coeff_det_mediane_US_T t_mediane_T pvalue_mediane_T gain_mediane_T ;
MPRINT(R2GAIN):   by methode;
MPRINT(R2GAIN):   run;

NOTE: There were 1 observations read from the data set WORK.COEFF_DET_MEDIANE_US_T.
NOTE: There were 1 observations read from the data set WORK.T_MEDIANE_T.
NOTE: There were 1 observations read from the data set WORK.PVALUE_MEDIANE_T.
NOTE: There were 1 observations read from the data set WORK.GAIN_MEDIANE_T.
NOTE: The data set WORK.R2GAIN_MEDIANE has 1 observations and 20 variables.
NOTE: DATA statement a utilisé (Durée totale du traitement) :
      real time           0.01 seconds
      cpu time            0.00 seconds


MPRINT(R2GAIN):   proc print data=r2gain_mediane;
MPRINT(R2GAIN):   RUN;

NOTE: There were 1 observations read from the data set WORK.R2GAIN_MEDIANE.
NOTE: PROCEDURE PRINT a utilisé (Durée totale du traitement) :
      real time           0.01 seconds
      cpu time            0.00 seconds


MPRINT(R2GAIN):   PROC EXPORT DATA=r2gain_mediane OUTFILE= "C:\Users\NPMOR\Desktop\Pas\results\CF_OS_r2gain_mediane_US.xlsx"
DBMS=XLSX REPLACE;
MPRINT(R2GAIN):   WXLX;
MPRINT(R2GAIN):   RUN;

NOTE: The export data set has 1 observations and 20 variables.
NOTE: "C:\Users\NPMOR\Desktop\Pas\results\CF_OS_r2gain_mediane_US.xlsx" file was successfully created.
NOTE: PROCEDURE EXPORT a utilisé (Durée totale du traitement) :
      real time           0.04 seconds
      cpu time            0.00 seconds


1314  %r2gain(trim, 'trim', US, 14);
MPRINT(R2GAIN):   proc summary n nway data=previsions_US(where= (periode in ("1973-1995" "1996-2018")));
MPRINT(R2GAIN):   var res2_trim res2_n_trim;
MPRINT(R2GAIN):   output out=coeff_det_trim_US_T(drop=_type_) sum=;
MPRINT(R2GAIN):  run;

NOTE: There were 6 observations read from the data set WORK.PREVISIONS_US.
      WHERE periode in ('1973-1995', '1996-2018');
NOTE: The data set WORK.COEFF_DET_TRIM_US_T has 1 observations and 3 variables.
NOTE: PROCEDURE SUMMARY a utilisé (Durée totale du traitement) :
      real time           0.01 seconds
      cpu time            0.00 seconds


MPRINT(R2GAIN):   data coeff_det_trim_US_T;
MPRINT(R2GAIN):  set coeff_det_trim_US_T;
MPRINT(R2GAIN):   r2_trim_CF_OS_T = 1-(res2_trim/res2_n_trim);
MPRINT(R2GAIN):   r2_adj_trim_CF_OS_T = 1-(_freq_-1)/(_freq_- 1 - 14)*(1-r2_trim_CF_OS_T);
MPRINT(R2GAIN):  methode='trim';
MPRINT(R2GAIN):   keep r2_trim_CF_OS_T r2_adj_trim_CF_OS_T methode;
MPRINT(R2GAIN):  run;

NOTE: There were 1 observations read from the data set WORK.COEFF_DET_TRIM_US_T.
NOTE: The data set WORK.COEFF_DET_TRIM_US_T has 1 observations and 3 variables.
NOTE: DATA statement a utilisé (Durée totale du traitement) :
      real time           0.01 seconds
      cpu time            0.01 seconds


MPRINT(R2GAIN):   proc reg data=previsions_US(where= (periode in ("1973-1995" "1996-2018"))) outest=f_trim_stat_T edf outseb
tableout;
MPRINT(R2GAIN):   model f_trim= /MSE;
MPRINT(R2GAIN):  quit;

NOTE: The data set WORK.F_TRIM_STAT_T has 7 observations and 11 variables.
NOTE: PROCEDURE REG a utilisé (Durée totale du traitement) :
      real time           0.64 seconds
      cpu time            0.31 seconds


MPRINT(R2GAIN):   data t_trim_T;
MPRINT(R2GAIN):   set f_trim_stat_T;
MPRINT(R2GAIN):   if _type_="T";
MPRINT(R2GAIN):   keep intercept methode;
MPRINT(R2GAIN):  methode='trim';
MPRINT(R2GAIN):  rename intercept=tstat_T;
MPRINT(R2GAIN):  label intercept= tstat_T;
MPRINT(R2GAIN):  run;

NOTE: There were 7 observations read from the data set WORK.F_TRIM_STAT_T.
NOTE: The data set WORK.T_TRIM_T has 1 observations and 2 variables.
NOTE: DATA statement a utilisé (Durée totale du traitement) :
      real time           0.01 seconds
      cpu time            0.00 seconds


MPRINT(R2GAIN):   data pvalue_trim_T;
MPRINT(R2GAIN):   set f_trim_stat_T;
MPRINT(R2GAIN):   if _type_="PVALUE";
MPRINT(R2GAIN):   keep intercept methode;
MPRINT(R2GAIN):   methode='trim';
MPRINT(R2GAIN):  rename intercept=PVALUE_T;
MPRINT(R2GAIN):  label intercept= PVALUE_T;
MPRINT(R2GAIN):  run;

NOTE: There were 7 observations read from the data set WORK.F_TRIM_STAT_T.
NOTE: The data set WORK.PVALUE_TRIM_T has 1 observations and 2 variables.
NOTE: DATA statement a utilisé (Durée totale du traitement) :
      real time           0.01 seconds
      cpu time            0.00 seconds


MPRINT(R2GAIN):   data previsions_US;
MPRINT(R2GAIN):   merge previsions_US (in=a) varstock rend;
MPRINT(R2GAIN):   by obs;
MPRINT(R2GAIN):   if a;
MPRINT(R2GAIN):   gamma=3;
MPRINT(R2GAIN):   w0_n=(1/gamma)*(pred_n_oos/var_CRSPSPvw);
MPRINT(R2GAIN):   w_trim=(1/gamma)*(pred_trim/var_CRSPSPvw);
MPRINT(R2GAIN):   w0_n_aj=w0_n;
MPRINT(R2GAIN):   flag0=0;
MPRINT(R2GAIN):   if w0_n<0 then do;
MPRINT(R2GAIN):   w0_n_aj=0;
MPRINT(R2GAIN):   flag0=1;
MPRINT(R2GAIN):   end;
MPRINT(R2GAIN):   if w0_n>1.5 then do;
MPRINT(R2GAIN):   w0_n_aj=1.5;
MPRINT(R2GAIN):   flag0=1;
MPRINT(R2GAIN):   end;
MPRINT(R2GAIN):   if w0_n=. then w0_n_aj=.;
MPRINT(R2GAIN):   w_trim_aj=w_trim;
MPRINT(R2GAIN):   flag_trim=0;
MPRINT(R2GAIN):   if w_trim<0 then do;
MPRINT(R2GAIN):   w_trim_aj=0;
MPRINT(R2GAIN):  flag_trim=1;
MPRINT(R2GAIN):   end;
MPRINT(R2GAIN):   if w_trim>1.5 then do;
MPRINT(R2GAIN):   w_trim_aj=1.5;
MPRINT(R2GAIN):  flag_trim=1;
MPRINT(R2GAIN):   end;
MPRINT(R2GAIN):   if w_trim=. then w_trim_aj=.;
MPRINT(R2GAIN):   rendp_n = w0_n*CRSPSPvw + (1-w0_n)*Rfree;
MPRINT(R2GAIN):   rendp_trim = w_trim*rtsx+ (1-w_trim)*Rfree;
MPRINT(R2GAIN):   rendp_n_aj = w0_n_aj*CRSPSPvw + (1-w0_n_aj)*Rfree;
MPRINT(R2GAIN):   rendp_trim_aj = w_trim_aj*CRSPSPvw + (1-w_trim_aj)*Rfree;
MPRINT(R2GAIN):   run;

NOTE: Missing values were generated as a result of performing an operation on missing values.
      Each place is given by: (Number of times) at (Line):(Column).
      6 à 9:137
NOTE: There were 6 observations read from the data set WORK.PREVISIONS_US.
NOTE: There were 827 observations read from the data set WORK.VARSTOCK.
NOTE: There were 828 observations read from the data set WORK.REND.
NOTE: The data set WORK.PREVISIONS_US has 6 observations and 94 variables.
NOTE: DATA statement a utilisé (Durée totale du traitement) :
      real time           0.02 seconds
      cpu time            0.00 seconds


MPRINT(R2GAIN):   proc summary n nway data=previsions_US(where= (periode in ("1973-1995" "1996-2018")));
MPRINT(R2GAIN):   var rendp_n rendp_trim rendp_n_aj rendp_trim_aj;
MPRINT(R2GAIN):   output out=gain_T (drop=_type_ _freq_) mean(rendp_n)=m0_T mean(rendp_trim)=m_trim_T var(rendp_n)=var0_T
var(rendp_trim)=var_trim_T mean(rendp_n_aj)=m0_aj_T mean(rendp_trim_aj)=m_trim_aj_T var(rendp_n_aj)=var0_aj_T
var(rendp_trim_aj)=var_trim_aj_T;
MPRINT(R2GAIN):   run;

NOTE: There were 6 observations read from the data set WORK.PREVISIONS_US.
      WHERE periode in ('1973-1995', '1996-2018');
NOTE: The data set WORK.GAIN_T has 1 observations and 8 variables.
NOTE: PROCEDURE SUMMARY a utilisé (Durée totale du traitement) :
      real time           0.01 seconds
      cpu time            0.00 seconds


MPRINT(R2GAIN):   data gain_trim_T;
MPRINT(R2GAIN):   set gain_T;
MPRINT(R2GAIN):   gamma=3;
MPRINT(R2GAIN):   v0_T=m0_T-(1/2)*gamma*var0_T;
MPRINT(R2GAIN):  v_trim_T=m_trim_T-(1/2)*gamma*var_trim_T;
MPRINT(R2GAIN):   gain_trim_T=(v_trim_T-v0_T)*12;
MPRINT(R2GAIN):   methode='trim';
MPRINT(R2GAIN):  label m0_T= m0_T;
MPRINT(R2GAIN):  label var0_T= var0_T;
MPRINT(R2GAIN):   v0_aj_T=m0_aj_T-(1/2)*gamma*var0_aj_T;
MPRINT(R2GAIN):  v_trim_aj_T=m_trim_aj_T-(1/2)*gamma*var_trim_aj_T;
MPRINT(R2GAIN):   gain_trim_aj_T=(v_trim_aj_T-v0_aj_T)*12;
MPRINT(R2GAIN):   methode='trim';
MPRINT(R2GAIN):  label m0_aj_T= m0_aj_T;
MPRINT(R2GAIN):  label var0_aj_T= var0_aj_T;
MPRINT(R2GAIN):   run;

NOTE: Missing values were generated as a result of performing an operation on missing values.
      Each place is given by: (Number of times) at (Line):(Column).
      1 à 95284:227   1 à 14:33
NOTE: There were 1 observations read from the data set WORK.GAIN_T.
NOTE: The data set WORK.GAIN_TRIM_T has 1 observations and 16 variables.
NOTE: DATA statement a utilisé (Durée totale du traitement) :
      real time           0.01 seconds
      cpu time            0.00 seconds


MPRINT(R2GAIN):   run;
MPRINT(R2GAIN):   data r2gain_trim;
MPRINT(R2GAIN):   merge coeff_det_trim_US_T t_trim_T pvalue_trim_T gain_trim_T ;
MPRINT(R2GAIN):   by methode;
MPRINT(R2GAIN):   run;

NOTE: There were 1 observations read from the data set WORK.COEFF_DET_TRIM_US_T.
NOTE: There were 1 observations read from the data set WORK.T_TRIM_T.
NOTE: There were 1 observations read from the data set WORK.PVALUE_TRIM_T.
NOTE: There were 1 observations read from the data set WORK.GAIN_TRIM_T.
NOTE: The data set WORK.R2GAIN_TRIM has 1 observations and 20 variables.
NOTE: DATA statement a utilisé (Durée totale du traitement) :
      real time           0.01 seconds
      cpu time            0.00 seconds


MPRINT(R2GAIN):   proc print data=r2gain_trim;
MPRINT(R2GAIN):   RUN;

NOTE: There were 1 observations read from the data set WORK.R2GAIN_TRIM.
NOTE: PROCEDURE PRINT a utilisé (Durée totale du traitement) :
      real time           0.01 seconds
      cpu time            0.00 seconds


MPRINT(R2GAIN):   PROC EXPORT DATA=r2gain_trim OUTFILE= "C:\Users\NPMOR\Desktop\Pas\results\CF_OS_r2gain_trim_US.xlsx"
DBMS=XLSX REPLACE;
MPRINT(R2GAIN):   WXLX;
MPRINT(R2GAIN):   RUN;

NOTE: The export data set has 1 observations and 20 variables.
NOTE: "C:\Users\NPMOR\Desktop\Pas\results\CF_OS_r2gain_trim_US.xlsx" file was successfully created.
NOTE: PROCEDURE EXPORT a utilisé (Durée totale du traitement) :
      real time           0.04 seconds
      cpu time            0.00 seconds


1315  %r2gain(dmspe09,'dmspe09', US, 14);
MPRINT(R2GAIN):   proc summary n nway data=previsions_US(where= (periode in ("1973-1995" "1996-2018")));
MPRINT(R2GAIN):   var res2_dmspe09 res2_n_dmspe09;
MPRINT(R2GAIN):   output out=coeff_det_dmspe09_US_T(drop=_type_) sum=;
MPRINT(R2GAIN):  run;

NOTE: There were 6 observations read from the data set WORK.PREVISIONS_US.
      WHERE periode in ('1973-1995', '1996-2018');
NOTE: The data set WORK.COEFF_DET_DMSPE09_US_T has 1 observations and 3 variables.
NOTE: PROCEDURE SUMMARY a utilisé (Durée totale du traitement) :
      real time           0.02 seconds
      cpu time            0.00 seconds


MPRINT(R2GAIN):   data coeff_det_dmspe09_US_T;
MPRINT(R2GAIN):  set coeff_det_dmspe09_US_T;
MPRINT(R2GAIN):   r2_dmspe09_CF_OS_T = 1-(res2_dmspe09/res2_n_dmspe09);
MPRINT(R2GAIN):   r2_adj_dmspe09_CF_OS_T = 1-(_freq_-1)/(_freq_- 1 - 14)*(1-r2_dmspe09_CF_OS_T);
MPRINT(R2GAIN):  methode='dmspe09';
MPRINT(R2GAIN):   keep r2_dmspe09_CF_OS_T r2_adj_dmspe09_CF_OS_T methode;
MPRINT(R2GAIN):  run;

NOTE: Missing values were generated as a result of performing an operation on missing values.
      Each place is given by: (Number of times) at (Line):(Column).
      1 à 2:74    1 à 2:154
NOTE: There were 1 observations read from the data set WORK.COEFF_DET_DMSPE09_US_T.
NOTE: The data set WORK.COEFF_DET_DMSPE09_US_T has 1 observations and 3 variables.
NOTE: DATA statement a utilisé (Durée totale du traitement) :
      real time           0.01 seconds
      cpu time            0.00 seconds


MPRINT(R2GAIN):   proc reg data=previsions_US(where= (periode in ("1973-1995" "1996-2018"))) outest=f_dmspe09_stat_T edf
outseb tableout;
MPRINT(R2GAIN):   model f_dmspe09= /MSE;
MPRINT(R2GAIN):  quit;

ERROR: No valid observations are found.
NOTE: The data set WORK.F_DMSPE09_STAT_T has 0 observations and 11 variables.
NOTE: PROCEDURE REG a utilisé (Durée totale du traitement) :
      real time           0.07 seconds
      cpu time            0.01 seconds

r_behata
Barite | Level 11

You need to Insert a Comma in the where condition:

 

 

MPRINT(R2GAIN):   proc reg data=previsions_US(where= (periode in ("1973-1995" ,"1996-2018"))) outest=f_dmspe09_stat_T edf
outseb tableout;
MPRINT(R2GAIN):   model f_dmspe09= /MSE;
MPRINT(R2GAIN):  quit;

 

 

SASKiwi
PROC Star

I don't think adding a comma will change anything as the IN operator can be used with either spaces or commas. There is now no syntax error in your program, so that is good. However it looks like your PROC REG dataset needs looking at. Are you expecting to do a regression on only 6 observations? That sounds low to me. 

pmorel3
Obsidian | Level 7

Yes, there is now no syntax error.

Basically, I have more than 1000 observations but I first try with 6 observations to see whether my codes work or not.

Indeed, with more than 1000 observations, it is too long to run.

 

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
PaigeMiller
Diamond | Level 26

We have no way of knowing what is actually in data set PREVISIONS_US; however, SAS is telling you that you have no valid observations, so you have to look at data set PREVISIONS_US with your own eyes and see what is in there, and see if there are actually valid observations with non-missing values for variable f_dmspe09.

--
Paige Miller
pmorel3
Obsidian | Level 7

Thank you Paige.

I noticed in dataset PREVISIONS_US that there are missing values (pred_dmspe09, res2_dmspe09, f_dmspe09, res2_n_dmspe09) for my 6 observations.

sas-innovate-2024.png

Available on demand!

Missed SAS Innovate Las Vegas? Watch all the action for free! View the keynotes, general sessions and 22 breakouts on demand.

 

Register 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.

Click image to register for webinarClick image to register for webinar

Classroom Training Available!

Select SAS Training centers are offering in-person courses. View upcoming courses for:

View all other training opportunities.

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