ボブブロ

    ネット業界のマイニングアナリスト(現職はディレクター)ボブのブログ。業界研究や技術に関する備忘録                        (特定のカテゴリの記事だけ見たい人は、カテゴリ別記事一覧をRSSリーダーにご登録ください)

Rとは?

 

これからRを導入していくにあたり、まずはRとはいったんなんなのか?という基本的なところから入って行きたいと思います。そんなのは別にいいよ!って人は「

Rのインストール 」へどうぞ。ちなみに僕の中でのRのイメージは

といった感じでしょうか。間違っているところもあるかもしれませんので要注意。

 

さて、実際はRとはどう説明されているのか。Rに関する情報交換などを目的とした「RjpWiki 」にはこう書かれています。

Rは統計計算とグラフィックスのための言語・環境で、GNUプロジェクトの一つ

Rは多様な統計手法(線形・非線形モデル・古典的統計検定・時系列解析・判別分析・クラスタリング・その他)とグラフィックスを提供し、広汎な拡張が可能です。Sは高頻度で統計的手法による研究の手段の選択肢となりますが、Rを使えばそうした活動にオープンソースの道から参加できるようになります。

Rの強みの一つは、巧くデザインされた出版物並みのプロットを容易に作成できる点であり、これには必要なら数学記号や式を含めることもできます。グラフィックスにおける細かなデザインの標準設定に、これまで周到な配慮が払われてきていますが、ユーザーが完全に制御することもできます。

 

GNUプロジェクトってなんだろ、ちょっと気になるけど、今はスルーします。なんとなく想像とそんなに乖離はしていなさそうですね。Rとは言語+環境のことを指し示す訳ですね。

 

ではRとはどんな特徴を備えているか見て行きたいと思います。おもしろい記事を見かけました。

 

実践! Rで学ぶ統計解析の基礎(1):Rは統計解析のブッシュナイフだ (1/4) - @IT

 

この記事には、Rの特徴として以下が挙げられています。

 

統計解析言語Sをベースに構築されたオープンソースプログラミング言語である(Rという名前はアルファベットのSの前にRがあるところから取られている)

●Rの特徴

  • 統計解析言語Sをベースに構築されたオープンソースプログラミング言語である(Rという名前はアルファベットのSの前にRがあるところから取られている)
  • インタプリタ言語で簡単な文法のために習得が容易である
  • 言語はオブジェクト指向言語的側面と関数型言語的側面がある
  • 強力な統計解析・データ解析機能を最初から持っている
  • オンメモリにデータを展開する
  • 統計解析をしやすいデータ型で、データを探索的に分析できる
  • 多様で美しいグラフを手軽に作成できる
  • CRANアーカイブサイトにある数千を超える豊かな統計ライブラリが存在する
  • ユーザーコミュニティには数百万人を超えるユーザーが存在する
  • ユーザー数が多いため、質問の回答が得やすく、バグがすぐに収束し、毎週世界のどこかでユーザー会が開催されている
  • 商用統計解析アプリケーションに比べても遜色ないパフォーマンス
  • 入門的マニュアルから専門の統計解析に至るまで、豊富なドキュメトや書籍が存在する
  • 商用パッケージやデータベース、C/C++FortranPerlPythonJava言語とのスムーズなインターフェースがある

 一方で、いまだRが不得意なことも存在します。

  • テラバイトを超える大規模データ処理(メモリにデータが展開できないため)
  • 複雑なデータ構造の表現(RDBのようなテーブル間の演算機能が低い)
  • 複雑なクエリを効率的に処理する(SQLやストアドプロシージャのような効率的なクエリ言語が存在しない)
  • ゲームアプリケーションやWebアプリケーションなどの作成(いや、無理すればできますが……)
  • 並列化計算、ベクトル化計算(ただし、マルチプロセッサGPU、そしてOpenMPHadoopを利用した並列化計算の実装が現在進行中)

 

 とすごくたくさんありますね(笑)一応、一つずつ見て行きたいと思います。

統計解析言語Sをベースに構築されたオープンソースプログラミング言語である(Rという名前はアルファベットのSの前にRがあるところから取られている) 

これは、うん。そのまま。

インタプリタ言語で簡単な文法のために習得が容易である

 インタプリタ言語*2つまり、人間にとって扱いやすい言語を使っているので楽ですよ、ってことですかね。

言語はオブジェクト指向言語的側面と関数型言語的側面がある

うーん。これは、もう少し深く勉強したり、実際触ってみないとなんとも言えませんな。

強力な統計解析・データ解析機能を最初から持っている

 拡張性に優れているなら、別に最初から持ってなくてもいいような気がするんだけど。

オンメモリにデータを展開する

オンメモリはインメモリ*3の同義語ですね。これは良し悪しがありそう。でも、レスポンスが良いということになると思うんだけど、それはすごく便利ですね。

統計解析をしやすいデータ型で、データを探索的に分析できる。

へーそうなんだ。今度、Rのデータ型をまとめてみようかな。

多様で美しいグラフを手軽に作成できる

 これは、実際に触ってみないとなんとも言えませんが、本当ならすごく便利ですね!

CRANアーカイブサイトにある数千を超える豊かな統計ライブラリが存在する

ライブラリが豊富というのは有名ですね。CRAN*4ミラーサイトがたくさん存在するようです。

ユーザーコミュニティには数百万人を超えるユーザーが存在する

ユーザー数が多いため、質問の回答が得やすく、バグがすぐに収束し、毎週世界のどこかでユーザー会が開催されている

僕も東京で働き始めたら、定期的に勉強会に参加したいと考えています。 

商用統計解析アプリケーションに比べても遜色ないパフォーマンス

僕の所有するものもですけど、有料ソフトはほんと高いですからね。(特に学生にとっては)しかも、そのくせにバグがけっこうあったりする。

入門的マニュアルから専門の統計解析に至るまで、豊富なドキュメトや書籍が存在する

僕はあまりソフトウェアに関する書籍を読んだりしませんが、一冊くらい基本的なことが書かれた書籍を買って手元に置いといてもいいかもしれない。

商用パッケージやデータベース、C/C++FortranPerlPythonJava言語とのスムーズなインターフェースがある

 いろんなツールなんかと組み合わせて使えたりするのは、個人的にすごく評価できますね。

一方で、いまだRが不得意なことも存在します。
テラバイトを超える大規模データ処理(メモリにデータが展開できないため)
複雑なデータ構造の表現(RDBのようなテーブル間の演算機能が低い)
複雑なクエリを効率的に処理する(SQLやストアドプロシージャのような効率的なクエリ言語が存在しない)
ゲームアプリケーションやWebアプリケーションなどの作成(いや、無理すればできますが……)
並列化計算、ベクトル化計算(ただし、マルチプロセッサGPU、そしてOpenMPHadoopを利用した並列化計算の実装が現在進行中)
 

 なるほど。といってもよくわからない部分もありますが(笑)ここらへんはこれから勉強をしていかないといけませんね。

 

さて、ここまで色々書いてきましたが、実際触ったほうがはやい!という結論に至りました(笑)ここで羅列したことに個々の特徴に関しては、今後深く触れていく記事を書いていきたいと思います。

 

次はいよいよ、Rを実際にPCにインストールする作業をしたいと思います。

 

ボブ

*1:ソースコードを無償で公開して、だれでも自由にそのソフトウェアを改変して、再配布できること

*2:インタプリタ言語はコンピュータの使うマシン語や、マシン語と1対1に対応するアセンブリ言語に比べ抽象度が高く、人間の普段使う自然言語に近い感覚で記述することができる高水準言語

*3:ソフトウェアを実行する際、使用するプログラムやデータのすべてをメモリ上に読み込み、ハードディスクなどの外部記憶装置を使わないこと

*4:Comprehensive R Archive Networkの略。R本体や各種パッケージをダウンロードするためのWebサイト