R言語は、データ分析、統計解析に特化した言語であるとよく言われます。しかし「データ分析」「統計解析」しかできないと考えてしまっては損をしています。C/C++のような汎用のプログラミング言語同様の制御構造を備えていますし、CRANで公開されているパッケージを利用すれば、はるかに簡単に望みの機能を実装することができる言語です。
R言語とは
R言語はPythonと並んで、機械学習、データサイエンス、統計解析に使われる言語です。統計プログラミング用言語であるS言語から派生したと言われており、統計データの操作、分析、可視化に強い汎用プログラミング言語です。
R言語の特徴
データ分析、統計解析に強い
R言語はデータ分析、統計解析に強い言語と言われています。これは、表形式のデータの取り扱いが得意な言語と言い換えることもできるかと思います。
「表形式のデータ」と言われて多くの人が思い浮かべるのがExcelではないでしょうか。多くの人が、仕事等で使っていると思います。Excelでできることは基本的にR言語でもできますし、Excelより速く、高機能な処理を行うことができます。
データ分析、統計解析以外もできる
「R言語は統計解析に特化した言語である」とよく言われますが、「統計解析に特化した言語」ってどういうことでしょうか?統計解析しかできないのでしょうか?
いえ、そんなことはありません。
R言語にも、C/C++等のプログラミング言語同様に、分岐(if)、ループ(for)等の制御構造があります。また、データ型に関しても、C/C++の配列、構造体(クラス)に対応するものとして、ベクトル、リストがあります。Rはインタプリタ言語であるため、C/C++のような言語と比較すると、計算スピードは遅い傾向にありますが、時間のかかる部分はC/C++で書いてdll化して、Rからdllを呼び出して高速化して使うこともできます(実際、公開されているパッケージはC/C++で書かれていることが多いそうです)
このように、R言語は、プログラミング言語として十分な機能を持っており、データ分析、統計解析以外の解析も可能な言語です。
さまざまなパッケージ
CRAN(Comprehensive R Archive Network)で、さまざまな機能をもったパッケージが公開されています。これを導入することで、求める機能を簡単に実装できます。
おすすめパッケージ
- dplyr(データ操作のためのパッケージ)
- ggplot2(可視化のためのパッケージ)
- stringr(文字列操作のためのパッケージ)
オープンソースソフトウェア
R言語はオープンソースのソフトウェアですので、以下のような特徴があります。
これって、実は大事ですよね。
- 無料で利用できます。高価な統計解析ツール、プログラム開発環境が必要ありません。
- オープンソースのため、世界中の開発者によってバグの修正や機能追加が常に行われています
- 多くの人が関わって常にアップデートされているのでセキュリティ面でも安心です。
- Windows,Mac、Linuxで利用できます。
Excelとの関係
Pythonと比較されることが多いR言語ですが、表形式のデータの処理が得意ということから、Excelと比較した方が良いようにも思います。
R言語とExcelを比べた場合、R言語の方が、Excelよりも速く、管理がしやすいです。また、パッケージを導入することで簡単に高機能なプログラムを実装することができます。
Pythonとの関係
Pythonは機械学習の領域で人気がある言語で、R言語よりも汎用性が高く、Webアプリ、デスクトプアプリ、組み込みアプリなどの開発によく使用されています。
R言語は、統計解析やグラフの可視化の点では、Pythonよりも使いやすく、データの収集、整理、可視化を繰り返して、仮説を立てながら行うような探索型のデータ解析作業に向いています。
データ分析において、統計学の役割が大きくなってきている今、探索型のデータ解析をR言語で行い、その結果得られたモデルをアプリ化するのにPythonを使うというのが、理想の形でしょう。
R言語でできること
統計解析
R言語は統計に強いプログラミング言語ですから、以下のような統計解析が簡単にできます。
- 各種統計量の計算(平均、標準偏差、中央値、四分位数, etc)
- 各種検定(t検定、F検定、適合度検定、独立性検定、etc)
- 回帰分析
可視化
Rはさまざまな方法で可視化を行うことができますが、主なものとして、以下の3つがあります。
- パッケージを使わない方法(base R)
- latticeパッケージを使う
- ggplot2パッケージを使う
最後にあげたggplot2はtidyverseパッケージ群に含まれているパッケージです。tidyverseパッケージ群には、データの可視化を行うggplot2以外にも、データの読み込み、抽出、加工を効率的に行うための機能が含まれており、データの整理、可視化、仮説立案を繰り返しながら行う探索型のデータ解析作業には必須のパッケージです。
機械学習
caretパッケージを用いることで、200以上のアルゴリズムを用いることができます。
caretでできる代表的なアルゴリズム
- ロジスティック回帰
- ニューラルネットワーク
- XGBoost
また、kerasパッケージを用いることでディープラーニングも簡単に行うことができます。
もちろん、自分で機械学習用のソースコードを書くことも可能です。
数値解析
CRANで公開されているパッケージを利用することで、以下のような解析も簡単に行うことができます。
- 最適化問題(Rsolnpパケージ)
- 非線形連立方程式(nleqslvパッケージ)
- 常微分方程式、微分代数方程式(deSolveパッケージ)
- モンテカルロシミュレーション(baseR)
これらは、実際に僕がRで解析したことがある数値解析問題ですが、パッケージが利用できるので、C/C++やfortranを使って自分でプログラム化するのに比べて、はるかに簡単にプログラム化することができました。
スクレイピング
ネットで簡単に情報が入手できる時代に欠かせないのが、スクレイピングの技術。Rでもrvestというパッケージを使うことで、自動で大量のデータを入手することができます。
インストール
R本体
CRANからインストーラーをダウンロードして実行します。基本的に難しいことは何もありません。デフォルトの設定のままで特に問題ありません。
RStudio
RStudioはR言語のIDE(統合開発環境)です。
機械学習をいろいろ試したいからPythonも勉強したいとは思うのですが、RStudioがあるからどうしてもR言語を使いたい、って思わせてくれるソフトです(RStudioでPythonも動かせるようですが、まだ、使いこなせていません…)。
RStudioには無料で利用できるオープンソース版と優先的なサポートが受けられる商用ライセンスがありますが、無料のオープンソース版で十分だと思います。R言語を使用するなら、ぜひ導入をご検討ください。
こちらもインストールは簡単です。下記のサイトから「RStudio Desktop」の「Free」版(無料版)のインストーラーをダウンロードしてインストールしてください。
MacでRStudioを使う場合、RStudioのバグのため日本語入力がうまくできず、イライラするかもしれません。解消法はこちら
まとめ
データ分析、統計解析に強いと言われるR言語ですが、決して、それだけにとどまるプログラミング言語ではありません。CRANで公開されているパッケージを利用することで、簡単に、高機能なプログラムを実装することができます。