SSブログ

IBM SPSS Modelerによるモンテカルロ・シミュレーション [データサイエンス、統計モデル]

ver16以前のSPSS Modeler(クレメンタイン)だと、シミュレーションをするにはとても面倒でした。



例えば、乱数のデータを作成する場合、いったんユーザ入力ノードで仮のレコード(フィールド)を作成してから
diceという乱数のフィールドを作成します。

【dice】の中身
oneof([1, 2, 3, 4, 5, 6])

シミュレーション生成ノード

これが、ver16からは、インプットノードの代わりにシミュレーション生成ノードを使うことが出来るようになりました。

また、別の恩恵としては、インプットノードに大量の仮レコードを作成すると、データを作成するまでの時間がやたらかかってしまいます。

(10万回の試行回数)
以前の場合
情報: ストリーム実行の完了 経過時間=3.76 秒、CPU=0.92 秒

ver16
情報: ストリーム実行の完了 経過時間=0.08 秒、CPU=0.08 秒

(100万回の試行回数)
以前の場合
情報: ストリーム実行の完了 経過時間=38.63 秒、CPU=17.36 秒

ver16
情報: ストリーム実行の完了 経過時間=0.42 秒、CPU=0.41 秒

この例だと、10万回からいっきに100万回に増やした場合、以前のストリームだと、時間は40秒近くかかってしまいますが、このモンテカルロ・シミュレーションを使った場合、1秒以内で処理が完了します。

別の利点として、二つの変数間の相関を考慮することができます。

以前作ったMCMCの事例
 Clementine で MCMC を実験
  http://skellington.blog.so-net.ne.jp/2009-03-05
 Clementine で MCMC を実験 その2
  http://skellington.blog.so-net.ne.jp/2009-03-06

今回のシミュレーション生成ノードを使うと一瞬で出来ます。

相関がない場合(単なる乱数を発生した場合)
シミュレーション生成ノード モンテカルロ・シミュレーション

相関を0.8にした場合
シミュレーション生成ノード モンテカルロ・シミュレーション

この機能があると、たくさんのシミュレーションを発生することで、
予測値(点推定)だけでなく、予測幅(区間の推定)が可能になり、
上振れるリスクや下振れるリスクなども評価することができるようになりました。



変数間の相関は、
項目の選択のところにある【相関】
で設定できます。

nice!(41)  コメント(0)  トラックバック(0) 
共通テーマ:学問