Windowsにcmdstanrパッケージをインストールする方法(OneDrive問題解決法)

最近のバージョンになって、cmdstanrパッケージがWindowsでも入れられるようになりました。

ただ、いくつか注意が必要なこともあるのでそのことをまとめておきます。この部分はWindowsユーザーの人にしか関係がないところが多いので、Macやその他のOSユーザーの方はそれほど苦労せずに入れられると思います。たとえばMacへの入れ方は、柏原君の記事が役立ちます。

macOS 10.15 CatalinaにCmdStanRをインストールする方法、エラーへの対処法

この記事では、Windowsにcmdstanrの入れ方について書きます。

あと、OneDriveをWindowsに入れている人で、組織アカウント名が日本語の場合などに、そもそもRにパッケージが入れられなかったり、cmdstanrをいれたりができないことがあります。

その問題の解決法についても解説します。が、レジストリを変えるので注意してやってください。そのあたりは自己責任でお願いします。

 

◆cmdstanrって何

最近cmdstanrパッケージがでてきて、Stanチームもrstanよりをこっちを推している感じがすごいします。cmdstanrそのものの説明は、別の記事に書いているので、そちらを見てもらったらいいのですが、この記事でもcmdstanrの紹介部分を抜粋しておきます。

まず、cmdstanrについて。これは、rstanのようにRのパッケージの一つです。rstanとは別に、Stanを動かすことができるパッケージなんです。なぜそれが生まれたかといえば、上述のrstanの依存パッケージが増えたことの問題と、cmdstanのバージョンアップについていけなくなったことの問題があります。

そこでcmdstanをR上で動かすだけ、という非常にシンプルなパッケージが登場しました。cmdstanrは、cmdstanを別にインストールする形式を取るので、cmdstanがバージョンアップしたら、それに合わせて変更することができます。つまり、パッケージのバージョンアップをせずとも最新のStanを使うことができるのです。また、コンパイルにRcppを使わないので、rstanよりコンパイルが早いです。これも結構重要なメリットです。

こんな感じです。

 

cmdstanrパッケージそのものはできることは少ないのですが、同じくStanチームが開発しているbayesplotパッケージとの相性がよくて、それらを合わせるとrstanとほぼ同じ感覚で使えます。

そのこともあって、僕は最近はrstanよりはcmdstanrのほうが軽くていいなーという感じです。

 

◆Windowsにcmdstanrパッケージを入れる

当初は、MacやUbuntuには簡単に入れられたんですが、どうもWindowsにはいれられなかったんですね。それが、最近解決しまして。入れられるようになりました。

ただ、Windowsにいれるときにはいろいろ躓きポイントもあるので、それをまとめつつ、解決法を書いておきます。

※この段階で、OneDriveをいれていて、かつ、そのアカウントが日本語の人は、下のOneDriveのドキュメント問題のところを先に見てください。そのあと戻ってきてもらえればと思います。二度手間になるので。

 

まず、rstanと同じく、cmdstanrでもRtoolsが必要です。Rtoolsはどうもバージョン40から、つまりR4.0以降対応のものから、パスの設定が自動ではやってくれなくなりました。原因はわかりません。なので、またもや手動でパスの設定をしないといけないので、そこが第一につまづきポイントです。

RとRtools40をいれたら、Win10のスタートメニューの「設定」から、「システム」を選んで、左の一番下にある「詳細情報」を選び、今度は右側の下のほうにある「システムの詳細設定」を選びます。

するとシステムのプロパティが別ウィンドウで立ち上がるので、下のほうにある「環境変数」を選びます。

ユーザー環境変数のPathをダブルクリックすると、今登録されているパスが出てきます。そこで、「新規」をクリックして、「C:\rtools40\usr\bin」を入力して、OKをおしてください。これでRtools40のパスの設定ができました。

これができたら、Rを(Rstudioの人はそれを)立ち上げて、cmdstanrパッケージを入れます。基本的にはGetting started with CmdStanRの記事通りにやればいいのですが、ここでもかいつまんで説明します。

まず以下のコマンドでcmdstanrをインストールします。このコマンド通りじゃないと、現状ではインストールできませんので注意。

 

インストール出来たら、ライブラリを起動

 

次に、次のコマンドを走らせます。

 

ここで

と表示されたらOKなんですが、おそらく、たいていのWindowsユーザーはこのコメントが出ず、エラーが出ます。そこで、エラーメッセージ通り、次のコードを走らせます。

 

ここで、Rtools40のパスが通っていれば、うまくいくはずです。

・・・が、それでもコケる人がいるかもしれません。それは、OneDriveのドキュメント問題の可能性があります。もし、この段階でOneDrive ?????/?????? 以下略にアクセスできませんと出てきたら、後で書くように、OneDriveのドキュメントフォルダの問題でうまくいきません。というか、OneDriveを同期している人は、Rのパッケージのインストールもコケていたかも(管理者で起動したらうまくいくのですが、根本的な解決にはなっていない)。その問題は後で書きます。

 

さて、ここでうまくいっていたら、次のステップです。cmdstanrパッケージは、cmdstanをRから動かすパッケージであって、これ自体はMCMCをやる機能を持っていません。MCMCをやるためにはcmdstanを別にインストールする必要があります。

次のコードを走らせます。

これはそこそこ時間がかかります。トイレ行くぐらいはできると思います。

cmdstanのインストールができたら、完了です。これで動くはず。一応、cmdstanのバージョンを確認しましょう。

 

さて、では適当なStanコードをコンパイルしてみて、走るか確認してみましょう。

 

どうでしょうか。走ったでしょうか。

おおよそこんな結果が出てればOKです!

 

◆OneDriveのドキュメント問題の解決

さて、最近OneDriveを使っている人も多いと思います。僕が働いている関西学院大学ではOneDriveを組織的に導入しているので、僕も仕事上PCにOneDriveを入れています。

さて、そのときに起きるのが、ドキュメント問題です。WindowsにOneDriveを入れて同期すると、ドキュメントフォルダが自動的にOneDrive内部に移動されます。そして、OneDriveのアカウント名に日本語が入っていると、パッケージにインストールやcmdstanrのパスの設定などがうまくいきません。

個人のアカウントなら変えればいいのですが、組織アカウントだとそうもいきません。そこで、以下の方法で、ドキュメントフォルダをOneDriveから、ユーザーフォルダに戻してやることで解決します。ただ、レジストリをイジるので注意しながらやってください。パソコンが苦手な人は、やらないほうがいいかもしれません。

さて、以下の記事を見ていただいたら、基本的にはOKなんですが、この記事の最後の部分だけちょっと違います。

Windows 10でドキュメントフォルダがOneDriveのドキュメントにリンクされてしまったときの修正方法

 

要は、レジストリエディタで、パーソナルフォルダがOneDrive内になっているのを、元に戻してやるだけです。上の記事を参考にregedit.exeを起動します。Windowsの検索から、regedit.exeと入力すればすぐ出てきます。管理者権限がいるので、「はい」と答えます。

で、場所は

コンピューター\HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders

です。左側のフォルダを順にたどってもいいし、上にアドレスをはってもいいです。その中のpersonalの項目を見てください。おそらくOneDrive-組織名 で終わるパスになってると思います。それを、

C:\Users\[ユーザー名]\Documents

に変えましょう。[ユーザー名]のところは、ご自身のユーザー名を入れてください。あと、そもそもユーザー名が日本語なら、これを変えても同じエラーが出るので注意が必要です。

これでOSが認識するパーソナルフォルダが変わり、Rstudioもそこにパッケージを入れてくれるようになります。逆に言えば、いまRを立ち上げるとパッケージが何もない状態になってると思います。それは、パッケージ自体をパーソナルフォルダに探しに行くからです。面倒ですが、もう一度パッケージをインストールしなおしましょう。

 

次には、cmdstanrの使い方についてまとめた記事でも書こうと思います。

 

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