CVしてる/していないの違いってなんだろう?
ここまでで性別、年齢、接触広告によって、CVしているか/いないかに違いがありそうなことはわかりました。もう少し突っ込んだ視覚化する方法をご紹介していきます。
決定木という手法を使いますが、まずはサックリ手元で動かして頂いてから説明に移りますね。パッケージrpartを読み込みます。
library(rpart)
tree<-rpart(CV~ID+AGE+SEX+AD,data=sample)
CVしているか/いないか?(CVを被説明変数、目的変数、従属変数なんて言ったりします)を、ID,AGE,SEX,AD(これらは、説明変数、独立変数と言います)で説明するモデルを構築して結果をtreeに格納します。
data=sample
は、使用するデータのテーブル名ですね。
決定木の結果を綺麗に出力できるパッケージを使ってみましょう。
library(partykit)
plot(as.party(tree),tp_args=T)

図の見方ですが…、上から見ていきます。1つ1つの箱はノードと言います。
CVしているか/していないかを判断するのに、SEX:性別で分割するのが良いとの結果が得られています。
Male:男性を辿っていくと、n=26となっていますので26人が男性であることがわかります。また、yes/noでyesが濃いグレー、noが薄いグレーとなっておりCV=yesが大半を占めていることが示唆されています。
一方、Female:女性を辿ると、IDで分割されています。IDが52.5未満か以上か。
アレ……。IDって単なるラベルでした……よね?
ランダムに振られた意味のない番号だとしたら、分析結果に入っていたとしても使い道ない!! です。
ちなみに、IDのような個人を1対1で識別できるような説明変数(←さきほどやりましたね)を決定木に入れるとデータを100%説明できてしまいます。
例えて言うと同姓同名のいないクラスの生徒を名前で分割するようなものです。でもそれって、使い道がないです。
と、言う訳でもう一度やり直しを。
tree<-rpart(CV~AGE+SEX+AD,data=sample)
plot(as.party(tree),tp_args=T)

先ほどIDで分割されていたところが、AGE:年齢と変わっています。
女性でも年齢が25.5歳未満だとCVしている割合が高くなる(86%)可能性があります。
但し、このようなケース(女性かつ25.5歳未満)はn=7しかない点は注意が必要です。
一番左の結果について確認していくと、このようなケース(女性かつ25.5歳以上)はn=17人存在しており、76%はCVしていない、24%がCVしている、となっています。
結果を異なる形式で出力してみましょう。こちらもなかなかに綺麗です。
library(rattle)
library(rpart.plot)
fancyRpartPlot(tree)

見方を上から説明していきますね。一番上のノードはyesとあります。これはCVしている/していないについて、
no:0.3(=30%)、yes:0.7(=70%)
であり、このノードは全データに基づく(100%)ことを示しています。
次に、SEX:性別=Femaleがnoとなっている(つまりMale:男性ですね)右下のノードを見てみましょう。
yesとなっており、0.96(96%)の人がCVしています。下の52%は全体100人のうち52%(52人)がこのノードに含まれていることを表しています。
先ほどのpartykitとrattleとを、必要に応じて使い分けて頂ければと思います。
また、数値をパパッと確認したいときは、
tree
と入力してみましょう。

先ほどの2つの図と同内容をこの形式でも確認できます。
今回はクロス集計、モザイク図、決定木に加えて、変数の種類について学んできました。
変数の種類の理解はとっても大事なものです。
- 手元にあるデータは質的変数なのか量的変数なのか?
- 知りたいこと(被説明変数)があって、要因(説明変数)を特定したいのか?
- まずは大雑把に顧客をグルーピングしたい
などなど。使用するデータの種類とやりたいことに応じて、分析手法を選択する必要があるからです。
さて、いよいよ次回は最終回です。お楽しみに!
簡単! 2015年2月10日「3つ」覚えて分析から視覚化まで即実践!Rでできるデータ分析講座開催
Rをインストールしたが、無骨なUIに「今日はこのへんで……」と、そっと閉じてしまった方にオススメです!
本講座では実機を使って「できるだけわかりやすく」グラフ化&データ分析をワークショップ形式で簡単に身に付けることができます。