MATLABのlinkdataとplotmatrixで「多変量データを眺める」

はじめに

多変量データを解析する際、散布図行列(scatter plot matrix)はよくに用いられる可視化手法の一つだと思います。各変数の組み合わせごとの相関や分布の傾向を視覚的に把握できるため、探索的データ解析の初期段階で特に役立ちます。

ただ、散布図行列を眺めていると、「この点は他のプロットではどの位置にあるのだろう?」と気になることがよくあります。そうして一つ一つ対応関係を目で追っていくうちに、あっという間に時間が溶けてしまう……という経験をした方も多いのではないでしょうか。

今回は、MATLABの最近のバージョンで利用できる、linkdata と plotmatrix を活用して、散布図行列内のプロットを連動させてハイライトする方法をご紹介します。これにより、範囲指定や一つの点をクリックするだけで、他のグラフでも対応するデータ点が明示的に強調表示されるようになり、データの理解がぐっとスムーズになります。

実行環境

今回の実行環境です。特に有償のtoolboxなどは使用していません。

サンプルデータ

まずは使用するサンプルデータをご紹介します。こちらからダウンロード可能です。

このサンプルデータはCSV形式で構成されており、6つの変数と、それぞれに対応する79点の観測データを含んでいます。今回はこのデータを用いて、散布図行列をプロットし、各プロット間でデータ点を同期させる可視化手法を試してみます。

コードサンプル

このコードでは、まず filename で使用するCSVファイル名を指定し、readmatrix 関数を使ってデータを数値行列として読み込みます。その後、plotmatrix によって散布図行列を描画します。

ここで、linkdata on を実行すると、MATLABの「リンクデータ機能」が有効になり、図と元データとの接続が確立されます。さらに brush on を有効にすることで、任意のプロット上でデータ点を選択(ハイライト)した際に、他の全ての対応するプロットでも同じデータ点が強調表示されるようになります。

clear;clc

filename='sampledata.csv';

T=readmatrix(filename);
figure
plotmatrix(T);
linkdata on
brush on

実際の動作状況

先ほどのコードサンプルを実行すると、すぐに散布図行列が表示されます。この時点で「ブラシ選択(brush)」機能が既にオンになっているため、マウス操作でプロット上のデータ点をドラッグして範囲選択することが可能です。

特定のデータ点を選択すると、その選択は散布図行列内の他の全てのプロットにも即座に反映され、該当する点が自動的に赤くハイライトされます。これにより、「この点は他の変数の関係ではどこに位置するのか?」といった疑問に対して、視覚的に素早く確認することができます。

選択前

選択後

ハイライトしている箇所がワークスペースでも確認できる

ハイライトされた状態で、MATLABの「ワークスペース」を確認してみましょう。すると、現在グラフ上でブラシ選択しているデータ点が強調されているため、どの行に対応しているのかが明確に分かるようになります。

ワークスペースに保存

選択したデータは、前述の通りワークスペースに新しい変数として保存することができます。この機能は、複数の視点からデータをブラシ選択し、それぞれを一時的なデータセットとして保存しておきたい場合に非常に便利です。

たとえば、異なる条件やクラスに該当するデータをいくつか抽出し、それぞれを別の変数に分けておくことで、あとから統合して比較・議論する際に役立つ場面も想定できます。また、選択したサブセットに対して個別に統計解析や可視化を行うこともできるかと考えます。

おわりに

今回は、MATLABの plotmatrix、linkdata、そして brush 機能を使って、散布図行列をよりわかりやすく扱う方法をご紹介しました。特に、「この点は他のプロットではどこにあるのか?」という多変量データの探索時によくある疑問を、視覚的に素早く確認できる点が大きな利点です。

また、気になるデータを選んでワークスペースに保存しておくことで、あとからじっくり比較したり、別の分析に活用することもできそうです。静的なグラフでは見落としがちな関係性も、こうした工夫を加えることでより深く理解できるようになるかと感じます。

MATLABには、ちょっとした設定でデータの見え方が変わる便利な機能がまだまだたくさんあります。今後も皆さんにお役に立ちそうな情報を発信できたらと思います。

ありがとうございました。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

CAPTCHA