SPSS Modeler、シミュレーションノードを用いたモンテカルロ法の話 [データサイエンス、統計モデル]
朝野先生が書かれた『ベイズ統計学』をSPSS Modelerに実装しました。
まずは、マルコフ連鎖モンテカルロ法ではない、普通のモンテカルロ法の話。
6章(6.1 モンテカルロ法より)
店舗A, B, C, Dの売上データあり、それを集計すると
店舗A(平均100, 分散20)
店舗B(平均120, 分散20)
店舗C(平均110, 分散15)
店舗D(平均100, 分散10)
となっていました。
なんとなく店舗Bの平均が高いのですが、1000日間の中で、店舗Bの売上が一番高い日はどれくらいあるでしょうか?といった問題をモンテカルロ法を使って計算します。
実際のストリームは、いたってシンプルです。
「シミュレーション生成」ノードの中身
分布で、正規分布を選んで平均と分散のパラメータを設定
売上なので、マイナスの値が出てくるとおかしいので、最小値を0.0としておきました。
実際は、平均100、分散10~20程度だと0以下になることは極めて稀なのですが、念のためです。w
相関のところは特に設定していませんが、こちらも設定することは可能です。
例えば、週末は売上が高くなるけど、平日は売上が落ちる、みたいな店舗の売上に相関があると仮定するならば、設定しても良いかもしれません。
拡張オプションでは、どれくらいの乱数を発生させるか、つまり、シミュレーションを行うか設定することができます。
デフォルトは10万。
「_max(フィールド作成)」ノードの中身
続いて、どの店舗の売上が最も高いかを計算しています。
それぞれのフィールドで最大だったら1、それ以外は0という設定です。
「レコード集計とソート」ノードの中身
後は、各店舗別に1の数を合計しているだけなので、省略。
結果は、このようになります。
10万レコードあるので、各行のレコード数を10万で割ると、確率が出てきます。
教科書では、Bの店舗が最大になる確率は、54%となっていました。
今回、SPSS Modelerで実装した例では、54.75%ということで、ほぼ同じ結果となりました。
ビジネスマンがはじめて学ぶ ベイズ統計学 ―ExcelからRへステップアップ―
- 作者: 朝野 煕彦
- 出版社/メーカー: 朝倉書店
- 発売日: 2017/02/20
- メディア: 単行本(ソフトカバー)
まずは、マルコフ連鎖モンテカルロ法ではない、普通のモンテカルロ法の話。
6章(6.1 モンテカルロ法より)
店舗A, B, C, Dの売上データあり、それを集計すると
店舗A(平均100, 分散20)
店舗B(平均120, 分散20)
店舗C(平均110, 分散15)
店舗D(平均100, 分散10)
となっていました。
なんとなく店舗Bの平均が高いのですが、1000日間の中で、店舗Bの売上が一番高い日はどれくらいあるでしょうか?といった問題をモンテカルロ法を使って計算します。
実際のストリームは、いたってシンプルです。
「シミュレーション生成」ノードの中身
分布で、正規分布を選んで平均と分散のパラメータを設定
売上なので、マイナスの値が出てくるとおかしいので、最小値を0.0としておきました。
実際は、平均100、分散10~20程度だと0以下になることは極めて稀なのですが、念のためです。w
相関のところは特に設定していませんが、こちらも設定することは可能です。
例えば、週末は売上が高くなるけど、平日は売上が落ちる、みたいな店舗の売上に相関があると仮定するならば、設定しても良いかもしれません。
拡張オプションでは、どれくらいの乱数を発生させるか、つまり、シミュレーションを行うか設定することができます。
デフォルトは10万。
「_max(フィールド作成)」ノードの中身
続いて、どの店舗の売上が最も高いかを計算しています。
@FIELD = max_n([Field_1, Field_2, Field_3, Field_4]
それぞれのフィールドで最大だったら1、それ以外は0という設定です。
「レコード集計とソート」ノードの中身
後は、各店舗別に1の数を合計しているだけなので、省略。
結果は、このようになります。
10万レコードあるので、各行のレコード数を10万で割ると、確率が出てきます。
教科書では、Bの店舗が最大になる確率は、54%となっていました。
今回、SPSS Modelerで実装した例では、54.75%ということで、ほぼ同じ結果となりました。