渋谷駅前で働くデータサイエンティストのブログ

元祖「六本木で働くデータサイエンティスト」です / 道玄坂→銀座→東京→六本木→渋谷駅前

『みんなのR』(原題:"R for Everyone")ご恵贈いただきました

みんなのR ?データ分析と統計解析の新しい教科書?

みんなのR ?データ分析と統計解析の新しい教科書?


ということで、訳者のお一人であられる牧山さんからご恵贈いただきました!


f:id:TJO:20150629125918j:plain


各所の書評で「今年最高のR本」との呼び声も高い本書、既に色々レビューが出ていて僕なんぞがわざわざレビューすることなんてもはやなさそうなんですが(笑)、早速簡単にレビューしてみようと思います。ちなみにこれまでに出ているレビューは僕が把握している範囲で以下の通りです*1



ざっと内容を眺めてみる


ではでは、一通り本書の内容を眺めてみましょう。実は章立てが結構多く細かく、章というよりは節みたいなレベルで区切られている箇所が多いので、僕の方で適当に大まかに分けてみました。


Rの初歩

1章 Rを手に入れる
2章 Rの環境
3章 Rパッケージ
4章 Rの基本
5章 高度なデータ構造
6章 Rへのデータ取り込み

基本的なRのインストール情報ぐらいなのであまり他書との差はないと思いきや、Revolution Analytics社*2ディストリビューションについても触れられていたり、Gitでのバージョン管理について1節設けられていたりと、色々特色があります。

データ可視化

7章 統計的なグラフィクス

他の書評でもこの章は絶賛されていますが、僕も大いに同意する次第です。『Rグラフィックスクックブック ―ggplot2によるグラフ作成のレシピ集』を除くと意外と{ggplot2}の使い方を細かく解説した本ってほとんどない上に、Rそのものの機能や利点についての解説と合わせて{ggplot2}を紹介している本となると本書が初めてではないでしょうか。しかもカラープロットのパートは全部カラー印刷されていて分かりやすい! 僕のような{ggplot2}使うのを面倒臭がるダメなRユーザーにも嬉しいチャプターです。

プログラミング言語としてのR

8章 Rの関数を書く
9章 制御文
10章 ループ:Rの方法ではない反復方法

本来applyファミリーなどベクトル化した手法で繰り返し処理を行うのがRの流儀なんですが、それでは無理な場合にも備えてちゃんとfor文、while文、if文などについてもきちんと触れてあります。

Rならではのデータ操作

11章 グルーピング操作
12章 データ整形
13章 文字列操作

いよいよここからがRの本番。applyファミリーや{plyr}によるベクトル化処理や、{data.table}による省メモリデータ操作といった、他のプログラミング言語ではあまり見られないようなR独特のデータ操作について丁寧に解説されています。

Rで学ぶ統計学

14章 確率分布
15章 基本統計
16章 線形モデル

ここでのポイントは14.4節。統計学の教科書でも開かない限り出てこないような、主要な確率分布の一覧とそれに対応するRの関数がリストでズラリと並んでいます。本書でRを学び始める初中級者にはあまり重要でないかもしれませんが、この後一般化線形モデルなどに取り組む場合には極めて重要になる知識です。そして基本統計のところも、他書だとサラリと流すところに{ggplot2}での可視化を挟むことで、より分かりやすさを増しています。線形モデルの重回帰のセクションでは逆に他書だと省略されるような最小二乗法の説明をきちんと入れているところがなかなか乙だなぁという印象です。


なお、細かいことに見えるかもしれませんが、線形モデルの重回帰のセクションで逐一必要に応じて変数や偏回帰係数の可視化を{ggplot2}などで丁寧に行っている点が重要かと。実は僕は{coefplot}を使ったことがなかったので、大変参考になりました。

Rで学ぶ統計モデリング機械学習

17章 一般化線形モデル
18章 モデル評価
19章 正則化と縮小(シュリンケージ)
20章 非線形モデル

ここが本書のハイライト。一般化線形モデル(GLM)による統計モデリングの初歩をロジスティック回帰・ポアソン回帰・生存分析*3を例にとって可視化を挟みながら分かりやすく説明しています。モデル選択の章では定番のstep / stepAICは時代遅れだということで、{boot}による交差検証を先に挙げているところが憎いですね。正則化と縮小の章では、お馴染み{glmnet}による正則化と、{arm}のbayesglm関数によるベイジアン縮小(Bayesian shrinkage)*4を取り上げています。


非線形モデルの章では、そのタイトルから想像される内容に相違して決定木やランダムフォレストが後ろの方で取り上げられていたりします。ただし見どころはむしろ前半の方のsmooth.spline関数による平滑化スプラインや{mgcv}のgam関数による一般化加法モデル(GAM)のパートでしょう。

Rで学ぶデータマイニング

21章 時系列と自己相関
22章 クラスタリング

Rで社会科学・金融データを扱うことも多いので*5、{forecast}によるARIMAモデリングや{vars}によるVARモデリング、そして{rugarch}による不均一分散に対するGARCHモデリングが21章では取り上げられています。22章は一般的なクラスタリングの紹介ということで、K-meansやK-medoids({pam}を使う)、hclustによる階層的クラスタリングなどについて述べられています。

Rによるレポーティングとナレッジの共有

23章 knitrによる再現性・レポートとスライドショー
24章 Rパッケージの構築

そしてRコミュニティならではの重要ポイントが、最後のこの2つの章。1つ目はRによる実行結果を誰でも再現可能なようにレポートする際に必要な{knitr}によるPDF生成やRMarkdownの扱い方、さらには{pandoc}によるHTML5ドキュメントの生成について触れています。なお、ここでも書かれているように本書全体は事実上RStudioの{knitr}のみで執筆されたとのことです(すげーーーーー)。


もう一点、Rコミュニティのコミッターになりたければ必須のRパッケージの構築についても24章では触れられています。実際には{Rcpp}経由でC++ソースコードを書く必要があるため本書の知識だけでは十分ではありませんが、どのようにしてRパッケージを作り公開できるかというRコミュニティ的に最も大事な情報がここで述べられています。


まとめ


内容:☆☆☆☆☆(非公開)
オススメ度:☆☆☆☆☆(非公開)


いつも通り友人の訳書ということで、基本的に星はつけませんw 悪しからずご了承ください。その上で良かったところと惜しかったところを以下に書いておきます。


良かったところ


これまで何冊かR初学者向けの書籍って何冊か出ていたんですが*6、どれも一長一短があるため「これ一冊あればOK!」というものがなかなかありませんでした。純粋にプログラミング言語としてのRに特化した本、ビジネス課題の解決と絡めた本、辞書的な本、などなどRを切り口として一つのテーマに深く切り込む本はあったものの、言い換えると「オールインワン」的な本に乏しかったとも言えます。


本書の素晴らしいところは、多少ボリュームが分厚くなってしまったものの*7


という実務的なデータ分析においてR上で行われるべき取り組み全てをほぼ完全に網羅して解説しているところでしょう。Rはその分析プラットフォームとしての性質上、非常に多岐に渡る特徴を持っていますが、それらのほぼ全てを取り上げているという点で本書は一種の百科事典としても大変有用です。全ての章の最後に「まとめ」がついていて、何かを度忘れしてしまった時にそこさえ読めば最低限必要なことがすぐ分かるようになっているのも素晴らしいポイントかと。


そういう意味では他の多くの書評でも言われていますが、本書『みんなのR』はここ数年の間に出版されたRの初中級者向け教科書としてはベストであると断言しても良いと思います。ご恵贈いただいたということを差し引いても、万人にお薦めできる良書です!


惜しかったところ


既に多くのレビューで指摘がありますが、やはり本書執筆時点でまだCRANに登録されていなかったことから{dplyr}や{tidyr}についての紹介がない点ですね。{dplyr}はSQLライクにデータ操作を行えるので、普段はSQL書いてゴリゴリDBを触っている人が違和感なくR上でデータを前処理するにはもはや不可欠のパッケージであり、今やRの最重要パッケージでもあるのですが。。。これは致し方ないですね。次の版以降のアップデートに期待しましょう。


後は、統計分析の方を重視したことで機械学習やもう少し高度な統計モデリングのパートが手薄な点でしょうか*8。もっともこれもRの初中級者にとってはややadvancedな内容なので、本書をマスターしてから以下に挙げるような他書で深く学べば良いことかなとは思います。ええ、手前味噌ですが拙著もお薦めしておきます(笑)。

手を動かしながら学ぶ ビジネスに活かすデータマイニング

手を動かしながら学ぶ ビジネスに活かすデータマイニング

Rによるデータサイエンス-データ解析の基礎から最新手法まで

Rによるデータサイエンス-データ解析の基礎から最新手法まで

データサイエンティスト養成読本 R活用編 【ビジネスデータ分析の現場で役立つ知識が満載! 】 (Software Design plus)

データサイエンティスト養成読本 R活用編 【ビジネスデータ分析の現場で役立つ知識が満載! 】 (Software Design plus)

裏を返せばそれだけ初中級者向けの内容にしっかり特化しているということでもあり、不必要に高度な内容をを含めないことで初中級者に無用な混乱を与えないという配慮がされているという証でもあると思います。


そして最後に、これだけの良書であるにもかかわらず日本のTokyoR主要メンバーによる「訳書」であるという点だけが残念かな、と(笑)。いつか日本オリジナルで海外にも英訳*9されて広まるようなR本の決定版が出てくることを期待したいです。

*1:最初のものは訳者のお一人による記事です

*2:現在は買収されてMicrosoft傘下

*3:Coxの比例ハザードモデル

*4:GLMにおいて特定の偏回帰係数について事前分布を恣意的に設定することで係数の標準誤差を減らすこと

*5:STATAに比べたら少なそうですが

*6:特にO'Reillyから

*7:同時にお値段も上がってしまった感が。。。

*8:例えばSVMやGLMMが抜けている

*9:どころか中国語とか他の言語にも翻訳されるような