SSブログ

bayesmのcheeseを使ったモデリング、その1~通常の線形回帰モデル [階層ベイズ]

Rの bayesm というパッケージに入っている cheese というデータを使って、いろいろ分析していきたいと思います。

write.table(cheese, "cheese.txt", sep="\t", quote=F, col.names=T, row.names=F, append=F)

いったん、ローカルにテキストファイルとして吐き出して、いろいろなモデルを作っていきます。
モデルは、SPSS Modelerを使用。

cheese のデータ概要ですが、全部で5,555レコード。
IDとなる、RETAILER数は、88社で、RETAILERをIDとすると、同じRETAILERのデータが複数存在します。
階層ベイズを使って線形回帰モデルを行っていくのですが、同じRETAILERでデータが、だいたい60レコード存在します。


5,555レコードあるのですが、
モデル作成用:5,359レコード
モデル検証用:176レコード
にランダムに分けます。

モデル検証用として、RETAILER 88社から2レコードずつ、合計176レコード取っておきます。

まずは、階層ベイズを使わないで、普通に線形回帰をしたらどうなるか?

目的変数:VOLUME
説明変数:DISP, log_PRICE

もともとのデータは、PRICEが入っているのですが、ここではlog変換を行ってlog_PRICEを説明変数としています。

分析結果は、こんな感じ。


DSIP, log_PRICE ともに有意となっています。
DISP(陳列)した方が売れますし、PRICE(価格)が高くなると売れなくなります。

納得の結果ですね。

ただ、R2は、0.088とそれほど高くありません。
推定結果と実際の値を比較してみても、上手く予想できていないことがよくわかります。

【推定結果と実際の値の散布図】


【推定結果と実際の値のピアソンの積率相関係数】
0.098

ということで、ここから工夫をしていくわけですが、
1. 通常の線形回帰モデル ← 今、ココ
2. RETAILER をフラグ化した線形回帰モデル
3. 機械学習のアプローチ
4. 階層ベイズを使った線形回帰モデル
とモデリングしていきます。

nice!(7)  コメント(0) 
共通テーマ:学問