確率的プログラミング

Numeric.Probability を使う〜Haskellの確率的プログラミング

Haskellで確率密度分布を扱ってランダムサンプリングするときにモナドを使う、という話がある こちらの記事によると、それは遡ること2006年のこちらのペイパーとそれが作成したProbabilistic Fucntional Programming用パッケージが始まりだという。 その後、…

事前分布、事後分布、MCMC

事前分布は、パラメタに分布を仮定し、その尤度が計算できることとして決まる a,b,sdに一様分布を設定し、何か具体的な値に対して、その総合的な対数尤度をlogpriorが返す :{ let logprior :: Double -> Double -> Double -> Double;logprior a b sd = sum […

MCMCをやってみる

こちらのページをやってみる やるために、stackで環境を整える stack new hogeして、そのcabalファイルのmainの必要パッケージを以下のようにする executable pfptest-exe hs-source-dirs: app main-is: Main.hs ghc-options: -threaded -rtsopts -with-rtso…

モナドを使うとは〜Haskellの確率的プログラミング

例えば、ベルヌーイ事象を繰り返して、その結果がどうなるか、というのをHaskellでやるとする ベルヌーイ事象の確率質量分布をモナドで作っていれば、2回繰り返しは、モナドを作って、それを>>=で次に渡して、もうひとつのモナドと合体させてモナドを作れば…