SlideShare a Scribd company logo
1 of 30
Download to read offline
『予測にいかす統計モデリングの基本』
の売上データの分析をトレースしてみた
2013.12.22
@berobero11
BUGS/Stan勉強会 #2 於 ドリコム
良書です!
買いましょう.
本発表のデータは書籍を参考にデータをゼロか
ら作成したものであり, 分析手法も異なります.
それらについて書籍の著者や統計数理研究所
に問い合わせたりしてはいけません.
仮想売上データ
オフィス街の近くのレストラン
• 2012/1/1~2013/12/31
• 繁忙期(8月)は欠損

売上
[千円]
day
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

近くのイベント
の参加人数
売上
[千円]

イベントの参加人数

lm(formula = d$Sale ~ Sun + Mon + Tue + Wed + Thu + Fri + Sat
+ d$Weather + d$Head.count)

?
そこで統計モデリングですよ!
今回はStan, RStanを使いました

http://www.slideshare.net/berobero11/bugs-26159695
売上データの分解モデル
𝑆𝑎𝑙𝑒 𝑡 = 𝑡𝑟𝑒𝑛𝑑 𝑡 + 𝑤𝑒𝑒𝑘 𝑡 + 𝑟𝑎𝑖𝑛 𝑡 + 𝑒𝑣𝑒𝑛𝑡 𝑡 + 𝑎𝑟 𝑡 + 𝜀 𝑡

トレンド

雨効果
週効果

先頭が

AR項
イベント
効果

残差

小文字の変数: 推定すべきパラメータ
大文字の変数: すでに与えられているデータ・数値

とします.
モデル | トレンド
長期的変動を表す. 二次トレンドモデルを使う.
𝑡𝑟𝑒𝑛𝑑 𝑡 − 𝑡𝑟𝑒𝑛𝑑 𝑡−1 ≈ 𝑡𝑟𝑒𝑛𝑑 𝑡−1 − 𝑡𝑟𝑒𝑛𝑑 𝑡−2

𝑡𝑟𝑒𝑛𝑑 𝑡 = 2𝑡𝑟𝑒𝑛𝑑 𝑡−1 − 𝑡𝑟𝑒𝑛𝑑 𝑡−2 + 𝜀1 𝑡

𝜀1 𝑡 ~𝒩 0, 𝜎 𝑡𝑟𝑒𝑛𝑑
モデル | 週効果
𝑤𝑒𝑒𝑘 𝑡 = 𝑠 𝑡
+ 𝐷1 𝑡 𝑏1 𝑠 日,𝑡 − 𝑠 𝑡
+ 𝐷2 𝑡 𝑏2 𝑠 金,𝑡 − 𝑠 𝑡 + 𝑏3 𝑠 土,𝑡 − 𝑠 𝑡
値=1

値=0

𝐷1 𝑡

月~金の祝日

それ以外

𝐷2 𝑡

祝日でない月~木
かつ翌日が祝日

それ以外
モデル | 週効果
基本パターン (周期7)

7

𝑠 𝑡−𝑙 ≈ 0
𝑙=1

6

𝑠𝑡 = −

𝑠 𝑡−𝑙 + 𝜀2 𝑡
𝑙=1

𝜀2 𝑡 ~𝒩 0, 𝜎 𝑠
モデル | 週効果
祝日効果
祝日の売上がどのくらい直近の日曜の売上に似ているか
類似度 0 ≤ 𝑏1 ≤ 1

祝前日効果
祝前日の売上がどのくらい直近の金曜 or 土曜の売上に似ているか
類似度 0 ≤ 𝑏2, 𝑏3 ≤ 1
モデル | 雨効果
『悪天候になればなるほど・・・』
経験で変換: 天気数値
推定する係数 [千円]

Rain_val

𝑟𝑎𝑖𝑛 𝑡 = 𝑐_𝑟𝑎𝑖𝑛 ∗ 𝑅𝑎𝑖𝑛_𝑣𝑎𝑙

𝑡
モデル | イベント効果
経験で変換: 参加人数数値
推定する係数 [千円]

𝑒𝑣𝑒𝑛𝑡 𝑡 = 𝑐_𝑒𝑣𝑒𝑛𝑡 𝑡 ∗ 𝐸𝑣𝑒𝑛𝑡_𝑣𝑎𝑙
Event_val

イベントの参加人数
[万人]

𝑐_𝑒𝑣𝑒𝑛𝑡 𝑡 = 𝑐_𝑒𝑣𝑒𝑛𝑡 𝑡−1 + 𝜀3 𝑡
𝜀3 𝑡 ~𝒩 0, 𝜎 𝑒𝑣𝑒𝑛𝑡

𝑡
モデル | AR項
𝑎𝑟 𝑡 は 𝑡𝑟𝑒𝑛𝑑 𝑡 よりは短く 𝑤𝑒𝑒𝑘 𝑡 よりは長い時間スケール、
具体的には1ヶ月程度の周期を担う成分
このような他の項では説明できない時間スケール変動を表す
項をあらかじめ入れておくことが, モデリングに基づくデータ分
析の秘訣である.
[書籍より]
2

𝑎𝑟 𝑡 =

𝑐_𝑎𝑟𝑙 𝑎𝑟 𝑡−𝑙 + 𝜀4 𝑡
𝑙=1

𝜀4 𝑡 ~𝒩 0, 𝜎 𝑎𝑟
Stanコード (data, parametersブロック)
欠損値を別ループで回すため

範囲の制限
Stanコード (modelブロック)
モデルで事前分布を指定しなければ,
無情報事前分布が自動で設定されるので,
これだけでOK!

欠損値を別ループで回す
現在のマイポリシー
『Stanコードはなるべく減らす』
• transformed dataブロック
• generated quantitiesブロック
– なるべく使わないでRで計算
kickするRコード (RStanを使用)

今回, 欠損値は自分で入れました

{doParallel}を使って並列計算!
環境:
Windows 7 64 bit
R 3.0.2
Stan 2.0.1
分解の結果
売上データ, トレンド
週
雨
イベント

AR
売上
[千円]

残差
day

真の値
MCMCサンプル (n=1500)
MCMCサンプルの中央値
結果: トレンド
𝑡𝑟𝑒𝑛𝑑 𝑡

2年間

𝑡𝑟𝑒𝑛𝑑 𝑡
2013
2012
1年間
結果: 週効果 | 基本パターン
𝑠𝑡

売上
[千円]

真の値
MCMCサンプルの中央値

週末に売上が減る.
ビジネス街の影響.
結果: 週効果 | 祝日効果

類似度

真の値
MCMCサンプルの密度関数
MCMCサンプルの中央値, 95%CI

𝐷2 𝑡 = 1の日は3日だけだったので 𝑏2, 𝑏3の推定は厳しかった.
0 ≤ 𝑏1 ≤ 1の範囲の境界の値(=1.0)を推定させるのも厳しい様子.
結果: 雨効果

係数
[千円]

真の値
MCMCサンプルの密度関数
MCMCサンプルの中央値, 95%CI

悪天候になると売上が伸びる.
ビジネス街の影響.
結果: イベント効果
𝑒𝑣𝑒𝑛𝑡 𝑡

𝑐_𝑒𝑣𝑒𝑛𝑡 𝑡
売上
[千円]

day

真の値
MCMCサンプル (n=1500)
MCMCサンプルの中央値
結果: AR項, 残差
𝑎𝑟 𝑡

欠損値のあるところ

𝜀𝑡
売上
[千円]
day
気になる計算時間は・・・

☹

残念ながら約24時間とちょっと長い.
–
–
–
–

𝜎 𝑠 (s_s)だけが収束しにくかった.
このパラメータ以外は iter=10000 あればOK.
収束をよくする余地はあるのか?要調査.
vector化?
まとめ
• Stanで売上データの分解モデルを試しました.
割とうまくいきました. Stanと時系列データは相性良さそう.
• GARCH, ARIMAなどの時系列分析の手法と比べて, 様々な知
見やデータを組み合わせることで現象の理解がすすみそう.
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‎

More Related Content

What's hot

階層ベイズによるワンToワンマーケティング入門
階層ベイズによるワンToワンマーケティング入門階層ベイズによるワンToワンマーケティング入門
階層ベイズによるワンToワンマーケティング入門
shima o
 
RでGARCHモデル - TokyoR #21
RでGARCHモデル - TokyoR #21RでGARCHモデル - TokyoR #21
RでGARCHモデル - TokyoR #21
horihorio
 
Disentanglement Survey:Can You Explain How Much Are Generative models Disenta...
Disentanglement Survey:Can You Explain How Much Are Generative models Disenta...Disentanglement Survey:Can You Explain How Much Are Generative models Disenta...
Disentanglement Survey:Can You Explain How Much Are Generative models Disenta...
Hideki Tsunashima
 
Rで階層ベイズモデル
Rで階層ベイズモデルRで階層ベイズモデル
Rで階層ベイズモデル
Yohei Sato
 

What's hot (20)

NagoyaStat#7 StanとRでベイズ統計モデリング(アヒル本)4章の発表資料
NagoyaStat#7 StanとRでベイズ統計モデリング(アヒル本)4章の発表資料NagoyaStat#7 StanとRでベイズ統計モデリング(アヒル本)4章の発表資料
NagoyaStat#7 StanとRでベイズ統計モデリング(アヒル本)4章の発表資料
 
階層ベイズとWAIC
階層ベイズとWAIC階層ベイズとWAIC
階層ベイズとWAIC
 
Stan超初心者入門
Stan超初心者入門Stan超初心者入門
Stan超初心者入門
 
階層ベイズによるワンToワンマーケティング入門
階層ベイズによるワンToワンマーケティング入門階層ベイズによるワンToワンマーケティング入門
階層ベイズによるワンToワンマーケティング入門
 
傾向スコアの概念とその実践
傾向スコアの概念とその実践傾向スコアの概念とその実践
傾向スコアの概念とその実践
 
負の二項分布について
負の二項分布について負の二項分布について
負の二項分布について
 
Prophet入門【理論編】Facebookの時系列予測ツール
Prophet入門【理論編】Facebookの時系列予測ツールProphet入門【理論編】Facebookの時系列予測ツール
Prophet入門【理論編】Facebookの時系列予測ツール
 
階層モデルの分散パラメータの事前分布について
階層モデルの分散パラメータの事前分布について階層モデルの分散パラメータの事前分布について
階層モデルの分散パラメータの事前分布について
 
RでGARCHモデル - TokyoR #21
RでGARCHモデル - TokyoR #21RでGARCHモデル - TokyoR #21
RでGARCHモデル - TokyoR #21
 
ようやく分かった!最尤推定とベイズ推定
ようやく分かった!最尤推定とベイズ推定ようやく分かった!最尤推定とベイズ推定
ようやく分かった!最尤推定とベイズ推定
 
Chapter9 一歩進んだ文法(前半)
Chapter9 一歩進んだ文法(前半)Chapter9 一歩進んだ文法(前半)
Chapter9 一歩進んだ文法(前半)
 
マルコフ連鎖モンテカルロ法 (2/3はベイズ推定の話)
マルコフ連鎖モンテカルロ法 (2/3はベイズ推定の話)マルコフ連鎖モンテカルロ法 (2/3はベイズ推定の話)
マルコフ連鎖モンテカルロ法 (2/3はベイズ推定の話)
 
【読書会資料】『StanとRでベイズ統計モデリング』Chapter12:時間や空間を扱うモデル
【読書会資料】『StanとRでベイズ統計モデリング』Chapter12:時間や空間を扱うモデル【読書会資料】『StanとRでベイズ統計モデリング』Chapter12:時間や空間を扱うモデル
【読書会資料】『StanとRでベイズ統計モデリング』Chapter12:時間や空間を扱うモデル
 
Disentanglement Survey:Can You Explain How Much Are Generative models Disenta...
Disentanglement Survey:Can You Explain How Much Are Generative models Disenta...Disentanglement Survey:Can You Explain How Much Are Generative models Disenta...
Disentanglement Survey:Can You Explain How Much Are Generative models Disenta...
 
Stanでガウス過程
Stanでガウス過程Stanでガウス過程
Stanでガウス過程
 
これからの仮説検証・モデル評価
これからの仮説検証・モデル評価これからの仮説検証・モデル評価
これからの仮説検証・モデル評価
 
ベイズファクターとモデル選択
ベイズファクターとモデル選択ベイズファクターとモデル選択
ベイズファクターとモデル選択
 
Rで階層ベイズモデル
Rで階層ベイズモデルRで階層ベイズモデル
Rで階層ベイズモデル
 
『バックドア基準の入門』@統数研研究集会
『バックドア基準の入門』@統数研研究集会『バックドア基準の入門』@統数研研究集会
『バックドア基準の入門』@統数研研究集会
 
ロジスティック回帰分析の書き方
ロジスティック回帰分析の書き方ロジスティック回帰分析の書き方
ロジスティック回帰分析の書き方
 

Viewers also liked

100人のための統計解析 和食レストラン編
100人のための統計解析   和食レストラン編100人のための統計解析   和食レストラン編
100人のための統計解析 和食レストラン編
. .
 
第2回 R言語で始めよう、データサイエンス(ハンズオン勉強会) 〜相関分析による需要予測編〜
第2回 R言語で始めよう、データサイエンス(ハンズオン勉強会) 〜相関分析による需要予測編〜第2回 R言語で始めよう、データサイエンス(ハンズオン勉強会) 〜相関分析による需要予測編〜
第2回 R言語で始めよう、データサイエンス(ハンズオン勉強会) 〜相関分析による需要予測編〜
Yasuyuki Sugai
 
MCMCサンプルの使い方 ~見る・決める・探す・発生させる~
MCMCサンプルの使い方 ~見る・決める・探す・発生させる~MCMCサンプルの使い方 ~見る・決める・探す・発生させる~
MCMCサンプルの使い方 ~見る・決める・探す・発生させる~
. .
 
Pystan for nlp
Pystan for nlpPystan for nlp
Pystan for nlp
Xiangze
 
マーケティングサイエンス徹底入門と実践Part2
マーケティングサイエンス徹底入門と実践Part2マーケティングサイエンス徹底入門と実践Part2
マーケティングサイエンス徹底入門と実践Part2
宏喜 佐野
 
ロジスティック回帰の考え方・使い方 - TokyoR #33
ロジスティック回帰の考え方・使い方 - TokyoR #33ロジスティック回帰の考え方・使い方 - TokyoR #33
ロジスティック回帰の考え方・使い方 - TokyoR #33
horihorio
 

Viewers also liked (15)

100人のための統計解析 和食レストラン編
100人のための統計解析   和食レストラン編100人のための統計解析   和食レストラン編
100人のための統計解析 和食レストラン編
 
第2回 R言語で始めよう、データサイエンス(ハンズオン勉強会) 〜相関分析による需要予測編〜
第2回 R言語で始めよう、データサイエンス(ハンズオン勉強会) 〜相関分析による需要予測編〜第2回 R言語で始めよう、データサイエンス(ハンズオン勉強会) 〜相関分析による需要予測編〜
第2回 R言語で始めよう、データサイエンス(ハンズオン勉強会) 〜相関分析による需要予測編〜
 
Rで売上予測のデモ(回帰分析)
Rで売上予測のデモ(回帰分析)Rで売上予測のデモ(回帰分析)
Rで売上予測のデモ(回帰分析)
 
MCMCサンプルの使い方 ~見る・決める・探す・発生させる~
MCMCサンプルの使い方 ~見る・決める・探す・発生させる~MCMCサンプルの使い方 ~見る・決める・探す・発生させる~
MCMCサンプルの使い方 ~見る・決める・探す・発生させる~
 
Pystan for nlp
Pystan for nlpPystan for nlp
Pystan for nlp
 
セグメンテーションの考え方・使い方 - TokyoR #44
セグメンテーションの考え方・使い方 - TokyoR #44セグメンテーションの考え方・使い方 - TokyoR #44
セグメンテーションの考え方・使い方 - TokyoR #44
 
マーケティングサイエンス徹底入門と実践Part2
マーケティングサイエンス徹底入門と実践Part2マーケティングサイエンス徹底入門と実践Part2
マーケティングサイエンス徹底入門と実践Part2
 
PyMC mcmc
PyMC mcmcPyMC mcmc
PyMC mcmc
 
状態空間モデル等による多変量時系列データ解析
状態空間モデル等による多変量時系列データ解析状態空間モデル等による多変量時系列データ解析
状態空間モデル等による多変量時系列データ解析
 
時系列解析の使い方 - TokyoWebMining #17
時系列解析の使い方 - TokyoWebMining #17時系列解析の使い方 - TokyoWebMining #17
時系列解析の使い方 - TokyoWebMining #17
 
分析のビジネス展開を考える―状態空間モデルを例に @TokyoWebMining #47
分析のビジネス展開を考える―状態空間モデルを例に @TokyoWebMining #47分析のビジネス展開を考える―状態空間モデルを例に @TokyoWebMining #47
分析のビジネス展開を考える―状態空間モデルを例に @TokyoWebMining #47
 
状態空間モデルの実行方法と実行環境の比較
状態空間モデルの実行方法と実行環境の比較状態空間モデルの実行方法と実行環境の比較
状態空間モデルの実行方法と実行環境の比較
 
カルマンフィルタについて
カルマンフィルタについてカルマンフィルタについて
カルマンフィルタについて
 
ロジスティック回帰の考え方・使い方 - TokyoR #33
ロジスティック回帰の考え方・使い方 - TokyoR #33ロジスティック回帰の考え方・使い方 - TokyoR #33
ロジスティック回帰の考え方・使い方 - TokyoR #33
 
エクセルで統計分析 統計プログラムHADについて
エクセルで統計分析 統計プログラムHADについてエクセルで統計分析 統計プログラムHADについて
エクセルで統計分析 統計プログラムHADについて
 

More from . . (10)

TensorFlowで統計モデリング
TensorFlowで統計モデリングTensorFlowで統計モデリング
TensorFlowで統計モデリング
 
統計モデリングで癌の5年生存率データから良い病院を探す
統計モデリングで癌の5年生存率データから良い病院を探す統計モデリングで癌の5年生存率データから良い病院を探す
統計モデリングで癌の5年生存率データから良い病院を探す
 
Stanの紹介と応用事例(age heapingの統計モデル)
Stanの紹介と応用事例(age heapingの統計モデル)Stanの紹介と応用事例(age heapingの統計モデル)
Stanの紹介と応用事例(age heapingの統計モデル)
 
階層ベイズモデルで割安mobile PCを探す
階層ベイズモデルで割安mobile PCを探す階層ベイズモデルで割安mobile PCを探す
階層ベイズモデルで割安mobile PCを探す
 
Replica exchange MCMC
Replica exchange MCMCReplica exchange MCMC
Replica exchange MCMC
 
順序データでもベイズモデリング
順序データでもベイズモデリング順序データでもベイズモデリング
順序データでもベイズモデリング
 
データ解析で割安賃貸物件を探せ!(山手線沿線編) LT
データ解析で割安賃貸物件を探せ!(山手線沿線編) LTデータ解析で割安賃貸物件を探せ!(山手線沿線編) LT
データ解析で割安賃貸物件を探せ!(山手線沿線編) LT
 
分布から見た線形モデル・GLM・GLMM
分布から見た線形モデル・GLM・GLMM分布から見た線形モデル・GLM・GLMM
分布から見た線形モデル・GLM・GLMM
 
とある病んだ院生の体内時計(サーカディアンリズム)
とある病んだ院生の体内時計(サーカディアンリズム)とある病んだ院生の体内時計(サーカディアンリズム)
とある病んだ院生の体内時計(サーカディアンリズム)
 
BUGSを使うメリット
BUGSを使うメリットBUGSを使うメリット
BUGSを使うメリット
 

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