『マーケティング・サイエンス入門』に出てくる手法をRで実行してみる


友人に『マーケティング・サイエンス入門』がおすすめと言われて読んだんですが、やっぱり実行できないとモヤモヤしてしまいますよね。そこで、登場する手法に関連したRのコードやらを集めてみました。

・BASSモデル
・多次元尺度法
・因子分析
・ロジット&プロビット
・分散分析
・クラスター分析
・判別分析
・決定木
・コンジョイント分析
・RFM分析
・共分散構造分析

BASSモデル

市場全体の規模が動的にどのように変化するかを予測するために使われるモデル。
R を使ってバスモデルを当てはめてみた – 廿TT
こちらにRのコードや適用例がいくつか載っています。

早速、私も携帯電話の加入契約数の時系列データを用いて、コードを実行してみました。データは平成25年版の総務省の情報通信白書の表から得ました。( 第2部 情報通信の現況・政策の動向
mobile_phone_plot

当てはまりはわずかながら、BASSモデルの方が良いようです。

多次元尺度法

多次元尺度法で遊んでみる(オレ流 R入門)
こちらのブログで山手線の駅間の距離データの可視化がなされています。
各駅ごとの距離からなる行列さえ用意すれば、cmdscale()関数を実行することで可能なようです。

今回はContaminatedMixtパッケージに含まれているワインのデータセットを使って多次元尺度法を適用してみようと思います。

データはこんな感じです。
%e3%82%b9%e3%82%af%e3%83%aa%e3%83%bc%e3%83%b3%e3%82%b7%e3%83%a7%e3%83%83%e3%83%88-2016-11-03-18-48-01

以下のコードで実行しました。

wine_cmd

Barbera(バルベーラ)・・・基本的にはタンニンをあまり含まず、酸味の強い色の濃い赤ワインで庶民的。
Barolo(バローロ)・・・アルコール度数が高く、非常に重厚な味わいのワインでワインの王様と呼ばれる。
Grignolino(グリニョリーノ)・・・僅かにタンニンを感じるサッパリとした辛口の赤ワインで庶民的。

庶民と王様のワインは成分においても違いがありそうですね。

因子分析

psychパッケージというものがあるようです。こちらのサイトを参考にして進めます。( スナック菓子の食感についてRで因子分析してみた
今回は大好きなwiskyのデータセットを使ってみます。( Classification of whiskies

グレンフィディックやカリラやタリスカーがイメージ通りにプロットされています。ラガブーリンやアードベッグがはみ出しているのが残念ですが。
biplot_wiskey

ロジット・プロビット

これらの手法はビルトインの関数でできてしまいますが、せっかくウイスキーのデータがあるので、薬っぽさに繋がりそうな変数を見つけてみます。

推定結果はこちらです。スモーキーさが関係しているのは納得です。

ちなみに、多項ロジットに関しては、mlogitパッケージを使えばできるようです。( 多項ロジット(Multinomial Logit), R – mlogit 使用メモ )大学院時代に多項ロジットはSTATAでよく使っていましたが、Rだとこのパッケージなんですかね。推定した係数の値の解釈が若干複雑だったりします。

分散分析

分散分析もビルトインの関数で実行することができます。今回はワインのデータを用いて、銘柄から30個ランダムサンプリングをした上で、アルコールに関して群間の母平均値が同じかどうかを確かめてみます。コードはこちらを参考にしました。( R による分散分析(一元配置)

推定結果はこちらです。アルコールに関しては、3群間において差があるようです。

クラスター分析

クラスター分析もビルトインの関数で実行可能です。ここでは参考文献( K-means Clustering 86 Single Malt Scotch Whiskies )のウイスキーのサンプルで取り上げられたK-mean法をそのまま紹介します。

気になるクラスターの結果ですが、どうやらアイラ島系のウイスキーのクラスターを作れたようです。

判別分析

MASSパッケージで実行可能です。線形識別関数の実行例がこちらの参考文献に載っていたので、ワインのデータで試してみます。( 【Rによるデータサイエンス】線形判別分析

判別関数得点
%e5%88%a4%e5%88%a5%e9%96%a2%e6%95%b0%e5%be%97%e7%82%b9

lda_plot

さすがパッケージ用のデータセットだけあって、綺麗に分類できたようです。誤分類は2件だけです。

決定木

決定木はrpartパッケージで実行します。ウイスキーのデータを使って、薬っぽさを決める条件を探してみます。コードはこちらを参考にしました。( R言語で決定木分析

rpart_plot

コンジョイント分析

conjointパッケージなるものがあるようです。こちらの参考文献を元に紹介します。( Rでコンジョイント分析

まずは直交表を作ってみます。

残念ながら、面白そうなデータがないので、サンプルについているお茶のデータを使ってみます。

価格が効用に与える影響の可視化です。
utility_of_price

RFM分析

ほくそ笑むの親分がeasyRFMパッケージを作っていたようです。( RFM 分析を簡単に実行できる R パッケージ easyRFM を作った )都合良く取引データがなかったので、kaggleの掲示板で落ちていたデータを使いました。( Sample of transaction data

結果は以下のとおりです。

共分散構造分析

semパッケージで実行可能です。こちらの参考文献のデータを用います。( Rによるパス解析 )データはこちらにあります。( 練習用データ

Rを使った分析(SEM)
こちらの方がパスの図も出力できるので、良いかもしれません。