名前に非ASCII文字を含むユーザーがRを使う方法


注意:名前に非ASCII文字を含まないにもかかわらずうまく行かない場合にも遭遇したことがあります。その時は、セキュリティソフトを一時的にオフにすることで解決できました。

Windowsでは、ユーザー名に非ASCII文字を含めることができますが、ユーザー名が非ASCII文字を含んでいるといろいろ問題が起こります。たとえばRでは、パッケージのインストールに失敗します。

Windows環境で「R」を導入するための絶対確実な方法という記事によると、(1)マルチバイト文字を含まない名前のユーザーを新たに作り、(2)マルチバイト文字を含まない名前のディレクトリにRやRStudioをインストールすればいいそうです。

しかし、ユーザーを作り直すのはかなり大変な作業ですし、そもそも、共有PCなど、管理者権限を使えない状況では不可能です(絶対?)。

そこで、管理者権限が無くても使える、ユーザーを作り直さなくていい方法を紹介しましょう。

RStudioを使わない場合

  1. インストーラのいいなりにRをインストールする。
  2. c:/rlibsのような、ASCII文字だけで構成される名前のディレクトリを作り、環境変数R_LIBS_USERの値がこのディレクトリ名になるようにする。
  3. WIndowsを再起動する。

RStudioを使う場合

  1. Rをアンインストールし、c:/Users/ユーザ名/Documents/Rを削除する。
  2. c:/Rのような、ASCII文字だけで構成される名前のディレクトリを作り、そこにRをインストールする。
  3. c:/RStudioのような、ASCII文字だけで構成される名前のディレクトリにRStudioのzipファイルを展開する(管理者権限がないため、インストーラは使えない)。
  4. c:/tmpのような、ASCII文字だけで構成される名前のディレクトリを作り、環境変数TMPの値がこのディレクトリ名になるようにする。
  5. WIndowsを再起動する。

管理者がアプリをインストールし、標準ユーザーがアプリを利用するという、MacやLinuxでは一般的な運用方法を採用している場合は、次のような方法でも大丈夫です。(環境変数TMPの値を変更しています。ここで指定したディレクトリを削除すると、Excelなど,他のアプリに悪影響があります。)

  1. 管理者としてインストーラを起動し、インストーラのいいなりにRとRStudioをインストールする。
  2. c:/rlibsc:/tmpc:/homec:/ruserのような、ASCII文字だけで構成される名前のディレクトリを作り、環境変数R_LIBS_USERTMPhomeR_USERの値がこれらのディレクトリ名になるようにする。環境変数は、コントロールパネルの検索窓に「PATH」と入れて出てくる「環境変数の編集」をクリックして編集する。ここで挙げた例ならば、次のように設定する。
    変数
    R_LIBS_USER c:/rlibs
    TMP c:/tmp
    home c:/home
    R_USER c:/ruser
  3. WIndowsを再起動する。(不要かも)

Windows 10上のR 3.3.2、RStudio 1.0.136で動作を確認しています。

MacやLinuxに比べると、Windowsはいろいろよくわからない部分があるのは確かですが、ここで扱っている問題は、Windowsの問題というよりは、RやRStudioの問題という気がします(テストが不十分)。WindowsもMacのように、サポート期間を短くして、古いユーザーをどんどん切り捨てていくなら、こういうことは少なくなるのでしょうが。

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で修正されました。

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」でアクセスします。