最近でこそ使わなくなったものの、自分にとってRは母国語(第一言語?)みたいなもので結構影響を与えている。Rの言語として好きなところ(例えばapplyで行毎にばさっと関数適用してplotしてデータの様子をさくっと眺めるとか)もあるが、データ解析言語としてのRを支えているのはそのインタラクティブ性だと思う(あれこれ仮説を試しながらデータの性質を見ていく探索的データ解析)。Rによるインタラクティブな解析を支えているものの一つとしてESSを忘れてはいけない。ESSについてはTsukuba.RのLTで(若干宗教っぽく)紹介しているし、RubyでESSに近い環境を作りたいと思ってちょっとしたelispを書いたりしていた。
- ESSを使おう - Seeking for my unique color.
- irbをESSのように使いたい!!→refeでヘルプも引けるようにした - Seeking for my unique color.
関数のヘルプがさくっと引けたり、そのついでに関数のexampleを実行できたりなどなどそれはそれはとても素敵なものです。RubyやC++を使うようになってからそれなりに環境を整えたものの、ESS上でのRの使い勝手には遠く及びませんでした(だけど、Rを使わなくなっていったのはnlpとの相性などがあったから、ですが...)。
ESS的な環境にせまるものはもう出てこないのか...と思っていましたが(大袈裟)、Clojure + swank + slimeはかなりESSに近い使い方ができれこれは当たりだと思った。
この環境では、リージョンで囲ったところを実行したり(C-c C-r)、ポイントを置いてる関数のhelpを引いたり(C-c C-d C-d)などよく使う機能にすぐアクセスできる。group-by関数でデータを因子毎にまとめて、frequenciesで頻度を集計して上位10件を眺めたり(take 10 lis)、でかいデータも遅延評価で必要な分だけ処理できる。Incanter: Statistical Computing and Graphics Environment for Clojureを使えば簡単に可視化もできる。Rと違って速度も相当早い(JVM上で動くし、型ヒントなどを与えることもでき、pmap関数などで並行処理も容易に行なえる)ので*1、解析もさらにやりやすくなる。データ解析はデータの整形(logスケールにしたり)、フィルタリング(異常値の削除)、集計(平均や分散などの基本統計量を求める)などからなっているといっても過言ではないが*2、Clojureは整形、フィルタリング、集計に対してmap、filter、reduceという対応する関数を持っている。このことからもClojureがいかにデータ解析に向いている言語であるというのが伝わってくるんじゃなかろうか(ドヤッ)。
唯一おしいなと思うのがexampleが見れないことか...。と、文句を付けるところがこれくらいしか見つからないくらい(前置記法とか3日もすれば慣れる)には快適に解析ができるので相当お勧め。
参考
- 作者: Stuart Halloway,川合史朗
- 出版社/メーカー: オーム社
- 発売日: 2010/01/26
- メディア: 単行本(ソフトカバー)
- 購入: 10人 クリック: 338回
- この商品を含むブログ (72件) を見る
- 作者: Bruce A. Tate,まつもとゆきひろ,田和勝
- 出版社/メーカー: オーム社
- 発売日: 2011/07/23
- メディア: 単行本(ソフトカバー)
- 購入: 9人 クリック: 230回
- この商品を含むブログ (64件) を見る
- 作者: Michael Fogus,Chris Houser
- 出版社/メーカー: Manning Pubns Co
- 発売日: 2011/03/28
- メディア: ペーパーバック
- 購入: 1人 クリック: 58回
- この商品を含むブログ (2件) を見る
- 作者: Amit Rathore
- 出版社/メーカー: Manning Pubns Co
- 発売日: 2011/11/28
- メディア: ペーパーバック
- クリック: 24回
- この商品を含むブログ (2件) を見る