今回の記事ではSASでのBootstrap法の利用方法についてまとめます。やり方はいくつかありますがここではsurveyselectというプロシジャを使った方法を紹介します。このほかにもこちらのSAS公式のQ&Aではマクロによるものなどがあります。
Bootstrap法について
まずはBootstrap法の簡単な概要についてまとめます。
統計は大きくは記述統計と推測統計に分類されます。このうち推測統計の目的は、母集団から抽出された標本から、母集団が持つパラメータ(母数)や確率分布を推定することにあります。一般的な点推定や仮説検定はまさにこれを行っているわけです。
これに対してBootstrap法では、得られている標本からさらにサンプリングをn回行うという操作をB回行い、サンプルサイズがn、サンプル数がBの標本を新たに作り出します。そしてその新たに得られたB個の標本それぞれにおいて統計量を算出し、そのB個の統計量からさらに元の母集団の母数について推測するというのが大まかな流れになっています。
標本から新たな標本を行う際の抽出方法(サンプリング方法)には復元抽出や、非復元抽出をはじめとする様々な方法があります。
SURVEYSELECTプロシジャについて
SASでこのBootstrap法を簡単に実行可能なのが、SURVEYSELECTプロシジャです。SURVEYSELECTプロシジャの基本的な構文は以下のとおりです。
保存先のデータセットの「Replicate」という変数が何回目の抽出かを表す項目になります。(先ほどの図の1, 2, ・・・B)
そのため、作成した各標本で統計量を算出したい場合には、SURVEYSELECTプロシジャで標本を作製した後、解析を行うプロシジャ中で、BY=ReplicateとすればOKです。
主なオプションとその内容はこんな感じ。
- STRA
層を示す変数の指定
- N=
サンプルサイズの指定
- RATE=
サンプルサイズを割合で指定する際のオプション
- SEED=
シード値の指定
- METHOD=
サンプリングの方法の指定、復元抽出はURS
- OUT=
出力データセット名の指定
- REP=
抽出回数の指定(再標本数の指定)
さらに詳細を知りたい場合にはこちらのヘルプを参考にしてください。
使用例
SASHELPにあるClassという19名の学生の身長、体重に関するデータを用いてBootstrap法を実行してみます。まずはClassデータの中身はこんな感じ。
このデータを使ってBootstrapsampleという名前のデータセットにサンプルサイズ19、サンプル数10となるように復元抽出を行います。結果の一部はこちら。Replicateという項目が繰り返しの回数を指しています(今回は1~10)
あとは目的に応じてBY=Replicateとして解析を行えばOKです。
以下が今回のコードになります。
proc surveyselect data=SASHELP.Class method=urs outhits
rep=10
n=19
seed=12345
out=Bootstrapdata;
run;
proc print data=Bootstrapdata;
run;