R for Windowsのビルド方法

統計やデータマイニングのためのソフトウェアのデファクトになりつつあるR。久しぶりにメジャーバージョンアップしたそうです(3.0.0)。いい機会なので、Windows上でRをビルドする方法を書いておきましょう。Linuxだと何の苦労もなくビルドできるのですが、Windowsだとちょっと作業が必要です。

R 3.0.0を例に説明します。

  1. コマンドtarが無い場合のみ:ビルドするためのツールを集めたRtoolsをインストールします。ビルドしたいRのバージョンにあったものを選んでください(ここではRtools30.exe)。
  2. Rのソースコード(ここではR-3.0.0.tar.gz)をダウンロードします。
  3. ソースコードを適当なディレクトリに保存し、コマンドプロンプトをそのディレクトリで開きます(ディレクトリを右クリックするのが簡単ですが、コマンドプロンプトを起動してからそのディレクトリに移動してもかまいません)。
  4. ソースコードを展開します。ここでは「tar xf R-3.0.0.tar.gz」です。展開してできるディレクトリ(ここではR-3.0.0)がSource Home Directoryになります。
  5. Rtoolsを再インストールします。途中でExtras to build 32 bit Rを選択し、Source Home Directoryも適切に指定してください。
  6. とりあえず「set LC_ALL=C」として、Cロケールにしておきます(正解がよくわかりませんが、何も指定しないとビルドの途中でエラーになります。src/library/tools/R/translations.Rに非アスキー文字があるのがいけないようです。実体参照?で書けばいい?)。
  7. set TMPDIR=C:\tmp」として作業ディレクトリを設定します(書き込み可能なディレクトリを指定してください)。
  8. make all recommended

bin/i386/Rgui.exeをダブルクリックするとRが起動します。

つながりやすさ、No.1へ?

スマートフォンのつながりやすさに関する調査で、ソフトバンクが1位になったという広告が大量に流れているようです。

なんでも、NTTドコモとau、ソフトバンクのそれぞれ3400, 3700, 5300人に、月間15回、7時から23時までの時間帯でランダムに発信した場合の通話接続率が、順に0.98, 0.981, 0.983だったとのこと。1位になったのはこれが初めてではないようですが、その瞬間にはCMの準備ができていなかったのでしょう。

違いが微少なので、誤差の範囲では?とも思うのですが、ちょっとRで計算してみると、そういうわけではなさそうです。

> trials <- c(3400, 3700, 5300) * 15
> successes <- trials * c(0.98, 0.981, 0.983)
> prop.test(successes, trials, correct=F)

        3-sample test for equality of proportions without continuity
        correction

data:  successes out of trials 
X-squared = 16.9408, df = 2, p-value = 0.0002096
alternative hypothesis: two.sided 
sample estimates:
prop 1 prop 2 prop 3 
 0.980  0.981  0.983 

4863540930石田基広『R言語逆引きハンドブック』(シーアンドアール研究所, 2012)初版p. 386のサンプルは、成功回数と試行回数が逆になっていますね。

とりあえず誤差ではないとしても、調査方法でよくわからないところもあって、なんとも言えない感じですが、「ちょっとうれしいんで、言わせてやってください」と言われると・・・

「つながりやすいソフトバンク」はスマートフォン限定(Slashdot)ソフトバンクの「つながりやすさ、No.1へ」に SNS からは厳しい声も(japan.internet.com)など、言わせてやってあげられない方面からはいろいろツッコミもあるようですが、それらの中にもツッコミどころがあったりして(「本来、このような品質調査の場合は、比較する3社でサンプル数を揃えて違いを探るものである」とか。そもそも「SNS から」っていうのもおかしい)、広告主にとってはかなりうれしい展開になっているようです。

このブログもつながりやすさの向上を目指しています。

階層的クラスタリングでデンドログラムが変になる例

階層的クラスタリングは、非類似度の指標とクラスタの連結法にたくさんの選択肢があって、いろいろ試すことができます。たとえば、Rのhclustには、クラスタの連結法としてwardとsingle、complete、average、mcquitty、median、centroidがありますが、medianとcentroidでは、連結によって非類似度が必ずしも増加しないため、デンドログラムがおかしくなる危険があり、使いどころが難しいです。

おかしくなる例を一つ紹介します(RSSリーダーではコードが見えないかもしれません)。

MathematicaのFindClustersのバグ(Ver. 11で解決)

Ver.11で修正されました。

Mathematica 8.0, 9.0, 10.0, 10.1, 10.2, 10.3, 10.4.1 for Microsoft Windows (64-bit)と10.0.0, 10.3.1 for Linux ARM (32-bit)でのことです。

Mathematicaでクラスター分析をするFindClustersは、このデータを処理できません。(RSSリーダーでは表示されないかもしれません。)

このバグは報告済みですが、解決方法はわかっていません。バグが修正されたバージョンを受け取るために、プレミアユーザになっています。

しょうがないからRでやろう、せっかくだからMathematica 9で導入されたRLinkにしようと思ったのですが(そういう欲求があることは、開発元も認めているわけで:階層的クラスタリング)、コサイン類似度を計算するためのcosineを、64bit版Mathematicaから使う方法がよくりませんでした。

Mathematicaでは、FindClustersの他にAgglomerateClusteringComponentsでも階層的クラスタリングができて、整理されていないのもちょっと困ります。(Agglomerateにもバグが、ClusteringComponentsにも困ったところがあります。)

というわけで、Rで実行する方法は以下の通りです。gistのようにSSL (https)で取得するファイルには「ssl.verifypeer = F」でアクセスします。