HADでいろんな乱数の生成する

 

HADでは,いろんな乱数を生成することができます。この記事では,HADを使った乱数生成についてまとめておきます。

乱数を作る目的はいろいろあるかと思います。統計モデルの性能をチェックするときや,統計学の授業やプレゼン,教科書を書くときなどで使う人工データを作りたい場合などが多いでしょうか。今回は,授業やプレゼンで使うための人工データを作るというイメージで乱数生成の方法を説明します。

 

手元のデータと同じ共分散行列のデータを生成する

手元のデータと同じ因子構造のデータを授業用に作りたい場合を考えます。因子分析の授業などで,比較的リアリティのある人工データを作るには,手元のデータと全く同じ共分散行列を作成できると便利です。

HADでは,手元のデータと全く同じ平均値,共分散行列を持つ乱数データを作成できます。

例として,実際に大学生から測定したBigfive(性格の5因子についての尺度)データと同じ平均値と共分散行列を持つ乱数データを生成することを考えてみましょう。

データはこんな感じです。

random1

これを因子分析してみます。5因子を指定して最尤法プロマックス回転をしてみました。

random3

なかなかきれいに分かれました。

ではさっそく,乱数を生成してみます。まず,乱数を生成したい元のデータを使用変数に指定します。続いて,「データセット」ボタンを押して,「乱数データ生成」タブを選びます。下の図のように,「選択した変数の共分散行列から生成」を選択し,「共分散行列が完全に一致するように生成」をチェックします。なお,「ランダマイズ」にチェックすると,毎回違う乱数が生成されますが,チェックをはずすと乱数の種を固定して生成しますので,同じ乱数を得ることができます。今回はチェックしておきます。

random4

これでOKを押すと,次のような乱数が生成されます。全部は見えてませんが,同じサンプルサイズ,同じ数の変数が生成されています。

random5

これをデータにしてもう一度同じ因子分析をしてみると・・・

random6

さっきと全く同じ因子構造が再現されます。

 

任意の共分散行列のデータを生成する

次に,たとえば相関係数が0.5を真値とする2変量正規分布に従う乱数を発生させたい場合の方法を説明します。

まず,なんでもいいので2変数の共分散行列をHADで出力します。さっきのBigFiveデータを仮に使ってみます。二つの変数(なんでもいい)を使用変数に指定して,「分析」ボタンを押し,「共分散」にチェックを入れてOKを押します。

random7

すると,次のような結果が出力されます。

random8

この共分散行列をいじって,分散を1,共分散を0.5に変更します。サンプルサイズもnの行を変更すれば変更できますが,これはあとでも変えることができます。ここでは,サンプルサイズ100にしておきます。平均値も変えられますが,ここでは0にしておきます。すると以下のようになります。

random9

このように変更したら,モデリングシートに戻って,「データセット」ボタンを押します。そして,下の図のように,「シートを指定」で先ほどの共分散行列が入力されているシート名(デフォルトではCov)を入力します。また,「サンプルサイズを変更」にチェックを入れて,任意のサンプルサイズを入力できます。さきほどすでに100と入れているので変更の必要はないですが,ここでは解説のために入力しています。

random10

もし相関係数を完全に0.5に一致させたい場合は,さきほどのように「共分散行列が完全に一致するよう生成」をチェックします。母相関が0.5の真のモデルからデータを生成させたいだけなら,チェックははずしてください。今回ははずしておきます。

そしてOKボタンを押すと,母相関が0.5の二変量正規分布からの乱数が生成されます。

random11

もし「共分散行列が完全に一致するよう生成」をチェックして乱数を生成した場合は,入力した共分散行列(今回は分散を1にしているので相関係数)と全く同じ2変量正規分布のデータが生成されます。相関係数を計算するとこんな感じになります。

random15

なお,今回は2変数の例でしたが,もちろん3変数以上の乱数も同じ要領で生成できます。

 

正規分布以外の乱数を生成する

正規分布以外の乱数を生成することもできます。「データセット」ボタンを押して,今度は「指数分布族の乱数生成」ボタンを押します。すると,次のようなユーザーフォームが立ち上がります。

random12

このフォームから,生成したい分布の種類とパラメータを指定すると,そのパラメータを母数とした乱数を生成することができます。たとえば,平均が3のポアソン分布から乱数を生成したい場合は,ポアソン分布を選択して,平均に3を入力します。

random13

そしてOKを押すと,次のようなポアソン乱数が生成されます。また,度数分布とヒストグラムも同時に出力されます。

random14

 

 

 

 

This entry was posted in HAD. Bookmark the permalink.