ブートストラップ シミュレーションからそれほど遠くない何かをしたいようです。同一ではありませんが、コンセプトはそこにあります。同じデータを繰り返し再サンプリングします。
そういうわけで、私は同じテクニックでそれをします。(注意してください、あなたが求めていることを実際に行うべきかどうかについてはコメントしていません。そうしない理由はたくさんあります。回帰と機械学習の格言 #1 は、トレーニング セットとテスト セットと検証セットを決して組み合わせないでください。誤った信頼に終わる)。
PROC SURVEYSELECT
これを行うのはかなり得意です。この分野で影響力のある論文は、David Cassell によるDon't be LOOPyで、次のようになっています。
で回帰を実行しているとしましょうsashelp.class
。層化に関係なくランダム化しています。
proc surveyselect data=sashelp.class
out=class_sample
seed=12345
method=SRS /* This is different from bootstrapping: without replacement */
n=15 /* you want 15 in your training set and 4 in your validation set */
rep=100 /* you want 100 replicates, ie, you want to test it 100 times */
outall /* this outputs all 19 to the dataset */
;
run;
これにより、19*100 の複製のデータセットが作成されます。 sample=1
はトレーニング セットのデータ行でsample=0
あり、検証セットの行です。
さて、回帰と分析を行うときは、by replicate;
すべての作業に追加するだけです。この方法は、他の方法 (マクロ ループなど) よりも高速に実行され、コードもほとんどありません。
多くの変更を加えることなく、これをプロセス フローに統合できるはずであり、EG を使用していることは問題ではありません。これは主に、最初の入力データステップを変更するだけです。