tb015  乱数発生用関数



擬似乱数を用いたシミュレーションは統計解析の分野でしばしば用いられます。Stataにはそのための乱数発生用関数が一式用意されていますが、ここでは代表的なものについてその用法を紹介します。詳細についてはマニュアルエントリ [FN] functions (mwp-076) をご参照ください。
 

(1) Seedの設定

擬似乱数を用いた分析を行うに際して、repeatabilityが必要とされる場合には、最初にseed(種)の設定を行います。そのためのコマンドがset seedです。

. set seed 2

ここでは2をseedとして設定しましたが、正の整数値であれば任意の値を指定できます。set seedの仕様については [R] set seed をご参照ください。
 

(2) 一様乱数の発生

一様乱数を発生させる場合に用いられるのは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


 

(3) 正規分布に従う乱数の発生

正規分布に従う乱数を発生させるには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工房