2017年4月23日日曜日

RStan(1): Windows で RStan の環境を構築する

お仕事でもお世話になっているRStan。とあるきっかけがあって自分のPCでも環境を整備しようと思いたちました。ブログを書くのも6~7年ぶり。

基本的に↓の要約です。

  1. Rのインストール (R 3.3.3 for widows)
    • 私の場合は昔入れた古いRがあったので、これをまずアンインストールしました。
    • その後、https://cran.ism.ac.jp/ から 
      • Download R for Windows → base
      • ここで普通は一番上のインストーラへのリンクをクリックしますが、後述するRtoolsのバージョンの関係で、一つ前のバージョンをインストールしました。
        • 下の方の Previous releases から R3.3.3 を選択しダウンロード。
    • インストーラは、すべてデフォルト設定で。

  2. Rをインストールした実感を得る
    • 言うまでもなく本項は省略可能です。
    • R x64 3.3.3 を起動する。コンソール画面が出てくる。
    • http://d.hatena.ne.jp/isseing333/20100515/1273928356
    • ↑こちらのサイトにある「set.seed(1)」から始まる部分をコピーして、コンソール画面に貼り付ける。
    • グラフが出てきて、おおおっとなる。
    • Rを終了する。workspaceの保存はどちらでも。

  3. Rtoolsのインストール (Rtools 3.3)
    • Windows用のRのツールチェイン。MinGWなどが含まれます。導入する意味が分からないまま、言われるままにインストール。(おそらく、StanにC++コンパイラが必要だからではないかと予想)
    • https://cran.ism.ac.jp/ へ戻り、Rtoolsへ。
    • インストールしたRとコンパチでFrozenされているバージョンをダウンロード。
    • インストーラは、ほとんどデフォルト設定ですが、環境変数PATHの更新のところだけチェックを入れます。(デフォルトでチェックが入っていないのが謎)
    • 1GB近くデータをインストールされます。気長に待ちます。
    • (余談ですが、RtoolsはC:\直下にフォルダを作ってインストールします。気持ち悪いと思いつつもターゲットパスは変えませんでしたが、気持ち悪いですね)
    • Rtoolsが適切にインストールされたか確認します。以下はR上での確認ですがコマンドプロンプト等でやっても同じはずです。
      • Rを再起動
      • > Sys.getenv("PATH") →RtoolsがPATHに含まれていればOK
      • > system('g++ -v') →インストールしたgccが呼び出されていればOK(gcc 4.6.3でした)
      • > system('where make') →同上

  4. コンパイラ周りの設定 (任意)
    • 元サイトでは「やらなくて良い」とありますが、原文だと「強く推奨する」とあったのでやっておきました。やっていることは、コンパイラオプションを最適化したり、推奨されるワーニングオプションを設定したり、といったもの。設定ファイルを作成(編集)しているだけです。
    • https://github.com/stan-dev/rstan/wiki/Installing-RStan-on-Windows#configuration にある、dotRから始まる8行と、cat('Sys.から始まる3行と、cat("\nCXXFLAGSから始まる2行とを、それぞれRコンソールにコピペするだけ。

  5. RStudioのインストール (RStudio 1.0.143)
  6. RStanパッケージのインストール (RStan 2.15.1)
    • Rを起動し、コンソールに以下をコピペ。
      • > install.packages('rstan', repos='https://cloud.r-project.org/', dependencies=TRUE)
    • BH, Rcpp, RUnit, ggplot2などもインストールされます。
    • RStanが動作することを確認します。4行目以下は一例。
      • > library(rstan)
      • > rstan_options(auto_write = TRUE)
      • > options(mc.cores = parallel::detectCores())
      • > sf <- stan_demo("pump") →ダウンロードに関する選択は1を。
      • > pairs(sf, pars=c("alpha","beta"))
        • それっぽいグラフが出てきます。

0 件のコメント:

コメントを投稿