Kosugitti's BLOG

アンドロイドは正規分布の夢を見るか

この画面は、簡易表示です

stan

rstan2.6登場〜

rstan2.6が来ましたねえ。今度rstanの導入を人前で話すので,このタイミングでの登場はありがたいかなあ(直前にこられたら対応できないもんね)。

ということで,いつものベンチマーク。今回は,最近見つけたんだけど,rstanの本家サイトで並列化処理のやり方が書いてあったので,これは,と思って取り入れてみました。

関数の前と後ろにproc.time()関数で時間を取って引き算したので,コンパイルも含めて実際にかかった時間がわかるという寸法よ。

まずは母艦から。

rstan2.6Mac

 

やったぜ。速いぜ。15秒ぐらいで出来るようです。あ,数字の「経過」のところが所要時間。上が非並列,下が並列化した数字です。サンプリングそのものは遅いみたいだけど,全体としてはかなり早い印象。あと,並列化すると結果がいっぺんにドバッと出てきて面白いね。

次にUbuntu.MacのParallels10から使ってます。これに8コア,メモリはありったけ(仮想の上限?27764MB)与えてやってみたらこんな感じ。34〜37秒で終わっているようです。

rstan2.6Ubuntu

 

最後にWindows(via Parallels 10)。これも8コアで,メモリも仮想マシンにありったけ(27764MB)のせてます。で,並列処理の書き方が他とちょっと違うので,これで8コアちゃんと使えているのか自信がないけど。43〜44秒ってとこですね。

 

rstan2.6_win

 

ということで,結果はMac>Ubuntu>Windowsとなったわけです。今まではコンパイルの時間を入れてなかったから?Macが遅いかなあと思っていたんだけど,こうしてみるとそうでもないんだよねー。仮想マシンはやっぱり実機にかてるわけじゃないのか。

あと,共通して,並列処理させてもそんなに結果が変わらないってことがわかりますね。

ひとまず。



今月のお知らせ

  • お知らせのページを管理運営するのが面倒なのでブログの中に入れました。
  • 第二回ベイズ推定ワークショップ-stanによるベイズ推定の可能性と課題-(2015.03.04)に登壇予定です。rstanの導入部分を解説します。ワークショップの詳細については「魁!!広島ベイズ塾」のサイトからお問い合わせください。


Rstan2.5登場

rstanの2.5が来たよ,というtweetをTLで見つけたので早速導入しました。

先日Mac OSを(よせばいいのに新しいもの好きで)Yosemiteにあげたので意識してなかったけど,Xcodeも上がっているので(あげたなら),一度Xcodeを立ち上げてAppleのライセンス条項に同意しないとコンパイラがエラーを吐きます。まだダメよ,って。

そこに気づかなかったのでちょっと時間がかかりましたが,そこをクリアするとインストールそのものは順調にいきました。

っていうか,2.5からはCRANで提供するっていう噂があったんだけどなあ。

 

とまれ,仮想環境も含めて三つのOSでのベンチマークです。サンプルコード8schoolの最後のチェインだけスクリーンショット。

今回は驚いたことに,Macでも遜色ないスピードが出ている。仮想環境の方が倍ほどおそいぐらいだよね。

これはYosemiteのおかげなのか,Xcodeのおかげなのか,rstanのおかげなのか・・・

on Mac(Yosemite)

スクリーンショット 2014-10-22 14.33.01

on Windows8.1(on Mac/ Parallels 10)

スクリーンショット 2014-10-22 14.32.50

on Ubuntu14.04(on Mac/ Parallels 10)

スクリーンショット 2014-10-22 14.44.45



共通教育心理学の採点手続き

この記事は,RStudioで作成され,knitrやRWordPressでRStudioからポストされたものです。
何事も実験してみたい年頃!w


準備段階

データを読み込む。

通過率は平均でわかる。高い。

得点の分布を見る。まあまあ正規分布かしら?

plot of chunk unnamed-chunk-3

項目反応理論をベイズ推定して採点

さて,では項目反応理論のMCMCといきましょうか。MCMCpackを使うとすぐにできる。

rstanは趣味人の世界

けど,あえてrstanを使うのがロマンってもんよね。

ここで中央値を推定されたスコアだとして抽出。素点との相関関係を見てみよう。

plot of chunk unnamed-chunk-6

ほぼ相関している・・・。まあ分析しなくてもおんなじってことですね。それをあえてするのは、ロマンだからですね。
一応ヒストグラムと正規分布の当てはめを書き加えてみましょうか。

plot of chunk unnamed-chunk-7

最後の処理

これで平均を調製して、段階に書き換えれば採点は終了です。

あとはファイルに書き出したり、名簿ファイルにマージしたりする作業がありますね。余談的ではありますが、書いておきます。

はい、おしまい。
本学の場合,システムから名簿.csvを落として来れるんだけど,Shift-JISのおかしなゴミのいっぱい入ったファイルなので、実はこの後のマージが大変だったりするのですが,まあそれは本稿と趣旨がずれますので。



Rstan2.4.0お目見え

更新のペースが早いなあ!と思ってます。Rstanが一ヶ月でアップデート(前回の記事はこちら)

新しい物好きなのでとりあえず入れてみました。で,MacとWin(仮想)とUbuntu(仮想)でベンチマーク。サンプルの8schoolsね。

印象としては,Macの一人負けだったのがだいぶん改善されたって感じ。でもやっぱりUbuntuのコンパイラとの相性が一番いいみたい。

インストールは楽になったけど,Macでやると二つほどWarningがでるから,その辺がなんかあるのかもなー。まあRstanを使うときは割り切ってUbuntu環境下でやるからいいんだけど。

 

Ubuntu

rstan2.4Ubuntu

 

 

 

Mac

Rstan2.40Mac

Windows

Rstan2.40win



rstan2.3.0お目見え

昨日ちょうどstanコードの比較云々の記事を書いたのだけど,月曜日にrstanが2.3にバージョンアップしてたのねえ。(本家サイトはこちら

しかも,インストールの方法が楽になった!たった数行コードをコピペするだけでできたよ(もちろんRcppなどコンパイル環境が整っている必要があるけれども)。インストール時にRcppやinlineも一緒にコンパイルするようになっているから,以前のエントリーで書いたような問題は気にせずに進めるようになってるよ。

 

ちなみに,新しいバージョンでの測度比較してみた。サンプルコードの8schoolsなんだけど,やはり仮想環境のUbuntuが最速,次いで仮想のWindows,最後にMacだったなあ。

MacでもCPU最適化してくれんかねえ。

 

Ubuntu

スクリーンショット 2014-06-25 13.38.04

Windows

スクリーンショット 2014-06-25 13.38.16

Mac

スクリーンショット 2014-06-25 13.38.28




top