LoginSignup
1
1

More than 3 years have passed since last update.

RStan のコードを PyStan に移植する際の注意点: COVID-19の論文を例に

Posted at

CAUTION

  • この記事は公衆衛生、疫学、医学の観点からの考察は一切ありません。COVID-19 に関する情報は、専門家の包括的な意見を必ず参照してください。

この記事を書こうとしたモチベーション

  • @Med_KU 氏の blog 紹介 tweet がたまたま目に入ったので、元論文 & supplement(付録物)見てみた
  • 論文の Rstan のコード量が多くないので、こりゃPyStanのリハビリをかねてPythonで書き直してみようと思い立つ三連休初日。COVID-19も話題なので公開すればちょっとバズるんじゃないかとスケベ心が芽生える
  • 1時間くらいで終わるかとおもいきや、鈍った脳みそにはハマりポイントが多数あったので、言語化して誰かに役に立てばと思うのが三連休3日目の朝

PyStan code

https://gist.github.com/koizumihiroo/df83bb72c94153acc4ea9049e395ea93 をご覧ください。

はまったポイント

ぶっちゃけ特にない。method名や引数は Rstan も PyStan も大きくはかわらない。 いうのはウソで次に時間を取った。

  • loo の計算がオフィシャルに提供されていないので、検索に手間取った。最初は stanity.psisloo() を使おうとしたが、返り値が Psisloo class とオリジナルの psisloo と異なるため、 Stan Official Site の loo のpage の一番下の LINK から辿ったオリジナルを使った。
  • sampling() が返す object の annotation を付けようとしたが pystan.StanFit4Model はアクセスできなかった。よくわからん
(Pdb) p type(stanfit)
    <class 'stanfit4anon_model_df568c9723cbf759ca5759b36acb4c6f_2883001500315052076.StanFit4Model'>
  • stan 以外の観点
    • math.gamma() は引数 broad cast できない(array を渡せない)ので scipy.stats.gamma() を使う必要がある
    • Python のワイブル分布が weibull_min weibull_max と二つあることに手間取った
  • gist の code の review をもらいたいです。

以上

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1