【統計 小ネタ】チャーノフの顔グラフ
先日、統計検定の準1級を受けてきました。
結果の良し悪しは別として、勉強するなかで面白い話をいくつか拾ったので少しずつ紹介していきます。
今回はチャーノフの顔グラフについて
データをグラフ化する方法はいくつかあります。よく使われるのが棒グラフや折れ線グラフ、散布図などです。 ただ、面白いことを考える偉人もいたようで、データを顔の絵にすることで違いがわかりやすいのではないかと。
なるほど??
チャーノフの顔グラフ 概要
チャーノフの顔グラフは、Herman Chernoffさんが発表したデータの可視化の方法。恐らく発表論文は これ http://The use of faces to represent points in k-dimensional space graphically (中身は読んでません)。Wikipediaのこの方のページによるとまだご存命のよう。
人間は表情のちょっとした変化に敏感なので、データの可視化に表情を使えば良いのではという発想のよう。なるほど、ちょっと笑っただけでも人間すぐにバレてしまうしアイデアには納得。
論文としては、データ(数値)を顔の絵にするための方法も楕円とかを組み合わせるルールを定義している。(そうしないと客観評価もできないから当然か。) このときは最大18次元のデータを扱えるようにしたらしい。 世の中の実装はそのルールに必ずしも従っていないようだが、概要は同じ。
試してみる
顔グラフの絵は検索すればたくさん出てくるが、使ってみてどうなのかを知りたかったのでデータを作って試した。 なお、顔グラフ表現の実装は下記のものを使わせて頂いた。 aoki2.si.gunma-u.ac.jp
架空の学校での生徒のテスト結果を考える。表が生データ、顔の絵がそれぞれに対応するグラフ(国~社を1~5次元目に割り当て)だ。
どうだろうか。
比較用にレーダーチャートも作成した。こちらは下記記事の実装を使わせて頂いた。
感想
まぁ確かに顔グラフではそれぞれ違うのは分かる。
一方で、何がどのくらい違うのかはさっぱりだ…
レーダーチャートは数値で示されるし、今回の場合はチャート内の面積も「全体的な成績」として意味を持つので、顔グラフより見やすくて情報も多く優れているという感想だ。
10次元くらいになるとレーダーチャートでは見るのも大変になるので、その時に顔グラフの出番になる…だろうか。今どきなら3Dモデルでリアルな顔をグラフとして使うこともできるだろうから、もしかしたら今後機会がある、かもしれない。
参考, 利用
- 書籍 「人文・社会科学の統計学」東京大学教養学部統計学教室 編(出版社サイト)
- https://amstat.tandfonline.com/doi/abs/10.1080/01621459.1973.10482434#.XQ9134_gqHs
- Python による統計処理
- Chernoff Faces in Python with Matplotlib · GitHub
- Chernoff face - Wikipedia
- Herman Chernoff - Wikipedia
- Matplotlibでレーダーチャートを描く(16行) - Qiita
- pip install して import するだけで matplotlib を日本語表示対応させる - Qiita