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

28
100人のための統計解析 和食レストラン編 2014.04.19 @berobero11 第38回R勉強会@東京(#TokyoR)

Upload: berobero11

Post on 15-Nov-2014

4.443 views

Category:

Documents


5 download

DESCRIPTION

 

TRANSCRIPT

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