Treasure Data Platform で始めるデータ分析入門 〜8. Data Visualization Patterns 〜 Part.1
本シリーズではデータ分析を以下の7つのレイヤーに分解し,各々について解説していくものとします。(Slide Shareの資料は常時更新されます。)
- Data Collection
- Data Storage
- Data Management
- Data Processing
- Data Processing Design Part.1 Part.2 Part.3 Part.4 Part.5 Part.6
- Data Visualization Treasure Viewer, MetricInsights, Tableau
- Data Visualization Patterns Part.1 Part.2 Part.3
本日は「7. Data Visulizations」の全 3 回続く第 1 回目の紹介です。
はじめに
初めの数回は Visualization に関するトピックを紹介するつもりです。
今回のゴールは Bar Chart や Pie Chart などの Graphics のバリエーションを知ることではなく, 多種多様な表現を持つ個々の Graphics がどのような性質を持ち,またどういった場面でどれを使うべきなのか,きちんと体系的に捉えることにあります。
また Visualization 領域におけるこのシリーズでの最終的なゴールは,(数学的に)任意の Graphics を抽象化し,統一的に扱うことのできる概念およびグラマーを導入することです。(今回は全くこちらの方には触れませんが)こちらの方は,世界のあらゆる Visualization 周辺の学術研究機関およびデータマイニング領域で活躍する Visualization Engineer の教科書的存在である,「The Grammer of Graphics」の内容に準じて説明していきたいと思います。
The Grammar of Graphics (Statistics and Computing)
- 作者: Leland Wilkinson,D. Wills,D. Rope,A. Norton,R. Dubbs
- 出版社/メーカー: Springer
- 発売日: 2013/01/02
- メディア: ペーパーバック
- クリック: 60回
- この商品を含むブログを見る
ところで,Visualization を体系的に捉えると同時に任意の Graphics を描く事のできるライブラリとそれを使いこなす技術の習得を行う必要があります。機会があれば現存する3大 Visualization Library:
- matplotlib [Python]
- ggplot2 [R]
- d3.js [JavaScript]
の特徴について簡単に紹介したいと思います。
※ d3.js 自身は "Documents Based on Data" を操作するライブラリなので純粋に Visualization Library とは呼ばないのかもしれません。
さて,今回は実際のデータ解析の手順において必要となる次の2つのフェーズにおいて必要な Visualization を紹介することにします:
- Sample Datasets Visualization
- Table Visualization
1. は実際にサンプルデータセットを入手した際に,それらがどのような性質を持っているのか,主に統計的な知見を得る目的での Visualization について学びます。 Histogram や Box Plot が登場します。
2. はサンプルデータセットを集計( Group By [SQL], Pivot [Excel], Split-Apply-Combine [R] など)して得たテーブルに関する Visualization を紹介します。こちらの方が一般的で Line Chart や Bar Chart などが登場します。
0. データの変数の分類について
データにおける各項目(カラム)の値の種類は Visualization の種類に大きく影響します。これには 「尺度水準」と呼ばれる概念もありますが,ここではよりシンプルな 4 分類を用いることにします。
- 数値変数:(さらに「1.1 連続型」と「1.2 離散型」に分類)
- カテゴリ変数:(さらに「2.1 順序付」と「2.2 順序無」に分類)
数値変数
数値変数は名前の通り数値を値に持つ(常に順序付きの)変数です。「連続」と「離散」の違いは(データセットで得られる値は全て離散的ですが)データ点と点の間にも(今回は得られていないだけで),実は無数の点が存在するのだと仮定するのか否かに依存します。
もし仮定するならば,Visualization においては点と点の間を直線および曲線で「補間」する必要があります。いわゆる Line Chart などによる表現をします。
一方でデータ点の間にデータ点の存在を仮定しないならば,点と点の間とつなげるのはむしろ不自然である場合の方が多いですのでこの場合は Bar Chart で表現します。
これらは次回登場します。
カテゴリ変数
カテゴリ変数は「A,B,C,...」「男, 女」といったテキスト( 年代「10, 20,...」のように数値をテキストとして利用しても構いません)の変数です。
「順序付」「順序無」の区別はカテゴリ変数のキーがソート可能であるかどうかで決まります。年代は「順序付カテゴリ変数」ですが性別は「順序無変数カテゴリ」です。
順序付の場合は「累積」という概念が登場してきます。10歳ごとにセグメント分けされた年代を例にすると,このセグメントの情報の他に「30代まで」という累積に関する情報を参照するケースが存在し,これを Visualization 側でも考慮してやらないといけません。こちらは累積曲線付 Bar Chart などを活用します。
一方で順序無の場合には累積の概念が存在しません。この場合は Pie Chart などで表示するのがスマートです。
1. Sample Datasets Visualization
あるサンプルデータセットを入手した場合,そのデータセットがどのような統計的性質を持つのか今後どのような解析アプローチをしていくのかを知るために,まず Histogram や Box Plot などを使用して「データを眺める」作業を行うはずです。このフェーズにおける有用な Visualization を紹介していきましょう。
1-1. Histogram
「Histogram 無しにはデータを語れない」と言われるほど重要でありながら,Bar Chart と混同されがちな Histogram。まずは Bar Chart とHistogramの違いについて説明します。
Histogram
- 数値変数(連続・離散)のみ適用可能。
- 数値変数が適当な区分に分割され,その区分に属するサンプルの個数(頻度)を表現する。または全体頻度に対する個々の区分の割合を表現する。
- 頻度の大きさは棒の高さではなく,(棒の面積)= (棒の高さ)×(棒の幅)で表現される。
- 故に各々の区分は等幅である必要は無い(棒の高さで調節できるので)。
- 隣接する棒は頻度が 0 出ない限り,無駄に隙間があってはいけない。
- 全体頻度(または,全体割合)は全ての棒の面積の総和になり,これはどのような区分幅の取り方に寄らず一定である。
Bar Chart
- カテゴリ変数(主に順序付)に適用可能。
- 頻度に限らず,データのある観測値および集計値が表現対象。
- 値の大きさは棒の高さのみによって定まる。
- 各カテゴリにおける棒の幅(それには意味が無いので)は等しくあるべきである。
- 隣接する棒は隙間があった方が良いが,隙間が無い場合も多い。
- 全体の総和は全ての棒の高さの総和である。
Histogram と Bar Chart の違いを鮮明に表しているのが以下の例です(こちらのページを参照しました)。
階級 度数 0 28 1〜2 34 3〜4 20 5〜9 35 10〜19 112 20〜29 79 30〜39 41 40〜49 18
図1:同じ度数分布テーブルに基づいた Bar Chart(左)と Histogram(右)。Histogram では面積で頻度を表現するので等幅で無い度数分布においては各棒の幅は異なります。Bar Chart においては個々の度数が1つ1つの「カテゴリ」であるためカテゴリ間の隙間には興味が無く,棒と棒の間は離して置くのが一般的です。
Histogram を扱うという事は,(当たり前ですが)現在手元にあるデータセットは「母集合からのサンプル」であるという認識を持っており,背後には常に「分布」という存在を意識しているということです。
故に Histogram を描く場合でかつ連続数値変数の場合には,各棒の頂点中央をなめらかに結んだサンプル分布,または(サンプル平均・サンプル分布に基づいた)正規分布の確率密度曲線を同時に描くことができます。
また Histogram は数値変数で順序を持つので,「累積分布」という表現を加えることもできます。「どの区分までいくと全体の頻度の50% になるのか」といった情報はそのデータセットの平均などの統計量では知り得ることのできないものです。
図2:3つの Histogram は全て同じデータセットを表現しており,上の2つの Histogram は区分幅の取り方が異なっています。幅の取り方はデータセットに依存する問題で,その取り方によって分布の見え方が異なってしまいます。下の左図は同時に正規分布の確率密度曲線を描いています。この場合は単位をあわせる意味も含めて頻度では無く割合で表現しています。下の右図はこの Histogram の累積分布曲線を描いています。
図3:また,Histogram は比較を目的としてカテゴリ毎に並べて表現することもできます。その場合は縦向かつ左右対称の Histogram を用いるのが効果的。上図の場合は棒の頂点同士を結んだ(やや角張った)曲線でわかりやすく表現しています。
1-2. Box Plot
Box Plot
Box Plot(箱ひげ図)は Histogram がデータセットのある数値変数における「頻度分布」を表現していたのに対し,Box Plot はある数値変数における
- 最小値
- 第1四分位点(Q1)
- 中央値(Medean)
- 第3四分位点(Q3)
- 最大値
- 平均値(オプション)
という複数の「統計量」を表現したスマートな Visualization です。また Box Plot では1 つの数値変量に関して,カテゴリ間で比較するスタイルが一般的です。
図4:左がメジャーなBox Plot。A, B, C, D のカテゴリごとのある数値変数の統計値を表現している。複数の統計値を同時に表現できるという意味で,Box Plot から得られる情報は多い。右はさらに各 Range での頻度も表現したバージョンで Histogram の表現を併せ持っており万能です。
OHLC Chart
また,Box Plot の類似表現として,トレーディング領域で使われている「OHLC Chart」があります。これは Boxplot の前述した統計量を使用するのでは無く,
- O: Open Value
- H: High Value
- L: Low Value
- C: Close Value
を表現しています。また,カテゴリ間の比較では無く,分単位の時間(数値離散変数)で比較します。
図5:トレーディングの分野では当たり前のように活用されるOHLC Chart。左右への棒の突出が Close Value とOpen Value を表現しています(画像はこちらを引用)。
1-3. Scatter Plot
Scatter Plot(散布図)は,2つの数値連続変数をそれぞれ X, Y 軸とし,全レコードのデータ点をプロットしたものです。離散変数やカテゴリ変数でも Scatter Plot は使用される場合もありますが,この場合は格子点上のプロットとなり多くの点が重なりますので Bubble Chart などの方が有効です。
さらに,3つ目の変量としてカテゴリ変数を加える事もできます。この場合はプロット点の色がカテゴリごとに区別されます(よって論文などの紙媒体での使用目的には向いていません)。
図6:2つの数値連続変数(X, Y軸)と1つのカテゴリ変数(プロット色)を用いた Scatter Plot。Histogram と違って,複数の変量を持って分布・傾向を調べることができます。
図7:2 つの数値連続変数を比較するのは変わりませんが,それらを行列として表現したのが Scatter Matrix。これによりパネル間の比較も可能になります。
1-4. Bubble Chart
Bubble Chart は多くの変数を同時に表現でき,かつバブル(泡)というユニークな表現方法を持った有用な Chart です。数値変数では X, Y 軸の他にバブルの半径として使用でき,カテゴリ変数はバブルの形と色に使用することができます。併せると最大 5 変数まで使用できます。
図8:X軸,Y軸に続くいわゆる3番目のZ軸をバブルの半径によって表現したバブルチャート。バブル自身が面積という概念をもつので,カテゴリによってバブルの色分けを行うことで新たにカテゴリ変数も利用できます。さらにバブルの形を三角形や四角形の種類で区別することでさらにカテゴリ変数を追加できますが,ここまでいくとわかりやすさを損ねてしまう可能性があります。
1-5. Radar Chart
図9:多くの数値連続変数を同時に表現できる Radar Chart。
図10:小数レコードにおける Radar Chart。Wikipedia からの引用。
1-6. Parallel Coordinates
Parallel Coodinates は Radar Chart と同じインプットを持ちますが,こちらは多角形では無く一直線上に数値変数(連続・離散)を並べて表現します。変数間の傾向を発見するのに有用ですが,変数の並びでいくつかのパターンを作るのが一般的です。
図11:Radar Chart を直線上に伸ばした Parallel Coodinates。順番がより重要でいくつかの順番のパターンを見る必要があるが,隣接する変数間へのデータ点の遷移具合など,得られる情報量は非常に多い。
最後に
Sample Datasets に対する Visualization はレコード数が多いことも有り,多くの変量を同時に参照するとやや複雑になってしまいますので,まずは Histogram,Box Plot, Scatter Plot (Matrix) を活用するのが有効な手段です。
Visualization を体系的に理解するために重要なのは,
- 扱えるデータ変数の種類
- 同時に使用できる変数の数
にあります。今まで紹介した Visualization では,
- 1-1. Histogram:1つの数値変量まで
- 1-2. Box Plot:1つの数値変量と1つのカテゴリ変数まで
- 1-3. Scatter Plot:2つの数値連続変量と1つのカテゴリ変数まで
- 1-4. Bubble Chart:3つの数値変量と2つのカテゴリ変数まで
- 1-5. Radar Chart:n個の数値変量またはカテゴリ変数まで
- 1-6. Parallel Coodinates:n個の数値変量またはカテゴリ変数まで
となっていました。
今日はここまで。