Although PROC MCMC provides a number of convergence diagnostic tests and posterior summary statistics, PROC MCMC performs the calculations only if you specify the options in advance. If you wish to analyze the posterior draws of unmonitored parameters or functions of the parameters that are calculated in later DATA step calls, you can use the autocall macros in Table 50.
Table 50: Postprocessing Autocall Macros
| Macro | Description |
| %ESS | Effective sample sizes |
| %GEWEKE* | Geweke diagnostic |
| %HEIDEL* | Heidelberger-Welch diagnostic |
| %MCSE | Monte Carlo standard errors |
| %RAFTERY | Raftery diagnostic |
| %POSTACF | Autocorrelation |
| %POSTCOR | Correlation matrix |
| %POSTCOV | Covariance matrix |
| %POSTINT | Equal-tail and HPD intervals |
| %POSTSUM | Summary statistics |
| %SUMINT | Mean, standard deviation, and HPD interval |
| *The %GEWEKE and %HEIDEL macros use a different optimization routine than that used in PROC MCMC. As a result, there might be numerical differences in some cases, especially when the sample size is small. | |
Table 51 lists options that are shared by all postprocessing autocall macros. See Table 52 for macro-specific options.
Table 51: Shared Options
| Option | Description |
|---|---|
| DATA=SAS-data-set | Input data set that contains posterior samples |
| VAR=variable-list | Specifies the variables on which you want to carry out the calculation. |
| PRINT=YES | NO | Displays the results. The default is YES. |
| OUT=SAS-data-set | Specifies a name for the output SAS data set to contain the results. |
Suppose that the data set that contains posterior samples is called post and that the variables of interest are defined in the macro variable &PARMS. The following statements call the %ESS macro and calculates the effective sample sizes for each variable:
%let parms = alpha beta u_1-u_17;
%ESS(data=post, var=&parms);
By default, the ESS estimates are displayed. You can choose not to display the result and save the output to a data set with the following statement:
%ESS(data=post, var=&parms, print=NO, out=eout);
Some of the macros can take additional options, which are listed in Table 52.
Table 52: Macro-Specific Options
For example, the following statement calculates and displays autocorrelation at lags 1, 6, 11, 50, and 100. Note that the lags in the numeric-list need to be separated by commas “,”.
%PostACF(data=post, var=&parms, lags=%str(1 to 15 by 5, 50, 100));