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 !
Unsure it's related, but you have a bug. Fix this:
NOTE: Variable rtsx is uninitialized.
,
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.
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.
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.
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;
Thank you for following the instructions! It looks like @r_behata has correctly diagnosed the problem.
Looks like you are missing a semi-colon.
proc print data=r2gain_&methode. ; RUN;
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
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;
Thank you r_behata.
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.
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.
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
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.
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.
Are you ready for the spotlight? We're accepting content ideas for SAS Innovate 2025 to be held May 6-9 in Orlando, FL. The call is open until September 25. Read more here about why you should contribute and what is in it for you!
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.