dftest(var1, var2, var3, va4, var5) 是一个 macro, 共有5个变量
var1: input filename
var2: a variable
var3 and var4 are parameters, var5 is output filename.
%dftest() 调用这个macro.
data simples;
infile "f:\Teaching\ef5470\ef5470_2007\Sas_programs\lab1data.csv" firstobs=2 dlm=',';
input date $ gdp p m d;
run; /* input the datafile ‘lab1data.csv’ to generate a dataset ‘Simples’ */
%dftest(simples, gdp,dif=(1),trend=0,outstat=results);
/* call macro dftest, use ‘simples’ as input dataset, gdp as a variable, output results to the dataset ‘Results’ */
proc print data=results;
run; /* look at the ‘results’ dataset */
proc reg data=simples outest=beta tableout ;
model gdp = p m d;
output out=resdat_ols residual=uhat_ols predicted=yhat_ols;
run;
/* call regression procedure, the model is gdp=a1*p + a2*m + a3*d + constant,
output results to three datasets: resdat_ols, uhat_ols, and yhat_ols. */
%dftest(resdat_ols,uhat_ols,trend=0,outstat=results2);
/* call macro dftest, use ‘resdat_ols’ as input dataset, uhat_ols as a variable, output results to the dataset ‘Results2’ */
proc print data=results2;
run; /* look at the results2 */
data simples; set simples resdat_ols;
et=lag(uhat_ols);
dgdp=gdp-lag(gdp);
dp=p-lag(p);
dm=m-lag(m);
dd=d-lag(d);
run;
/* combining simples and resdat_ols to create a new dataset ‘simples’ with 5 calculated variables (et, dgdp, dp, dm, dd) */
proc reg data=simples outest=beta tableout ;
model dgdp = et dp dm dd;
run; /* call regression procedure again */
/* below is call arima procedure for time series analysis */
proc arima data=simples;
identify var=dgdp
nlag=30 ;
run;
estimate p=1 q=4
nodf
noconstant
method=ml
plot;
run;
forecast
lead=10
out=predict
printall;
run;
/* hope it helps */