Advertisement

『予測にいかす統計モデリングの基本』の売上データの分析をトレースしてみた

Dec. 21, 2013
Advertisement

More Related Content

Slideshows for you(20)

Advertisement

『予測にいかす統計モデリングの基本』の売上データの分析をトレースしてみた

  1. 『予測にいかす統計モデリングの基本』 の売上データの分析をトレースしてみた 2013.12.22 @berobero11 BUGS/Stan勉強会 #2 於 ドリコム
  2. 良書です! 買いましょう.
  3. 本発表のデータは書籍を参考にデータをゼロか ら作成したものであり, 分析手法も異なります. それらについて書籍の著者や統計数理研究所 に問い合わせたりしてはいけません.
  4. 仮想売上データ オフィス街の近くのレストラン • 2012/1/1~2013/12/31 • 繁忙期(8月)は欠損 売上 [千円] day
  5. Year Month Day Wday Weather Head.count 2012 1 1 0 1 0 2012 1 2 1 1 7800 2012 1 3 2 1 0 2012 1 4 3 2 19400 2012 1 5 4 1 32000 2012 1 6 5 3 0 … … … … … … 2013 12 27 5 5 14100 2013 12 28 6 3 6300 2013 12 29 0 1 17700 2013 12 30 1 1 0 2013 12 31 2 2 0 天気 曜日 0: 日 1: 月 … 6: 土 1: 2: 3: 4: 5: 晴れ 曇り 雨 大雨 雪 Sale 39.225 44.043 51.804 92.846 126.064 99.976 … 148.769 49.090 126.074 67.274 56.311 近くのイベント の参加人数
  6. 売上 [千円] イベントの参加人数 lm(formula = d$Sale ~ Sun + Mon + Tue + Wed + Thu + Fri + Sat + d$Weather + d$Head.count) ?
  7. そこで統計モデリングですよ!
  8. 今回はStan, RStanを使いました http://www.slideshare.net/berobero11/bugs-26159695
  9. 売上データの分解モデル 𝑆𝑎𝑙𝑒 𝑡 = 𝑡𝑟𝑒𝑛𝑑 𝑡 + 𝑤𝑒𝑒𝑘 𝑡 + 𝑟𝑎𝑖𝑛 𝑡 + 𝑒𝑣𝑒𝑛𝑡 𝑡 + 𝑎𝑟 𝑡 + 𝜀 𝑡 トレンド 雨効果 週効果 先頭が AR項 イベント 効果 残差 小文字の変数: 推定すべきパラメータ 大文字の変数: すでに与えられているデータ・数値 とします.
  10. モデル | トレンド 長期的変動を表す. 二次トレンドモデルを使う. 𝑡𝑟𝑒𝑛𝑑 𝑡 − 𝑡𝑟𝑒𝑛𝑑 𝑡−1 ≈ 𝑡𝑟𝑒𝑛𝑑 𝑡−1 − 𝑡𝑟𝑒𝑛𝑑 𝑡−2 𝑡𝑟𝑒𝑛𝑑 𝑡 = 2𝑡𝑟𝑒𝑛𝑑 𝑡−1 − 𝑡𝑟𝑒𝑛𝑑 𝑡−2 + 𝜀1 𝑡 𝜀1 𝑡 ~𝒩 0, 𝜎 𝑡𝑟𝑒𝑛𝑑
  11. モデル | 週効果 𝑤𝑒𝑒𝑘 𝑡 = 𝑠 𝑡 + 𝐷1 𝑡 𝑏1 𝑠 日,𝑡 − 𝑠 𝑡 + 𝐷2 𝑡 𝑏2 𝑠 金,𝑡 − 𝑠 𝑡 + 𝑏3 𝑠 土,𝑡 − 𝑠 𝑡 値=1 値=0 𝐷1 𝑡 月~金の祝日 それ以外 𝐷2 𝑡 祝日でない月~木 かつ翌日が祝日 それ以外
  12. モデル | 週効果 基本パターン (周期7) 7 𝑠 𝑡−𝑙 ≈ 0 𝑙=1 6 𝑠𝑡 = − 𝑠 𝑡−𝑙 + 𝜀2 𝑡 𝑙=1 𝜀2 𝑡 ~𝒩 0, 𝜎 𝑠
  13. モデル | 週効果 祝日効果 祝日の売上がどのくらい直近の日曜の売上に似ているか 類似度 0 ≤ 𝑏1 ≤ 1 祝前日効果 祝前日の売上がどのくらい直近の金曜 or 土曜の売上に似ているか 類似度 0 ≤ 𝑏2, 𝑏3 ≤ 1
  14. モデル | 雨効果 『悪天候になればなるほど・・・』 経験で変換: 天気数値 推定する係数 [千円] Rain_val 𝑟𝑎𝑖𝑛 𝑡 = 𝑐_𝑟𝑎𝑖𝑛 ∗ 𝑅𝑎𝑖𝑛_𝑣𝑎𝑙 𝑡
  15. モデル | イベント効果 経験で変換: 参加人数数値 推定する係数 [千円] 𝑒𝑣𝑒𝑛𝑡 𝑡 = 𝑐_𝑒𝑣𝑒𝑛𝑡 𝑡 ∗ 𝐸𝑣𝑒𝑛𝑡_𝑣𝑎𝑙 Event_val イベントの参加人数 [万人] 𝑐_𝑒𝑣𝑒𝑛𝑡 𝑡 = 𝑐_𝑒𝑣𝑒𝑛𝑡 𝑡−1 + 𝜀3 𝑡 𝜀3 𝑡 ~𝒩 0, 𝜎 𝑒𝑣𝑒𝑛𝑡 𝑡
  16. モデル | AR項 𝑎𝑟 𝑡 は 𝑡𝑟𝑒𝑛𝑑 𝑡 よりは短く 𝑤𝑒𝑒𝑘 𝑡 よりは長い時間スケール、 具体的には1ヶ月程度の周期を担う成分 このような他の項では説明できない時間スケール変動を表す 項をあらかじめ入れておくことが, モデリングに基づくデータ分 析の秘訣である. [書籍より] 2 𝑎𝑟 𝑡 = 𝑐_𝑎𝑟𝑙 𝑎𝑟 𝑡−𝑙 + 𝜀4 𝑡 𝑙=1 𝜀4 𝑡 ~𝒩 0, 𝜎 𝑎𝑟
  17. Stanコード (data, parametersブロック) 欠損値を別ループで回すため 範囲の制限
  18. Stanコード (modelブロック) モデルで事前分布を指定しなければ, 無情報事前分布が自動で設定されるので, これだけでOK! 欠損値を別ループで回す
  19. 現在のマイポリシー 『Stanコードはなるべく減らす』 • transformed dataブロック • generated quantitiesブロック – なるべく使わないでRで計算
  20. kickするRコード (RStanを使用) 今回, 欠損値は自分で入れました {doParallel}を使って並列計算! 環境: Windows 7 64 bit R 3.0.2 Stan 2.0.1
  21. 分解の結果 売上データ, トレンド 週 雨 イベント AR 売上 [千円] 残差 day 真の値 MCMCサンプル (n=1500) MCMCサンプルの中央値
  22. 結果: トレンド 𝑡𝑟𝑒𝑛𝑑 𝑡 2年間 𝑡𝑟𝑒𝑛𝑑 𝑡 2013 2012 1年間
  23. 結果: 週効果 | 基本パターン 𝑠𝑡 売上 [千円] 真の値 MCMCサンプルの中央値 週末に売上が減る. ビジネス街の影響.
  24. 結果: 週効果 | 祝日効果 類似度 真の値 MCMCサンプルの密度関数 MCMCサンプルの中央値, 95%CI 𝐷2 𝑡 = 1の日は3日だけだったので 𝑏2, 𝑏3の推定は厳しかった. 0 ≤ 𝑏1 ≤ 1の範囲の境界の値(=1.0)を推定させるのも厳しい様子.
  25. 結果: 雨効果 係数 [千円] 真の値 MCMCサンプルの密度関数 MCMCサンプルの中央値, 95%CI 悪天候になると売上が伸びる. ビジネス街の影響.
  26. 結果: イベント効果 𝑒𝑣𝑒𝑛𝑡 𝑡 𝑐_𝑒𝑣𝑒𝑛𝑡 𝑡 売上 [千円] day 真の値 MCMCサンプル (n=1500) MCMCサンプルの中央値
  27. 結果: AR項, 残差 𝑎𝑟 𝑡 欠損値のあるところ 𝜀𝑡 売上 [千円] day
  28. 気になる計算時間は・・・ ☹ 残念ながら約24時間とちょっと長い. – – – – 𝜎 𝑠 (s_s)だけが収束しにくかった. このパラメータ以外は iter=10000 あればOK. 収束をよくする余地はあるのか?要調査. vector化?
  29. まとめ • Stanで売上データの分解モデルを試しました. 割とうまくいきました. Stanと時系列データは相性良さそう. • GARCH, ARIMAなどの時系列分析の手法と比べて, 様々な知 見やデータを組み合わせることで現象の理解がすすみそう.
  30. Web上の情報(予定含む) • Small Data Scientist Memorandum – http://heartruptcy.blog.fc2.com/blog-entry-90.html – R Advent Calendar 2013の26日目の記事になります. • 書籍の元となった研究はこちら. – 状態空間モデルを用いた飲食店売上の要因分解 • http://ci.nii.ac.jp/naid/110001183787 – 状態空間モデルによる 時系列データ解析 樋口知之 - 統計数理研究所 • http://tswww.ism.ac.jp/higuchi/index_e/papers/Kouza-TSA-Higuchi.pdf‎
Advertisement