I have a macro that creates a model for me to test heteroskedasticity on whitened residuals and exogenous variables. However, I get the error that the statements is not valid. I have the macro printing out what it is doing and if I take the print out and paste it into a SAS file it runs with no problem. So why is it giving me this error when I run it through the macro?? Here is my log output: MPRINT(COCHRANE_ORCUTT): proc model data = model_data_estimation;
MPRINT(COCHRANE_ORCUTT): parms intercept 0 b1 0 rho1 0;
MPRINT(COCHRANE_ORCUTT): y = rho1*lag(y) + (intercept + b1 * x) - rho1*lag(intercept + b1 *x);
NOTE: Line generated by the macro variable "WHITENEDVAR".
1 whitened_x
--
180
MPRINT(COCHRANE_ORCUTT): whitened_x = x - rho1 * LAG(x);
MPRINT(COCHRANE_ORCUTT): fit y / BREUSCH=(1 whitened_x);
MPRINT(COCHRANE_ORCUTT): run;
ERROR 180-322: Statement is not valid or it is used out of proper order. Here is the snippet of the macro code: %let whitened_vars = ;
%let count=1;
%let word=%qscan(&iv, &count, %str( ));
%do %while(&word ne);
%let word=%qscan(&iv, &count, %str( ));
%if(&word ne) %then %do;
%let count=%eval(&count+1);
%let whitened_vars = &whitened_vars whitened_&word;
%end;
%end;
%put &whitened_vars;
proc model data = &data;
parms ¶meters;
&modelspec;
%let count=1;
%let word=%qscan(&iv, &count, %str( ));
%do %while(&word ne);
%let word=%qscan(&iv, &count, %str( ));
%if(&word ne) %then %do;
%let count=%eval(&count+1);
%let whitenedvar = whitened_&word;
&whitenedvar = &word - rho1 * LAG(&word);
%end;
%end;
fit &y / BREUSCH=(1 &whitened_vars);
run;
%end;
... View more