数値列間の相関係数を求める
数値の列どうしの相関係数を出します。似た動きをする列を見つける、説明変数を絞る手がかりにする、といった使い方をします。
入出力
| ポート | 内容 |
|---|---|
| 入力データ | データ |
| 出力データ | データ |
つなげる出力は 1 つだけです。 散布図(ペアプロット)は出力ポートにはならず、相関グラフを作成するを on にして実行したあと、プレビューフィールドのロボットのボタンからボニートくんの相関グラフのページで見ます。
Spark エンジンでも動きます。ただし Spark では散布図は作られません。 相関係数の表だけが出ます。
入力の行はそのままでは残りません。 1 つ目の出力は、列の組み合わせを 1 行ずつ並べた別の表になります。
出力の形
1 つ目の出力は、次の 3 列です。
| 列名 | 内容 |
|---|---|
変数x | 組の片方の列名 |
変数y | もう片方の列名 |
相関係数 | その 2 列の相関係数 |
同じ組は 1 行だけです。A と B が出たら B と A は出ません。自分自身との組(係数 1)も出ません。 数値列が n 本なら、行数は n × (n − 1) ÷ 2 になります。
設定項目
「グラフオプション」はチェックを入れるまで中身が出ません。 見出しの横のチェックボックスを on にすると、グループごとに色分けする / グルーピングする列を選択 が出ます。
- 処理タイプを選択
- 全数値型間の相関を調べる(既定)か相関を調べる列を指定する。
- 処理対象列を選択
- 相関を調べる列を指定するのときだけ出ます。数値の列だけ選べます。複数選べます。
- 相関グラフを作成する
- 既定は off。on にすると散布図を作ります。
- グループごとに色分けする
- 相関グラフを作成するが on のときだけ出ます。既定は off です。
- グルーピングする列を選択
- グループごとに色分けするが on のときだけ出ます。文字列の列だけ選べます。
相関係数の読み方
| 値 | 関係 |
|---|---|
| 1 に近い | 片方が増えると、もう片方も増える |
| 0 に近い | 直線的な関係がない |
| -1 に近い | 片方が増えると、もう片方は減る |
グラフを作ると重くなる
列数が多いとグラフの作成に時間がかかります。 列の数だけ縦横のマス目ができるためです。まず相関グラフを作成するを off で係数だけ見て、気になる列を指定してからグラフを作ってください。
散布図に並ぶのは、相関係数を計算した列だけです。 「相関を調べる列を指定する」で絞れば、散布図のマス目も同じ列だけになります。「全数値型間の相関を調べる」のときは、入力データの数値列すべてが並びます。グループごとに色分けするで指定した列は、色の出し分けに使われるだけでマス目には並びません。
エラーと対処
数値列が足りない
数値の列が 2 本に満たないときに出ます。相関を調べる列を指定するで選んだ列に数値以外が混じっていて、残りが 1 本になった場合も同じです。
最低でも2つ以上の数値型の列を選択してください。
直し方 — 数値の列を 2 つ以上選んでください。相関は 2 列の間の関係なので、1 列では計算できません。数値に見えて文字列型になっている列は、列の型変更で数値にします。
処理対象列を選んでいない
処理タイプを選択で相関を調べる列を指定するにして、処理対象列を選択が空のまま実行したときに出ます。グルーピングする列を選択を空のままにしたときも同じです。
対象の列が選択されていません。
直し方 — 列を選んでください。全列でよいなら処理タイプを選択を全数値型間の相関を調べるに戻します。
選んだ列が入力データにない
前のノードで列名を変えたり列を削ったりして、選んである列がなくなったときに出ます。
対象の列が存在しません。
直し方 — 列を選び直してください。
よく使う例
1. 全体の相関を見る
どの列どうしが似た動きをするかを、まず一覧で知りたいとき。
入力
| 店舗 | 売上 | 来店数 | 気温 |
|---|---|---|---|
| 渋谷 | 120000 | 40 | 24.1 |
| 新宿 | 80000 | 32 | 18.5 |
| 池袋 | 40000 | 20 | 15.2 |
| 上野 | 60000 | 29 | 16.8 |
設定
| 設定項目 | 値 |
|---|---|
| 処理タイプを選択 | 全数値型間の相関を調べる |
| 相関グラフを作成する | off(既定) |
出力 — 数値列は 3 本なので 3 行出ます。文字列の 店舗 は自動で除かれます。
| 変数x | 変数y | 相関係数 |
|---|---|---|
| 売上 | 来店数 | 0.9746 |
| 売上 | 気温 | 0.9897 |
| 来店数 | 気温 | 0.9428 |
行の順は、入力の数値列の並び順で上から組を作った順です(売上 × 来店数 → 売上 × 気温 → 来店数 × 気温)。係数の大きい順には並びません。
2. 気になる列だけグラフにする
目当ての列が決まっていて、形まで目で見たいとき。
入力 — 例 1 と同じ
設定
| 設定項目 | 値 |
|---|---|
| 処理タイプを選択 | 相関を調べる列を指定する |
| 処理対象列を選択 | 売上、来店数 |
| 相関グラフを作成する | on |
出力 — 表は 売上 × 来店数 の 1 行だけになります。散布図も 売上 と 来店数 の 2 列だけのマス目になります。
3. 区分ごとに傾向が違うか見る
全体では相関がないように見えるが、グループを分けると違うのではと疑うとき。
入力
| 会員区分 | 利用月数 | 利用額 |
|---|---|---|
| 一般 | 3 | 1200 |
| 優待 | 24 | 42000 |
| 一般 | 8 | 2400 |
設定
| 設定項目 | 値 |
|---|---|
| 相関グラフを作成する | on |
| グループごとに色分けする | on |
| グルーピングする列を選択 | 会員区分 |
出力 — 散布図の点が会員区分ごとに色分けされます。マス目に並ぶのは数値列の 利用月数 と 利用額 だけで、会員区分 は色にだけ使われます。相関係数の表は全体で 1 つなので、区分ごとの係数は出ません。
4. 似た列の組を洗い出す
説明変数に中身の重なる列が多く、どれとどれが重なっているかを特定したいとき。
入力
| 売上 | 税込売上 | 来店数 |
|---|---|---|
| 100000 | 110000 | 40 |
| 80000 | 88000 | 30 |
| 65000 | 71500 | 32 |
| 120000 | 132000 | 41 |
設定
| 設定項目 | 値 |
|---|---|
| 処理タイプを選択 | 全数値型間の相関を調べる |
出力
| 変数x | 変数y | 相関係数 |
|---|---|---|
| 売上 | 税込売上 | 1.0000 |
| 売上 | 来店数 | 0.8797 |
| 税込売上 | 来店数 | 0.8797 |
税込売上 は 売上 の 1.1 倍なので、相関係数はちょうど 1 です。この表を条件で行をフィルタで 相関係数 >= 0.95 に絞れば、重なっている組だけを並べられます。どちらを外すかの判断は特徴量選択に渡します。