{{outline}} この記事は[[Radiantによるデータ分析入門]]の一部です。 !!!はじめに [[前の記事|第2章 Radiantの基本操作]]では、集計表を中心に、データを「観察する」方法を紹介しましたが、Radiantには、豊富な可視化機能が備わっています。直感的な理解のために、データを可視化することはたいへん重要です。この記事では、Radiantで作成できるグラフィックスと操作方法を列挙します{{fn 実際には、多変量解析やモデリングの機能により、他のグラフィックスも作成できます。ここでは、"Visualize" タブで作成可能なものに限っています。}}。 この記事は、Radiantがすでに起動し、''iris'' データを読み込んでいることが前提です。念のため、Radiantの起動手順は以下の通りです。 > data(iris) # Radiantそのものではないですが、使用するデータの読み込み > library(radiant) > radiant() Radiantでさまざまな可視化を行うには、"Visualize" タブに画面を切り替えます。 {{b_center {{ref_image radiant_switch_visualize_tab.png}} }} !!!ヒストグラム ヒストグラムは、データの分布 (散らばり、ばらつき) を棒の高さ (頻度) と幅 (区間) で表現するグラフです{{fn 縦軸は相対頻度になることもあります。}}。Radiantでは、"Visualize" タブの左側のメニューから、"Plot-type" で "Distribution" を選択すると作成できます。グラフィックスの種類ごとに設定項目は異なりますが、ここでは以下のようにしてみましょう。 * "X-variable": Sepal.Length * "Facet row": none (デフォルト) * "Facet column": none (デフォルト) * "Fill": Species * "Number of bins": 10 (デフォルト) {{b_center {{ref_image radiant_visualize_histogram01.png}} }} 上記のようにして、"Create plot" ボタンを押すと、品種別の「がく片」の長さの分布がヒストグラムとして描かれます。グラフィックスは、[ggplot2|https://ggplot2.tidyverse.org/]で作成されます。 {{b_center {{ref_image radiant_visualize_histogram02.png,w480}} }} ここでは、"Fill" に "Species" を指定して、1枚のヒストグラムで塗り分けましたが、"Facet row" または "Facet column" に "Species" を指定することで、品種別に複数のヒストグラムを作成することもできます。また、"Number of bins" のスライダーを調整し、ヒストグラムの区間を変えることで、新たな示唆が得られることもあります。 {{b_center {{ref_image radiant_visualize_histogram03.png}} "Facet column" に "Species" を指定、"Number of bins" を20に変更したようす }} また、グラフのタイトルや全体の「テーマ」は、下部の "Labels", "Style" でカスタマイズできます。 {{b_center {{ref_image radiant_visualize_histogram04.png,w800}} {{ref_image radiant_visualize_histogram05.png,w800}} てきとうにカスタマイズした結果 }} なお、作成されたグラフィックスは、右側のダウンロードアイコンからPNG形式でダウンロードできます。 !!!確率密度曲線 確率密度曲線は、ヒストグラムと同様にデータの分布を捉えるためのグラフィックスですが、縦軸は頻度ではなく、[確率密度|https://logics-of-blue.com/%e7%a2%ba%e7%8e%87%e5%af%86%e5%ba%a6%e9%96%a2%e6%95%b0%e3%81%a8%e6%ad%a3%e8%a6%8f%e5%88%86%e5%b8%83/]です。データ全体の中で、ある値を取り得る確率が何%であるか、という情報をあらわします。 Radiantでは、"Plot-type" で "Density" を選択すると作成できます。設定項目は、ヒストグラムとほぼ変わりません。ひとつだけ、ヒストグラムでは "Number of bins" であったスライダーが、"Smooth" となっています。これは、確率密度曲線に適用する平滑化の程度を指定するものです。数値が大きくなると、曲線が滑らか (大まか) になっていきます。 {{b_center {{ref_image radiant_visualize_density.png}} }} !!!散布図 散布図は、一般に2変量 (2列のデータ) 間の関係性を把握するために使います。一方のデータがもう一方のデータに伴って変動する (相関) 関係にあるかなどを観察します。 Radiantでは、"Plot-type" で "Scatter" を選択すると作成できます。設定項目として、"Y-variable" と "X-variable" に異なる2変量を指定します。また、カテゴリ変数ごとに点を塗り分けたい場合は、"Color" にカテゴリ変数を指定します。ここでは、"Y-variable" に "Sepal.Length" を、"X-variable" に "Sepal.Width" を指定し、"Color" に "Species" を指定した結果を示します。 {{b_center {{ref_image radiant_visualize_scatter01.png}} }} また、"Size" の項目に数値データを指定すると、数値の大小を点の大きさに設定した「バブルチャート」として描画することができます。設定項目下部のチェックボックスのうち、"Line" や "Loess" を選択すると、それぞれデータを線形回帰した直線や、平滑化回帰した曲線が重ねて描画されます。 {{b_center {{ref_image radiant_visualize_scatter02.png}} }} なお、"Y-variable" および "X-variable" はマウスのドラッグにより複数選択でき、その場合は組み合わせごとの散布図が出力されます。 {{b_center {{ref_image radiant_visualize_scatter03.png}} "Species" を除き、すべての変数を "Y-variable", "X-variable" に指定した結果 }} !!!ヒートマップ (Surface plot) ヒートマップは、2次元空間上で、値の高低がどのように分布しているかを把握するためのグラフィックスです。点ではなく、四角形の「タイル」でデータを表現します。[「ヒートマップ」を検索|https://www.google.com/search?q=%E3%83%92%E3%83%BC%E3%83%88%E3%83%9E%E3%83%83%E3%83%97]すると、Webページのアクセスパターンを図示するマーケティングツールの情報ばかり出てきますが、そのように、ブラウザという2次元空間で、ユーザーの興味関心 (クリックなど) がどこに分布しているかを直感的に把握できます。 現在Radiantに読み込んでいるデータ (''diamonds'', ''titanic'', ''iris'') はあまりヒートマップに適していませんが、例として、''iris'' データを使います。 Radiantでは、"Plot-type" で "Surface" を選択すると作成できます。設定項目として、"Y-variable" と "X-variable" に異なる2変量を指定します。また、"Fill" に色で塗り分けたい変数 (一般的に数値データ) を指定します。ここでは、"Y-variable" に "Sepal.Length" を、"X-variable" に "Sepal.Width" を、そして "Fill" に "Petal.Length" を指定した例を示します。 {{b_center {{ref_image radiant_visualize_surface01.png}} }} "Fill" の値の幅が小さいため{{fn Radiantでは、カラーパレットは設定できないようです。}}、あまり見栄えの良い結果にはなりませんが、"Sepal.Width", "Sepal.Length", "Petal.Length" の3変量の関係性がある程度読み取れます。 また、設定項目下部の "Interpolate" にチェックを入れると、周辺の値を補間します。見た目としてはぼやけたヒートマップになります。 {{b_center {{ref_image radiant_visualize_surface02.png}} }} !!!折れ線グラフ 折れ線グラフは、データの時間的推移を把握するためのグラフィックスです。現在Radiantに読み込んでいるデータは時間の情報を持っていないので、ここでは別のデータ (CSVファイル) をインターネットから読み込みます。使用するデータは、とある成人男性{{fn 当然ですが、私です。}}の2018年3月から12月末日までの、[[体組成計による測定データ|タニタ体組成計からデータを取得する]]です。 * https://github.com/ltl-manabi/R/raw/master/Radiant_introduction/health-meter_2018.csv Radiantの "Data" - "Manage" タブから、"Load data of types" で "csv (url)" を選び、上記のURLを入力し、"Load" ボタンを押します。 {{b_center {{ref_image radiant_visualize_load_health_meter_data.png,w480}} }} すると、224行10列のデータが読み込まれます。 {{b_center {{ref_image radiant_visualize_health_meter_overview.png}} どこぞの成人男性の体組成計データ }} このデータのうち、特に "date" 列と "weight" 列を折れ線グラフで可視化します。ただし、このデータでは "date" 列が文字列 (character) 型として読み込まれているため、このままでは正常に描画できません。そこで、データ型を変換します。 詳細は[[第4章 データの加工]]で紹介しますが、"Data" - "Transform" タブを開きます。 {{b_center {{ref_image radiant_visualize_data_transform01.png}} }} まず、設定項目から、"Select variables" で "date" 列を選択します。そして、"Transformation type" から "Change type" を選択します。次に、"Change variable type" から "As date/time (ymd_hm)" を選択します。今回は "date" 列を上書きするので、"Variable name extension" には何も入力しません。最後に、"Store" ボタンを押します。 {{b_center {{ref_image radiant_visualize_data_transform02.png}} }} すると、データ型の変換が行われ、"date" 列が "date" 型になります。 {{b_center {{ref_image radiant_visualize_data_transform03.png,w480}} }} データの変換を行ったら、本題の折れ線グラフを作成します。"Visualize" タブに切り替え、"Plot-type" で "Line" を選択します。そして、"Y-variable" に "weight" を、"X-variable" に "date" を指定します。"Create plot" ボタンを押すと、どこぞの成人男性の体重の推移がプロットされます。なお、RadiantのGUI上では、X軸のスケール (目盛間隔) を変更することはできません。 {{b_center {{ref_image radiant_visualize_line01.png}} }} また、"Y-variable" に "weight" に加えて、たとえば "body_fat" を追加 (Ctrl-クリックで複数選択可能) し、"Combine Y-variables in one plot" にチェックを入れると、体重と体脂肪率の推移が1枚のグラフに描かれます。チェックを外すと、それぞれ個別のグラフが出力されます。 {{b_center {{ref_image radiant_visualize_line02.png}} }} !!!棒グラフ 棒グラフは、棒の高さで量の大小を表現するグラフィックスです。一般に、グループ化したデータの観測数や平均値を比較し、傾向の違いを観察するために使われます。 ここでは、Radiantに標準で読み込まれている ''titanic'' データセットを使います。"Datasets" の項目から "titanic" を選択します。次に、"Plot-type" で "Bar" を選択します。そして、"Y-variable" に "survived" を、"X-variable" に "sex" を指定します。また、下部の "Function" をデフォルトの "mean" から "sum" に変更します。これで、"Create plot" ボタンを押すと、性別ごとの生存者数のグラフが描かれます。 {{b_center {{ref_image radiant_visualize_bar01.png}} }} また、"Fill" で "pclass" を選択し、"Update plot" ボタンを押すと、船室の等級ごとに棒グラフが描き分けられます。 {{b_center {{ref_image radiant_visualize_bar02.png}} }} !!!箱ひげ図 箱ひげ図は、Boxplotとも呼ばれ、さまざまな統計情報を1つのグラフィックスの中で表現するものです。具体的には、箱の上下はそれぞれ第1四分位数 (下、25%点) と第3四分位数 (上、75%点) をあらわし、箱の中の線は中央値を示します。箱から伸びる「ひげ」は、一般に最大値、最小値か5%点、95%点を示します (ソフトウェアによります)。 ここでは、"titanic" データを使用します。"Plot-type" で "Box-plot" を選択し、"Y-variable" に "age" を、"X-variable" に "survived" を指定します。また、"Color" に "sex" を指定すると、生存者、非生存者それぞれについて、性別ごとの年齢の分布が箱ひげ図で表現されます。 {{b_center {{ref_image radiant_visualize_boxplot01.png}} }} "Y-variable" や "X-variable" に複数の変量を指定すると、それぞれ個別の箱ひげ図として描画されます。 {{b_center {{ref_image radiant_visualize_boxplot02.png}} この2枚の箱ひげ図を比べることには意味がありませんが… }} !!!おわりに この記事では、Radiantで作成できるさまざまなグラフィックスを紹介しました。Rを使っていて、何がいちばん面倒かというと、グラフを描くところだと思います{{fn 人によるかもしれませんが。}}が、Radiantを使うと、GUIで簡単に一般的なグラフィックスを作成できます。データをスピーディに可視化し、議論することで、さらなる高度な分析への示唆を発見しましょう。 カテゴリ: {{category R, Radiant, データ分析}} ---- !!!注 {{footnote_list}}