散布図行列(Scatterplot Matrix、SPLOM)は、多変量データにおける変数間の関係を一度に視覚化するためのグラフです。各変数を縦軸・横軸に組み合わせて散布図を配置し、行列(マトリックス)形式で表示します。これにより、相関関係やパターン、外れ値を視覚的に把握でき、統計解析やデータ探索の初期段階で特に重要な役割を果たします。
歴史的経緯
散布図行列の概念は、1960年代から1970年代にかけて、アメリカの統計学者**ジョン・W・テューキー(John W. Tukey)**が提唱した「探索的データ解析(Exploratory Data Analysis, EDA)」の流れの中で発展しました。テューキーは、データの構造を視覚的に探索する手法の重要性を強調し、多変量データの関係を一覧できる散布図行列はその中核的なツールとなりました。
1970年代から1980年代にかけて、S言語(後のR言語の前身)やSASなどの統計ソフトウェアにpairs()関数として実装され、統計実務に広く浸透しました。2000年代以降は、PythonのSeabornライブラリ(pairplot()関数)やTableau、Power BIなどのBIツールにも標準機能として搭載され、プログラミングの専門知識がなくても利用できるようになっています。
データ構造
散布図行列では、データは複数の数値変数を含む表形式(行 = 観測、列 = 変数)で表されます。例えば4変数の場合、以下のような行列構造の散布図が生成されます。
| X1 | X2 | X3 | X4 | |
|---|---|---|---|---|
| X1 | (分布) | X1 vs X2 | X1 vs X3 | X1 vs X4 |
| X2 | X2 vs X1 | (分布) | X2 vs X3 | X2 vs X4 |
| X3 | X3 vs X1 | X3 vs X2 | (分布) | X3 vs X4 |
| X4 | X4 vs X1 | X4 vs X2 | X4 vs X3 | (分布) |
対角線上には通常、変数名やヒストグラム、カーネル密度推定などが配置されます。N個の変数がある場合、N x N のグリッドが生成され、対角線を除いた N(N-1) 個の散布図が表示されます。
目的
散布図行列の主な目的は、多次元データの中で「どの変数間に関係性がありそうか」を視覚的に特定することです。具体的には以下のような分析に活用されます。
- 回帰分析や主成分分析を行う前段階での、相関の有無の把握
- 多重共線性(変数間の強い相関)の検出
- 非線形な関係やクラスター構造の発見
- 外れ値の視覚的な特定
ユースケース
- 探索的データ解析(EDA):分析の初期段階で、変数間の関係をざっくり把握する
- 特徴量選択:機械学習のモデリング前に、強い相関を持つ変数の重複を検出する
- 異常検知:外れ値や異常パターンを複数の変数ペアから同時に発見する
- 相関構造の可視化:分散共分散構造を直感的に理解し、統計モデルの設計に活かす
- 学術論文・レポート:多変量データの関係性を包括的に示す図として掲載する
特徴
| 特徴 | 内容 |
|---|---|
| 表現対象 | 数値型変数同士のペアワイズな関係 |
| メリット | 一覧で全変数間の関係を俯瞰できる。パターンや外れ値を発見しやすい |
| デメリット | 変数が多いと行列が過密化し、可読性が低下する(10変数以上は困難) |
| 表現手段 | 点の分布、色分け(カテゴリ変数)、形状、サイズによる補助情報 |
| 対称性 | 上三角と下三角は同じ変数ペアの散布図であり、対称的な情報を持つ |
チャートの見方
行と列の交点に表示された散布図を読み取ることで、変数間の関係(線形・非線形・無相関)を視覚的に把握できます。
- 右上がりの点群:正の相関があることを示します(一方が増えるともう一方も増える)
- 右下がりの点群:負の相関があることを示します(一方が増えるともう一方は減る)
- 散らばった点群:相関がない、または非常に弱いことを示します
- 曲線的なパターン:非線形の関係があることを示唆します
- 対角線上のプロット:各変数の単独の分布を示すヒストグラムやカーネル密度推定です
上三角と下三角は対称的な情報を持つため、一方を相関係数の数値で置き換える場合もあります。カテゴリ変数で色分けすることで、群間の傾向の違いを同時に確認できます。
デザイン上の注意点
- 変数数の制限:変数が多い場合は、サンプリングや変数選択で行列を縮小します。一般に5〜8変数程度が可読性の限界です
- 透明度(opacity)の調整:点が重なりやすい場合は透明度を下げて、密度の違いを視認可能にします
- 軸ラベルとスケール:すべてのパネルで軸のスケールを統一し、変数名を明確に表示します
- 色・マーカーの活用:カテゴリ変数に色やマーカー形状を対応させると、群間比較が容易になります
- 対角線パネルの活用:対角線にはヒストグラムやKDE(カーネル密度推定)を配置して、各変数の分布情報を追加します
- 上三角・下三角の使い分け:片方を散布図、もう片方を相関係数の数値にすると情報密度が高まります
応用例
- R:
pairs()関数:Rの基本関数で、最も古典的な散布図行列の生成手段です。GGally::ggpairs()を使えば、ggplot2ベースの高品質な散布図行列を作成できます - Python:Seaborn
pairplot():hue引数でカテゴリ変数を指定し、群ごとの傾向を色分けで視覚化できます。対角線にはヒストグラムやKDEが自動配置されます - Tableau・Power BI:複数の数値変数をドラッグ&ドロップで配置し、インタラクティブな散布図行列を構築できます
- Plotly:
plotly.express.scatter_matrix()でインタラクティブな散布図行列を生成でき、ブラウザ上でのズームやホバー表示が可能です
代替例
| チャート名 | 特徴 | 適用場面 |
|---|---|---|
| コレログラム(Correlogram) | 相関係数を色やサイズで表すマトリクス表示 | 相関の強さを数値的に俯瞰したい場合 |
| パラレルコーディネーツ(Parallel Coordinates) | 各変数を平行な軸として線で結ぶ | 高次元データのパターン探索 |
| バイプロット(Biplot) | 主成分分析の結果を散布図に重ねて表示 | 次元削減後のデータ構造の把握 |
| ヒートマップ(Heatmap) | 行列の各セルを色で表現 | 変数間の相関や類似度の概観 |
まとめ
散布図行列は、変数間の関係を「一覧で」「直感的に」理解できる強力な探索ツールです。テューキーのEDA思想に基づき、多変量データの構造を事前知識なしに視覚的に把握するために設計されました。変数が多い場合の見づらさという課題はあるものの、適切に選択した変数や色分けを用いることで、高次元データの構造を効果的に把握することができます。回帰分析や機械学習の前処理段階において、データの理解を深めるための不可欠なツールです。
参考・出典
| |