Line 1: Error: Invalid Blog('by Esehara' )

または私は如何にして心配するのを止めてバグを愛するようになったか

>> Zanmemo

あと何かあれは 「esehara あっと じーめーる」 か @esehara まで

むしろ数式が苦手だけど統計を勉強したいという人はRをやるといいかもしれない

はじめに

 なぜか唐突にRブームが俺の中でやってきてしまってどうしようもないので、Rの本を注文しまくってたりしていたら、下のような本の山が出来てしまいました。

 これらの本を付箋でペタペタしながら読み進めていくうちに、段々とRというのはどういう言語で、どういう風に勉強するといいのか、という方針が固まってきたので、ここにメモをしておきます。

Rとはどのような言語か

 一言で、しかも乱暴に言ってしまうならば「統計に特化したPHP」というのが一番雰囲気を伝えられるかもしれない。いや、PHPの悪評は知っているし、ガチでRをやっている人にとっては嫌がられることもわかっているけど、あえてそういう説明が、あくまで入り口としてはわかりやすいのではないかと。

 どういうことかというのを言い訳します。

 自分が読んだ感じだと、統計というのは、「何らかのデータ」と「分析するためのツールとしての数式」と「その数式が意図するところ」という三つに別れる感じがします。で、自分みたいな、本当に数式が苦手な人間というのは、「何らかのデータ」があって、それをどういう風にアプローチするまではわかっても、その数式をどのようにプログラムで表現するのかで躓いたりします。

 で、「何らかのデータ」と「その数式が意図するところ」の架け橋として「じゃあその計算自体は関数として用意しておくよ」という親切な言語としてRがあるように感じます。

 なものだから、逆に「統計の本を読んでいても、いまいちピンと来ない」という人にとっては、むしろRをいじることのほうが、統計という行為に接近しやすいように感じます。例えば、自分はRをはじめたきっかけは下の本なのですが、とてもわかりやすく感じました。

Rによるやさしい統計学

Rによるやさしい統計学

 この本のいいところは、統計のことを解説しながら、実際にRだとどういう風に表現できるのか、いう二つの線から手助けしてくれるので、「統計よくわかんないけど、Rやってみたい」というのにはとてもとっかかりになり、勉強になりました。

グラフを作ってみる

 さらに、Rがとっつきやすい理由として、最初からグラフを表現する機能がある点にあるな、という点も、個人的には押したいところだなあと。例えば、最初はエクセルの表を作るのを、Rで作ってみるところから始めてもいいんじゃないかと。

 例えば、データを入力するにしても、色々な形式をサポートしています。このあたりに関しては、下の本の目次をパラパラみるとわかりやすい。

Rクックブック

Rクックブック

 一部を抜粋すると、CSVは当然のことながら、Webから引っ張ってきたり、あるいはHTMLのテーブル部分からデータを読み込んだり、あるいはMySQLと接続するライブラリがあったりするというあたりで、すごく充実している。そこから、Rに読み込ませてグラフを作ったり。

 こういう事を言うと、「じゃあエクセルでいいじゃん」という風にもなってしまうのですが、例えば、自分はWebalizerというログ解析ツールを使っています。このツールは静的なHTMLを吐き出してくれて、そこから、Bookableのページのリクエスト数、訪問者数などを見ているのですが、それらをいちいちエクセルに打ち込んでいると面倒くさいので、自動的に作っていたりします。

 もちろん、グラフを作るためには、何かしらのデータが必要になります。なので、先に「どういうデータが手元にあるのか」とか、あるいは「どういうデータを表にしたいのか」ということが問題になるのかもしれません。

 あともう一つとして、表にしてみると、何かしらの数値がどういう風に可視化できるのか、というのと、それが直感に結びついて、統計というものが、どういうことをやっているのかというのが、実体験としてわかりやすくなるのもいいかもしれません。

 例えば、先ほど紹介したwebalizerでのユーザー推移みたいなグラフは、下のような形でグラフにしています。

 ここには、回帰分析が使われていて、そこから回帰直線を引いています。正直、回帰分析に関する数式的表現は理解できないのですが、このように簡単に表にのせることができ、そこでどういう傾向で推移しているのかがわかりやすく見えるようになります。

 上を見てみますと、ページのロードと、来てくれている人たりのページ読み込み数は増加の傾向にあり、サービス単体としては改善されているように思いますが、問題は実際に自分へのサービスの導線をどのように作るのか、というあたりで失敗しており、そのあたりが課題になりそうである、というのがわかります。

追記(07/09)

 知人であったり、「時系列分析の場合、回帰直線を使うべきではなく、移動平均を求めるべきなのではないか」というご指摘や、あるいは「数式が苦手でも統計やりたいのでRで試す」は現実問題としてはアリだと思う - 銀座で働くデータサイエンティストのブログから、回帰分析の部分には違和感がある、というリプライがありました。上記の例は「分析として適切ではない手続きが含まれている」可能性がある、というのをご理解して頂ければ幸いです。

Rという言語の特性を覚える

 そんな感じで、データをいじくりまわしていると、表を作るときにしても「あれ、これってどういう仕組みになっているの?」という壁が出てきます。そのあたりに関しては、『Rクックブック』にも触れられていますが、他言語を既に取得した人向けの、下のような本も出ています。

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

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

 上記の本によれば、スカラ、ベクトル、配列、行列という表現が出てきます。一般的な言語で呼ばれる「配列」であったり「リスト」というのは、Rではどうやらベクトルとして、表現されます。では逆に「配列」というのは何かといえば、配列は、n次元を構成できるものとして表現されるということです。

 上のことに関しては、実際の本を読んで頂くとして、個人的に衝撃的だったのは、factorというタイプです。どういうことかといえば、あるデータに対して、別の水準というのを当てはめます。例えばサンプルの加工を見てみましょう。

> hoge <- c(12, 34, 5)
> hoge <- factor(hoge)
> hoge
[1] 12 34 5
Levels: 5 12 34
> as.numeric(hoge)
[1] 2 3 1
> hoge[0]
factor(0)
Levels: 5 12 34

 つまり、factorにしたあとに、数値として変換すると、Levelsの順番が出力される。さらに、いわゆるベクトルインデックスは、多くの言語では0ではじまるのですが、Rの場合は、0にはtypeが入っていたりするというところがあって、かなり癖のある言語になっている印象です。

 なもんだから、その辺の「癖」みたいなものは、それこそ上記の『Rクックブック』であったり、『アート・オブ・R』あたりで補完しながら読み進めていく必要があるように感じます。

 またRはコミュニティーによるTipsの共有がかなりされており、下のリソースはとても参考になります。

改めて統計の世界へ

 とはいえ、あくまでもRは統計解析を便利にするツールではあっても、だからといって統計のことを知らなければ、当然のことながら、Rをいくらやったとしても使いこなせないという側面は当然出てきます。

 なので、上記のように「なるほど、Rだったらこういう風に出せるのか」というのを勉強しつつ、実際の統計の入門書で改めて補完するというのはありかなーという印象です。その辺については、他に参考になるエントリがあるかと思われます。

まとめ

 Rを使う人の話というのは、どちらかというとガチガチの統計屋だったり、あるいはデータサイエンティスト系の話が多く、それはとても悪くはないと思います。

 ただ、今回触ってみた印象だと、そういう人でなくても「それなりに便利だから、軽く温く使うのもありだよ」ということを感じました。

 最近のはやりはビックデータ解析とかデータマイニングとか色々あるのかもしれませんが、それにこだわらずに、普段の生活を便利にするためにRを使うというのも、すごくいいのかなあという気がしています。