100人のための統計解析
和食レストラン編
2014.04.19
@berobero11
第38回R勉強会@東京(#TokyoR)
• Excel で 重回帰 する本
• 問題設定 と サンプルデータ が Good
第2章 和食レストラン
過去3か月に来店経験ある人に対して,
平日夜の利用に関するアンケートデータ(1000人分)
調査
ID
年齢 性別 家族構成
CM
イメージ
来店
回数
利用
金額
定食 麺 丼 デザート
サイド
メニュー
ソフト
ドリンク
お酒
5 54 女性 未婚 3 0 0 1 0 1 0 0 0 0
9 46 女性 未婚 2 0 0 1 0 0 0 0 0 0
11 27 女性 未婚 3 0 0 1 1 0 0 0 1 0
12 35 女性 未婚 3 1 2200 1 0 1 0 0 1 0
… … … … … … … … … … … … … …
908 33 男性 既婚(子供なし) 3 0 0 1 1 1 0 0 0 0
965 35 男性 既婚(子供なし) 3 6 700 1 1 1 0 0 0 1
979 46 男性 既婚(子供なし) 4 1 2000 1 1 0 0 1 0 1
987 34 男性 既婚(子供なし) 3 0 0 1 1 1 0 0 0 0
昼夜問わず
メニュー注文経験
1来店あたりの
典型的な利用金額
平日夜の来店回数
書籍の手法&結論
CMイメージ お酒 年齢 定食 女性
• 来店回数×利用金額 を 総利用金額 と定義し,
応答変数 として重回帰
• Rでは以下と同じ
– lm( 総利用金額 ~
年齢 + 性別 + 既婚(子供なし) + 既婚(子供あり) + CMイメージ +
定食 + 麺 + 丼 + デザート + サイドメニュー + ソフトドリンク + アルコール,
data=d)
• 結論: 総利用金額upするには,
• まず可視化!
• 統計モデリングのススメ
1
2
100人のための統計解析
• まず可視化!
• 統計モデリングのススメ
1
2
はじめは 散布図行列
• corrplot {corrplot}
– キレイ 散布図が表示できない
• pairs {graphics}
– インストール不要 相関係数出すにはカスタム必要
• ggpairs {GGally}
– キレイ {ggplot2}に慣れが必要
☺ ☹
☺ ☹
☺ ☹
corrplot {corrplot}
pairs {graphics}
ggpairs {GGally}
ggpairs {GGally}
• まず可視化!
• 統計モデリングのススメ
1
2
教科書
通称: 久保本, 久保緑本, 久保岩波本
訂正情報: http://hosho.ees.hokudai.ac.jp/~kubo/ce/IwanamiBookErrata.html
重回帰の 前提条件に 注意
[久保本 3章 図3.9より引用]
平均値がマイナス??
バラつきが正規分布?? だいぶマシ!
[来店回数][利用金額]の分布
来店回数
カウント
利用金額/100
カウント
来店0を混ぜた 重回帰の功罪
1回も夜間に来店したことがなくても
– 常連になりそうな人
– 1回あたりの利用金額が大きそうな人
はいるはず
そこで
 Zero-Inflated Poisson 分布に従うと考える
夜間の来店の可能性 と 常連度 を分離する
一人一人の行動を見たときに,
dZIP {gamlss.dist} を使いました
年齢, 性別, …
来店回数
利用金額
来店回数
利用金額
Rだけでは柔軟なモデリングが難しい
{R2WinBUGS}+ WinBUGS
{rstan}+ Stan
計算時間
来店回数 × 利用金額 の
RMSE (円)
個体差なしモデル 6 min (Stan) 4607
個体差ありモデル 60 min (Stan) 1272
(参考) 重回帰 lm() < 1 s 4623
予測値
(円)
誤差
(円)
以降では 個体差なしモデル を紹介
BUGSコードの例
Zero-Inflated Poisson
回帰
結果の分かりやすさのため θ ⇔ 1 -θにして実装しています
キックするRコード
txt読み込んでゴニョゴニョ
dataをセット
parameterをセット
推定させる (MCMCサンプリング)
結果 | 推定値は分布で得られる
結果 | 回帰係数
• 夜間に来店する確率 up:
– 年齢 CMイメージ 女性 定食
• 常連度 up:
– 年齢 デザート CMイメージ 女性
• 1来店あたりの利用金額 up:
– 既婚(子供なし) 女性 既婚(子供あり)
お酒 年齢
結果 | 推定値の間の関係
常連度 と
1来店あたりの利用金額 は
負の相関
• まず可視化!
• 統計モデリングのススメ
1
2
どうしてそういう図になったかよく考える
重回帰では得られない知見がいっぱい
参考URL (予定含む)
• 散布図行列のRコードと説明
– http://heartruptcy.blog.fc2.com/blog-entry-147.html
• BUGSコード, Stanコードと説明
– http://heartruptcy.blog.fc2.com/blog-entry-148.html

100人のための統計解析 和食レストラン編