みんなのR (ご恵贈お礼)

みんなのR」をご恵贈いただきました.ありがとうございます!! (現在,写真が撮れないので後で追加予定・・・)

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

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

本書は"R for everyone"の翻訳書であり,Amazon.comのページを見ればわかるように原著は大変好評を得ています.翻訳者はみな日本のR界を代表する方々であり,Tokyo.Rなどの勉強会やブログ,パッケージ開発等で大変ご活躍されています.翻訳者の方々とは個人的な友人でもあり,ご本人たちのお顔を思い浮かべつつ楽しみながら一気に読ませていただきました*1

総評

まず最初に,この本は「中級者までなら,ぜひ手元に置いておきたい一冊」だと感じました.Rのインストールに始まり,基本的な文法規則,データ構造,可視化,統計手法,レポーティング,パッケージの作成方法まで,幅広いテーマを一冊で学ぶことができます.

また,深さについても,所々かなり詳しく書いてあり,縮小推定など他書ではなかなかお目にかかれない手法についても説明されています.データ分析で盲点となりがちなレポート作成についても1章割いてknitrパッケージの説明があるのも好感が持てます.これらは中級者も満足させる内容だと思いますし,他の箇所も事あるごとに短時間で復習するのに適しています.本書の内容を完全に理解して,必要なシーンで正しく使いこなせれば,立派なR中級者と定義しても良いのではないでしょうか*2

448ページという大ボリュームに圧倒されますが,平易な言葉とわかりやすいソースコード,図,表で説明されているため,スラスラ読めます.一度通しで流し読みして,必要な箇所を重点的に読むという読み方も十分可能です.

以上,Rの実行方法を交えた授業や勉強会のテキストとして最適な一冊ではないでしょうか.得られる価値や原著者や翻訳者の方々にかかった労力を考えると,とてもお買い得だと思います.良書を世に出していただいた翻訳者の方々に敬意を表しながら,太鼓判を押しておススメさせていただきたいと思います.

対象読者としては,「Rで学ぶデータ・プログラミング入門」などでRや統計の基礎の基礎を勉強した方で,より幅広く体系的に学びたいと思っている方に最適だと思います.

Rで学ぶデータ・プログラミング入門 ―RStudioを活用する―

Rで学ぶデータ・プログラミング入門 ―RStudioを活用する―

以下,本書を「Rの基礎」(1章-13章),「確率・統計」(14-22章),「レポーティング」(23章),「パッケージ作成」(24章)と勝手に分けて,個々の感想を述べていきたいと思います.

Rの基礎(1章-13章)

1章 Rを手に入れる
1.1 Rのダウンロード
1.2 Rのバージョン
1.3 32bitと64bit
1.4 インストール
1.5 Revolution R Community Edition
1.6 まとめ

2章 Rの環境
2.1 コマンドラインインターフェイス(CLI)
2.2 RStudio
2.3 Revolution Analytics RPE(R Productivity Environment)
2.4 まとめ

3章 Rパッケージ
3.1 インストールパッケージ
3.2 ロードパッケージ
3.3 パッケージの作成
3.4 まとめ

4章 Rの基本
4.1 基本的な数学
4.2 変数
4.3 データ型
4.4 ベクトル
4.5 関数(Function)の呼び出し
4.6 関数ドキュメント
4.7 欠損値
4.8 まとめ

5章 高度なデータ構造
5.1 データフレーム(data.frame)
5.2 リスト(List)
5.3 マトリックス(Matrix)
5.4 アレイ(Array)
5.5 まとめ

6章 Rへのデータ取り込み
6.1 CSVの読み込み
6.2 Excelの読み込み
6.3 データベースからの読み込み
6.4 他社統計ツールからの読み込み
6.5 Rバイナリファイル
6.6 Rに入っているデータ
6.7 Webサイトからの抽出
6.8 まとめ

7章 統計的なグラフィクス
7.1 基本グラフィクス
7.2 ggplot2
7.3 まとめ

8章 Rの関数を書く
8.1 ハロー、ワールド!
8.2 関数の引数
8.3 値の返却
8.4 do.call
8.5 まとめ

9章 制御文
9.1 ifとelse
9.2 Switch
9.3 ifelse
9.4 複合テスト
9.5 まとめ

10章 ループ:Rの方法ではない反復方法
10.1 forループ
10.2 whileループ
10.3 ループの制御
10.4 まとめ

11章 グループピング操作
11.1 Applyファミリー
11.2 aggregate
11.3 plyr
11.4 data.table
11.5 まとめ

12章 データ整形
12.1 cbindとrbind
12.2 Join
12.3 reshape2
12.4 まとめ

13章 文字列操作
13.1 paste
13.2 sprintf
13.3 テキストの抽出
13.4 正規表現
13.5 まとめ


RやRStudioのインストールに始まり,基本的なデータ構造,データの読み込み,グラフの作成,関数の記述,制御文やデータハンドリングについて説明されています.この本を教科書として,「R言語逆引きハンドブック」を辞書として手元に置いておくと学習効率が良さそうです.

改訂2版 R言語逆引きハンドブック

改訂2版 R言語逆引きハンドブック

7章でggplot2パッケージについて学んだら,インターネットで情報を集めてggplot2パッケージを用いた綺麗なグラフの書き方を学ぶと良いでしょう.書籍では「Rグラフィクス・クックブック」がオススメです.

Rグラフィックスクックブック ―ggplot2によるグラフ作成のレシピ集

Rグラフィックスクックブック ―ggplot2によるグラフ作成のレシピ集

8.4節で出てくるdo.call関数は,リストに対してある関数を適用するためのもので,意外と盲点かもしれません.今となってはdplyrパッケージのrbind_list関数などが台頭して古い書き方になってしまったかもしれませんが,かつては列数が同一の複数のデータフレームを持つリストに対して行方向に結合するときは do.call("rbind", x) としたものでした.

原著が執筆された時期には,Hadley Wickhamによるdplyrパッケージtidyrパッケージが公式にCRANで提供されていなかったため,本書では,それぞれplyrパッケージ(11.3節),reshape2パッケージ(12.3節)が紹介されています.この箇所についてモダンな書き方を知りたい方は,「データサイエンティスト養成読本 R活用編」の第3章で市川さんが書かれている記事を参照すると良いでしょう.

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

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

13章のstringrパッケージを用いた文字列操作については,詳しく書かれた書籍はなかなかないので重宝します.Rは文字列操作が苦手とされていますが,本章を読めばそのイメージはある程度払拭されるかもしれません.

Rのよりアドバンストな内容としては,「アート・オブ・R・プログラミング」などがあります.この本では,本書では扱っていないデバッグオブジェクト指向プログラミング,並列化などについても扱っています.

アート・オブ・Rプログラミング

アート・オブ・Rプログラミング

確率・統計 (14-22章)

14章 確率分布
14.1 正規分布
14.2 二項分布
14.3 ポアソン分布
14.4 その他の分布
14.5 まとめ

15章 基本統計
15.1 要約統計
15.2 相関と共分散
15.3 t検定
15.4 分散分析
15.5 まとめ

16章 線形モデル
16.1 単回帰
16.2 重回帰
16.3 まとめ

17章 一般化線形モデル
17.1 ロジスティック回帰
17.2 ポアソン回帰
17.3 その他の一般化線形モデル
17.4 生存時間分析
17.5 まとめ

18章 モデル評価
18.1 残差
18.2 モデル比較
18.3 クロスバリデーション
18.4 ブートストラップ
18.5 ステップワイズ変数選択法
18.6 まとめ

19章 正則化と縮小
19.1 Elastic Net
19.2 Bayesian shrinkage
19.3 まとめ

20章 非線形モデル
20.1 非線形最小二乗法
20.2 スプライン
20.3 一般化加法モデル
20.4 決定木
20.5 ランダムフォレスト
20.6 まとめ

21章 時系列と自己相関
21.1 自己回帰移動平均
21.2 VAR
21.3 GARCH
21.4 まとめ

22章 クラスタリング
22.1 K-means
22.2 PAM
22.3 階層型クラスタリング
22.4 まとめ


14章から22章まで続く確率・統計の解説も非常にわかりやすいものになっており,初学者の学習効率を確実に向上させると思います.以下では,いくつかトピックを取り上げます.

初学者を脱落させやすいと思われるt検定(15.3節),分散分析(15.4節)については,「何と何がどういう関係かを調べたい」というモチベーションが明確に書かれているため,非常にとっつきやすくなっています.

実務では,回帰モデルを構築する際に対数変換は頻繁に行います.本書では16.2節で2項目間の散布図を例示しながら,どのようなときに対数変換すべきかのヒントを与えてくれます.

「モデル評価」(18章),「正則化と縮小(シュリンケージ)」(19章),「非線形モデル」(20章)はややレベルが高いです.23章,24章とともに,中級者レベルの読者にも歯ごたえのある箇所ではないでしょうか.しかし,いずれも説明は的を得ていて,大変わかりやすいです.

「モデル評価」(18章)は,残差分析,モデル間の比較(係数比較,AIC, BIC),クロスバリデーション,ブートストラップ,ステップワイズについて扱われます.個々のテーマは他書をかき集めれば載っているものも多いですが,モデル評価という視点で解説した記事は貴重ではないかと思われます.

正則化と縮小(シュリンケージ)」(19章)は,日本語によるElastic netやBayes縮小の貴重な解説記事となっています.以下のスライドで予告されているベイズ縮小について知りたければ,すぐに本書を手に取るべきでしょう.

クラスタリング」(22章)でも,初学者が迷わないように,クラスタ数の決定方法について説明しています.

本書を読み終えた後は,尾崎さんや金先生,青木先生の書籍,はたまた共立出版のRで学ぶデータサイエンスシリーズに着手すると良いのではないかと思います.

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

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

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

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

Rによる統計解析

Rによる統計解析

パターン認識 (Rで学ぶデータサイエンス 5)

パターン認識 (Rで学ぶデータサイエンス 5)

レポーティング(23章)

23章 knitrパッケージによる再現性・レポートとスライドショー
23.1 Latexプログラムのインストール
23.2 Latex 入門
23.3 Latexを使ったknitr
23.4 マークダウンのヒント
23.5 knitrとマークダウンの利用
23.6 Pandoc
23.7 まとめ


個人的には,knitrパッケージによる再現性・レポートとスライドショーを取り上げてもらったのは非常に嬉しかったです.Rでデータ分析というと,どうしてもRの文法,統計手法に目が行きがちですが,実務では再現可能な形で「分析の足跡」を残すことは非常に重要です.データ分析者にとって「実験ノート」とも言えるこの足跡をどのような手段によって残すかが1つの課題となりますが,knitrパッケージを用いると容易く実現できます.

この章でknitrパッケージの基礎を学んだ後は,共立出版Useful Rシリーズの「ドキュメント・プレゼンテーション生成」を是非読んでください.

ドキュメント・プレゼンテーション生成 (シリーズ Useful R 9)

ドキュメント・プレゼンテーション生成 (シリーズ Useful R 9)

パッケージ作成(24章)

24章 Rパッケージの構築
24.1 フォルダ構成
24.2 パッケージファイル
24.3 パッケージドキュメンテーション
24.4 チェック、構築とインストール
24.5 CRANへの登録
24.6 C++コード
24.7 まとめ


パッケージの作成方法がコンパクトにまとまっていて重宝します.この後は,共立出版Useful Rシリーズ「Rのパッケージおよびツールの作成と利用」がオススメです.

Rのパッケージおよびツールの作成と応用 (シリーズ Useful R 10)

Rのパッケージおよびツールの作成と応用 (シリーズ Useful R 10)

おわりに

明日6月30日にいよいよ発売ですね.日本のRや統計に関わるコミュニティーの裾野を広げていくためにも,多くの方々の手にこの良書が渡ることを心から祈っています.

*1:他にやらなければならないことは大量にある状況にも関わらず,です!

*2:永遠の中級者から抜け出せない私が言うのも憚られますが,上級者にもきっと得るものがあると思います