tb015 | 乱数発生用関数 |
擬似乱数を用いたシミュレーションは統計解析の分野でしばしば用いられます。Stataにはそのための乱数発生用関数が一式用意されていますが、ここでは代表的なものについてその用法を紹介します。詳細についてはマニュアルエントリ
[FN] functions (mwp-076) をご参照ください。
擬似乱数を用いた分析を行うに際して、repeatabilityが必要とされる場合には、最初にseed(種)の設定を行います。そのためのコマンドがset seedです。
. set seed 2
ここでは2をseedとして設定しましたが、正の整数値であれば任意の値を指定できます。set seedの仕様については [R] set seed
をご参照ください。
一様乱数を発生させる場合に用いられるのはruniform()という関数です。この関数は引数を取らず、[0,1)の区間に一様に分布する乱数を発生させます。例えば10個ほど乱数を発生させてみましょう。
. set obs 10 *1
. generate r1 = runiform()
. list
*1 | set obsコマンドの仕様については [R] set を参照ください。 |
区間[a,b)に分布する乱数を得るにはgenerateに対する数式で a + (b - a)*runiform() と記述すれば良いわけです。さらに整数値が欲しい場合には四捨五入、切下げ、切上げを行うround(), floor(), ceil()といった関数と組み合わせれば良いわけです。例えば20から80の範囲に分布する整数値の一様乱数を発生させてみましょう。
. generate r2 = round(20 + 60*runiform())
. list r2
正規分布に従う乱数を発生させるにはrnormal()という関数を使用すれば良いわけですが、これには次に示す3つの構文が用意されています。
rnormal() | 標準正規分布N(0, 1)に従う乱数を発生させる |
rnormal(m) | 正規分布N(m, 1)に従う乱数を発生させる |
rnormal(m, s) | 正規分布N(m, s)に従う乱数を発生させる |
例えば最初の構文を用いて乱数を発生させてみると次のような結果が得られます。
. generate r3 = rnormal()
. list r3
小数点以下2桁の乱数が欲しい場合には次のように指定します。
. generate r4 = round(100*rnormal())/100
. list r4
乱数の発生機構はStata14で刷新されているので、たとえseedが設定してあったとしてもStata13のときとは結果が異なったものとなります。 |
= = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = |
© 2018 Math工房