とある変数(データ)に影響を与える要因を分析したい・・・。
PowerBIでは通常どうしても2~3変数程度の分析・可視化しかできず、歯がゆい思いをしたことがある人もいるかもしれません。
厳密にはベイジアンネットワークとか、構造方程式モデリングとか色々あるのですが、
比較的簡単に実装し、かつクライアントや上司などにも説明しやすい「決定木」をPowerBIで作ってみます!
対象読者
PowerBIの基本的な操作が分かる
ちょっと統計解析を踏まえたビジュアライゼーションをしてみたい
データセットの準備
今回は、有名なタイタニック号の死亡・生存データを使います。(暗いデータですみません…)
有名なデータサイエンスのコンテストサイト「kaggle」からダウンロードしましょう。
https://www.kaggle.com/c/titanic/data
PowerBIに取り込み
今回はデータセット上の[Survived]の要因を可視化します。
0,1だと分かりづらいので、DAX関数のswithを使い、
生存できたか?⇒ 0:No , 1:Yes に置き換えましょう。
SurvivedJp = SWITCH([Survived],0,"No",1,"Yes")
Rcodeを書こう!
データセットの準備が整ったので、Rで決定木を作成するスクリプトを作ります。
実質2行でいいので、ホントに簡単!決定木大好きです。
library(rpart) #決定木モデルを作るパッケージ
library(partykit) #決定木を描写するパッケージ
dataset.tree <- rpart::rpart(SurvivedJp ~ . - PassengerId, data = dataset, method = "class")
plot(partykit::as.party(dataset.tree))
ID以外の投入した変数すべてを説明変数とし、
生存(Yes)と死亡(NO)の結果に影響した順番に、要因を可視化します。
今回は「Sex」,「Age」,「Pclass(客室のランク)」を説明変数に組み込んで、こんな図ができました。
普通のPowerBIのビジュアルと比べて寂しいのは見逃してください(笑)
もうちょっと詳しく調べれば、改良できるかも・・・?
上記図の見方ですが、まず性別(sex)の男性か、女性かが生存に影響があるようです。
男性は年齢が6.5歳より高いか低いかが生死に影響しているようです。
6.5歳以上なら死亡(No)、
6.5歳以下なら生存(Yes)の割合が高いことがわかります。
一番生存率が高いのは、女性(female)で客室(Pclass)が2等以下のケースのようです。
比較的理解しやくす、説明しやすい決定木はPowerBIに向いているかもしれませんね。
数値データ、カテゴリカルデータいずれも読み込めます。
※もちろん、上記分析結果はその他の要因を検討したりすると、より詳細に区分できるかもしれません。
あくまで解釈の仕方の一例です。
決定木がインタラクティブに作れるよ
以前の記事でも取り上げましたが、Rビジュアルがインタラクティブに操作できるのがいいところ。
今回のようにモデル作成のスクリプトをビジュアルに組み込んでおけば、
値フィールドに変数を入れたり抜いたりするだけで分析結果を表示できます。
終わりに
以上、PowerBIで決定木を使った要因分析を実施してみました!
Rは、比較的簡単なコードでビジュアライゼーションを実装できるので、ぜひ試してみてください。
通常のPowerBIのビジュアルと組み合わせて使えば、分析用途の幅が広がりますよー。