Treasure Data Platform で始めるデータ分析入門 〜8. Data Visualization Patterns 〜 Part.3
本シリーズではデータ分析を以下の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 Visulization Patterns」の全 3 回続く第 3 回目の紹介です。
2. Table Visualization(続き)
B. Table Segmented by 2 Columns
平面的なテーブル表現は 2 種類のセグメントの使用まで可能です。今回は 2 種類のセグメントによって集計されたテーブルの表現を考えます。
カテゴリ\年代 | 15 | 20 | 25 | 30 | 35 | 40 | 45 | 50 | 55 | 60 | 65 |
Category A | 100 | 120 | 87 | 89 | 79 | 123 | 86 | 56 | 67 | 89 | 102 |
Category B | 90 | 110 | 72 | 79 | 60 | 100 | 76 | 47 | 40 | 78 | 40 |
Category C | 48 | 79 | 120 | 139 | 90 | 99 | 89 | 90 | 37 | 60 | 77 |
Category D | 67 | 78 | 102 | 90 | 77 | 68 | 90 | 77 | 56 | 70 | 120 |
Category E | 90 | 79 | 67 | 100 | 98 | 56 | 80 | 67 | 87 | 110 | 150 |
category F | 100 | 127 | 123 | 103 | 136 | 128 | 73 | 71 | 82 | 67 | 40 |
A. の 1 種類のセグメントのテーブル場合と違って次元が 1 つ増える,つまり今までの X, Y 軸に加えて何らかの手法で新しく Z 軸 を加えなければなりません。
今回の体系化のポイントは Line, Bar, Pie といった区別では無く,新たな次元軸をどのように表現するかにあります。
- Chart の重ね合わせ + Legend(凡例)による表現(図2)
- 奥行きによる表現(図3)
- Panel を並べることによる表現(図4)
- X 軸に並べることによる表現(図5,図7)
- 値を積み上げる(Stack)による表現(図6,図7)
- Heat Map: 色味による表現(図8,図9)
- Bubble Chart: 円の半径の大きさによる表現(図10)
図2:複数の Line を重ね合わせ,凡例によって区別を説明した Line Chart によるシンプル表現。この場合は要素数が少ないセグメントを Line とする方が見やすいグラフになるが,要素数が多くなれば重なり部分が増えて見にくくなってしまいます。
図3:図2 と同じインプットに対して,奥行きを持たせて表現した Area Chart。Area Chart とは Line Chart において値の下側を色づけした Chart です。立体的に表示する場合には Line Chart よりも Area Chart の方が表現領域が増えて各々のグラフの区別がしやすくなります。立体的な表現をする場合は角度を自由に変えられるようなインタラクティブな環境であるほうがより有効です。
図4:複数の Bar Chart のパネルを,X 軸のレンジを統一して立てに並べた Bar Chart は全体的にすっきりしており,かつ比較もしやすいのでおすすめです。
図5:同じ X 軸の値ごとにぴったり並べた Bar Chart。こちらは 図4 に比べて,同じ変数値間での比較には優れていますが,別の変数による比較は劣っています。
図6:積み上げ(stack)による Bar Chart 表現。左は集計値の絶対量で表現しているのに対し,右は X 軸のカテゴリ変数値(A,B,...,F)の総和に対する各カテゴリ変数の割合を使用した Bar Chart 表現。この場合は X 軸の各値毎に積み上げ総計が 1 または 100(%表現の場合) となります。
図7:図5 と 図6 の Bar Chart を Area Chartにて表現したもの(インプットは異なります)。Area Chart の場合は X 軸となるセグメントの要素数が多い場合に Bar Chart より見やすい表現を与えます。下の Area Chart は割合による積み上げ表現(図6右の表現と同じ)になります。
図8:X, Y 軸の格子状の各セルの中に,新しい Z 軸として「色味」で表現した Heat Mapによる表現。
図9:図 8 の Heat Map はさらに「位置情報」という次元が増えた場合には格子状のセルではなく地図上の各領域内の色味によって値を表現します。
図10:Bubble Chart はまず新しい軸をバブルの半径として表現します。加えてもう1つ新しい軸を今度は色味によって表現することができます。このように多数の次元を表現しつつも見やすさを損ねない Bubble Chart はなかなか有効な表現です。
終わりに
今回はデータ解析における各ステップ,
- サンプルデータセット
- 集計済テーブル(1 or 2 種類のセグメントによる)
を区別して Visualization の例を紹介しました。第1回で紹介したサンプルデータセットでは Visualization の背後には統計(とりわけ分布)という概念が常に潜んでいることを学びました。
また,第2回の 1 種類のセグメントによる集計テーブルの Viaualization では使用・着目するセグメント(変数)の種類が,
- 数値変数:(さらに「1.1 連続型」と「1.2 離散型」に分類)
- カテゴリ変数:(さらに「2.1 順序付」と「2.2 順序無」に分類)
のいずれかにあることで適切な表現が異なる事を学びました。
さらに今回の 2 種類のセグメントによるテーブルの表現においては,新たな次元軸をどのように表現するか,例えば
- 重ね合わせ + 凡例による表現
- 奥行きによる表現
- Panel を並べるによる表現
- X 軸に並べるによる表現
- 値を積み上げるによる表現
- 色味によるによる表現
- 円の半径の大きさによるによる表現
のようなパターンがある事を紹介しました。
これらのパターン化はあくまで多くの方法の中の 1 つに過ぎませんが,Visualization を行う時にはこれらのパターンを意識してもらえるようになると幸いです。
Treasure Data Platform で始めるデータ分析入門 〜8. Data Visualization Patterns 〜 Part.2
本シリーズではデータ分析を以下の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 回続く第 2 回目の紹介です。
前回からの続きです。
2. Table Visualization
Table Visualization とは,サンプルデータセットを集計したテーブルに対して行う Visualization を指します。集計とはデータセットのある変数に対していくつかのセグメントごとに SUM, COUNT などの集計関数を適用することによって次元を 1 つ縮約(行列はベクトルへ,ベクトルは数値へ縮約)することで,各種ツールでいう
- Group By [SQL]
- Pivot Table [Excel]
- Split-Apply-Combine [R]
といった手続きに該当します。以下の様に具体的に見ていった方が簡単です。
A. Table Segmented by Single Column
まずは 1 種類のセグメントにより集計(SUM, AVG, COUNT などして得られたシンプルなテーブルを紹介します。
ところで,このセグメントを変数とみなすことにすれば,前回で述べたように
- 数値変数:(さらに「1.1 連続型」と「1.2 離散型」に分類)
- カテゴリ変数:(さらに「2.1 順序付」と「2.2 順序無」に分類)
に分類することができます。セグメントが上記のどの分類に該当するかによってどの Chart を使用するかが異なってきます。またセグメントのキーの値が X 軸として扱われることになります。
※ 以後は変数とセグメントを同じ意味で扱います。
年代 | 15 | 20 | 25 | 30 | 35 | 40 | 45 | 50 | 55 | 60 | 65 |
Sum | 100 | 120 | 87 | 89 | 79 | 123 | 86 | 56 | 67 | 89 | 102 |
図1:年代毎に合計を計算した 1 × n テーブル(n はセグメントの要素数)。この場合の変数のタイプはカテゴリ変数(順序付)。このテーブルは例えばSQLならば `GROUP BY generation` を含んだ集計クエリによって得られたテーブルを転置することで得られます。
年代 | 15 | 20 | 25 | 30 | 35 | 40 | 45 | 50 | 55 | 60 | 65 |
Sum | 100 | 120 | 87 | 89 | 79 | 123 | 86 | 56 | 67 | 89 | 102 |
Count | 10 | 4 | 3 | 10 | 5 | 3 | 4 | 10 | 8 | 8 | 10 |
Average | 10.0 | 30.0 | 29.9 | 8.9 | 15.8 | 41.0 | 21.5 | 5.6 | 8.3 | 11.1 | 10.2 |
図2:年代ごとに各種集計値を計算した 3 × n テーブル。セグメントの種類が 1 つという意味ではこれも図1 と同じテーブル分類に入ります。Chart として表現する場合は基本的に 1 つか 2 つの行を選択します。2 つの行を選択した場合はこれらは単位が異なりますので左 Y 軸と右 Y 軸を使用することになります。
変数が時間や数値を区分けしたものである場合,隣接する変数の間にもデータの存在を仮定しますので変数間を直線および曲線によって「補間」する必要があります。このようにしてプロット点が線して表現された Chart を Line Chart と呼びます。連続か離散,または補間の方法によって以下の 3 パターンを取り上げています。
- 連続変数:直線補間(図3)
- 離散変数:水平線補間(図4)
- 連続変数:曲線補間(図5)
図4:数値変数(離散)の場合は,隣接するデータ点までの間は値が変わらないとする場合が多く,この場合は水平直線によって補完し,階段型の Line Chart となります。例えば特定の距離毎に料金が飛び飛びに変わるタクシー料金などはこれに当たります。
図5:数値変数(連続)の隣接するデータ点の間を曲線にて補完した Line Chart 。曲線を求める方法はいくつもあり B-Spline などが有名です。(図はこちらを参照しました。)
A-2. Bar Chart(使用ケース:カテゴリ変数)
カテゴリ変数の場合には変数の間にはデータ点は存在しませんので,個々のカテゴリが独立した Chart 表現が必要です。その際に使用されるのが Bar Chart です。
順序付カテゴリ変数の場合には片方向からの「累積」という概念を導入することができ,累積プロットを併せて表示するのは良い方法です。
順序無カテゴリ変数の場合には順序を持たないので累積という概念を持っていませんが,集計した「値自身」を順序付けることによって「集計値が大きいものからの累積」という概念を導入することは可能です。以下の 3 パターンを取り上げています。
- 順序付カテゴリ変数 with 累積プロット(図6)
- 順序無カテゴリ変数(図7上)
- 順序無カテゴリ変数 with 累積プロット(図7下)
図6:カテゴリ変数(順序付)の Bar Chart。同時に左からの累積和の値を総和の値を100として左 Y 軸に同時にプロットしています。
図7:カテゴリ変数(順序無)の Bar Chart は上図。集計値の大きさによって変数をソートして表現した下の方の Bar Chart は集計値の累積プロットを同時表現することが可能になります。
A-3. Pie Chart(使用ケース:順序無カテゴリ変数)
順序無のカテゴリ変数においては,図7上のように Bar Chart で表示するよりも Pie Chart の方が有効な場合が多いでしょう。
図8:カテゴリ変数(順序無)の Pie Chart 。全体に占める各カテゴリの大きさが一見してわかるところが Bar Chart と比較してのメリットです。
今日はここまで。次は 2 種類のセグメントによって集計された以下のテーブルの表現方法を見ていきます。
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個の数値変量またはカテゴリ変数まで
となっていました。
今日はここまで。