rstan2.10.1が動かない!

 

Stan楽しんでますか。

僕も楽しもうと思ってrstan2.10.1を入れたんですが,動かない・・・

山大の小杉さんのブログを見ていて,「Winヤバイんだろうな・・・大丈夫かな・・・」と思っていたら,案の定ハマりました。今はだいたい見当つきましたが,根本的な原因はよくわかりません。対処法だけお伝えしておきます。

まず,Rのバージョンによってもどうも反応が違うのと,Windowsの設定によっても多分違います。なのでこういうエラーが出たらこうする,という対処しかかけません。PCそれほど強くなくて・・・

この記事の前提

・Windows7,64bit

・rstan2.10.1がインストールできている

 

RとRtoolsのバージョン

Rは2016年7月18日現在,3.3.1が最新です。これに対応するRtoolsのバージョンは34ですが,rstanは34に上手く対応してません。一応エラー回避策もあるようですが,面倒ならR3.2.5で,Rtools33でやるほうがうまくいくっぽいです。RstudioならToolsのGlobal optionから,前のバージョンのRを起動することができます。

一応,3.3.1+Rtools33でも動きます。でもなんか警告がめっちゃでたりする(これもバージョンとかWinの設定によるのかも)ので,僕はRのバージョンを下げました。

 また,Rtools34でもインストール場所を指定することで動くようにもなるそうです。@berobero11さんに教わりました。

 

コンパイルが上手くいっているかを確認

rstanのページに次のコードが走ればC++のコンパイル自体は上手くいってるよ,とのこと。

fx <- inline::cxxfunction( signature(x = "integer", y = "numeric" ) , '
    return ScalarReal( INTEGER(x)[0] * REAL(y)[0] ) ;                           ' )
fx( 2L, 5 ) # should be 10

 これで10が出力されたらOK!

10が出ない場合はエラーを見ていく。

 

エラーパターン1

g++.exe: error: Files/R/R-3.2.2/library/StanHeaders/libs/x64: No such file or directory

原因はわからないけど,パスにスペースが入ってる(Program Filesの間のスペース)ことが悪さしているよう。というわけで,Rを新しくインストールし,そのときにCの直下に(つまりC:\Rに)インストールしましょう。そうすれば,パスにスペースが入らない。

でもこれ,どのPCでも出るエラーじゃないみたいで,謎です。Winの設定の違いなのか・・・ 環境変数のPATHはどっちのPCでも同じにしてあるので,そこは関係ないみたいです。

 

エラーパターン2

cc1plus.exe: error: unrecognized command line option '-ffat-lto-objects'

これは,Makevarsというファイルがどうも悪さをしているらしい。ユーザーの中のマイドキュメントに.Rというフォルダがあって,そこにMakevarsというファイルがあると思うので,そのファイル名を適当に変える(つまり,アクセスできなくする)。それでも動くらしいので,それで解決。

この件は,Twitterで教えてもらいました。感謝です。

 

 

無事解決

以上で,僕は無事rstan2.10.1が動くようになりました。上の二つのエラーは独立したもののようで,僕は両方対処しないとメインPCは動きませんでしたが,ノートPCのほうは同じWin7の64bitにも関わらず,両方ともエラーは出ませんでした。そもそも.RフォルダのMakevarsファイルがノートPCのほうには見当たらないので,別のところにあるのか,そもそも不要なのか,よくわかりません。Rtools34を一度インストールしたことが原因なのかもしれません。謎です。

 

それでも警告はでる

上記をクリアしても,警告は出ます。でも無視して大丈夫みたいです。

C:/R/R-3.2.5/library/StanHeaders/include/stan/math/rev/core/set_zero_all_adjoints.hpp:14:17: warning: 'void stan::math::set_zero_all_adjoints()' defined but not used [-Wunused-function]

 

いろいろお世話になった方々へに感謝しつつ,この記事が,今後苦しむかもしれない方への助けになりますように。

This entry was posted in 心理統計学. Bookmark the permalink.