アドホック案件をtidyにグラフ作ってpdfでレポート出すまでの流れ

機械学習や統計モデリングを使った格好のよろしいデータ分析で成果を出したいものですが、「SQLで引いてきたデータからインサイトを得て、適切にグラフ作ってレポートにまとめる」のような作業も私は日々やっています。この手の分析はR言語のtidyverseを使うと効率的にさばけます。DWH(ここではBigQuery)からデータを引いてきて、集計結果をpdfに出力するまでの一連の流れをここに示します。

余談ですが、単なる可視化を行うときも、因果推論の見地から鳥瞰視点で「交絡ない?大丈夫?」を意識することで、より実り多き分析が出来ると思っています。

以下、もくじです。

R markdownじゃなくてJupyterを使う

私は今回紹介するような軽いアドホック分析においては、Jupyterの方が使いやすいと考えています。以下の動画では「分析の最後にpdfにアウトプットする様子」を示しました。

f:id:sakatoken:20190603203252g:plain

動画中で行なっている操作は以下の2つです。

  • 「Hide input all」ボタンを押してコードブロックを非表示にする
  • ブラウザの印刷機能でページを印刷する

最終的にpdfを出力するためのステップがこれだけで済むので、分析作業を行なっている最中は「ただただ必要なコードをコードブロックに書く」「マークダウンのブロックを挿入して説明文を書く」ことだけに専念できます。

なお、前者のコードブロックを非表示にするという操作は、nbextensionsというjupyter拡張機能群(非公式)の中の「Hide input all」で実現しています。ちなみに同拡張機能群の1つである「Table of Contents」を使うと、markdownで定義した段落に対して自動で段落番号を補完してくれます。(動画中でも適用しています)

DWHからデータを引いてくる

さて、pdf出力をキレイに行えることがわかったので、安心してnotebook上に必要なコードを書きなぐっていきます。まずはデータの取得です。
私の場合はbigqueryからデータを引いてくるのでこんな感じです。

library(bigrquery)
set_service_token("your_project_key")
project <- "project_name"

sql = 'SELECT ....'
res <- bq_project_query(x = project, query = sql)

tidyに前処理してggplotでグラフを書く

これについては偉大なる先人が編纂した書物(通称宇宙本)を中心に、様々に優れた解説があるのでここでは触れません。

RユーザのためのRStudio[実践]入門−tidyverseによるモダンな分析フローの世界−

RユーザのためのRStudio[実践]入門−tidyverseによるモダンな分析フローの世界−

markdownで説明文を書き加えてpdf出力

markdownブロックをnotebookのあちらこちらに挿入して全体の体裁を整えたら、上記の動画の手順でpdfを出力します。

参考にしたもの