シードを復元し、復元したシードを一連の結果を再現する方法の例を次に示します。MCMCプロシジャは事後分布からサンプルを生成します。次のステートメントは線形回帰モデルから事後サンプルを作成します。
title 'Bayesian Linear Regression';
proc mcmc data=sashelp.class seed=0 outpost=out1;
parms beta0 0 beta1 0;
prior beta0 beta1 ~ normal(mean=0, var=1e6);
mu=beta0 + beta1*height;
model weight ~ n(mu, var=137);
run;
SEED=0が指定されたため、乱数シードがクロックタイムから自動的に生成されます。このシードはSYSRANDOMマクロ変数に格納されます。値は%PUTステートメントを使って表示できます。
%put sysrandom=&sysrandom;
次のステップは、前のステップと同一のシードで同一の結果を作成します。
proc mcmc data=sashelp.class seed=&sysrandom outpost=out2;
parms beta0 0 beta1 0;
prior beta0 beta1 ~ normal(mean=0, var=1e6);
mu=beta0 + beta1*height;
model weight ~ n(mu, var=137);
run;
次のステップをサブミットすると、PROC MCMCの2回の実行が同一のサンプルを作成していることを確認できます。
proc compare data=out1 compare=out2;
run;