2
誰でも、PArallel SAmpler GEneratorを使用しましたか?パッセージ:使用例
潜在的には私にとって非常に役に立つかもしれませんが、私が見つけた唯一のドキュメントはGithub(https://github.com/cscherrer/passage)の3行のREADMEとHackageの簡潔なAPIです。
これを実行する方法の簡単な例は素晴らしいでしょう!
誰でも、PArallel SAmpler GEneratorを使用しましたか?パッセージ:使用例
潜在的には私にとって非常に役に立つかもしれませんが、私が見つけた唯一のドキュメントはGithub(https://github.com/cscherrer/passage)の3行のREADMEとHackageの簡潔なAPIです。
これを実行する方法の簡単な例は素晴らしいでしょう!
Passageには、2つの重要なモナドがあります(BayesianNetwork
およびBayesianSimulator
)。
まず、あなたはBayesianNetworkモナドでモデルを構築する:
myModel :: Int -> BayesianNetwork (Node, Node, [Node])
myModel n = do
mu <- normal 0 0.001
tau <- improperScale
xs <- replicateM n $ normal mu tau
return (mu, tau, xs)
これは、生成モデルとして指定されているので、ランダムではないもの(ここではデータポイントn
の数)として渡されなければなりませんパラメータ。あるいは、n
に分布を置くことができました。
次に、我々はモデルを呼び出しますシミュレータの構築:最後に
mySim :: [Double] -> BayesianSimulator()
mySim xs0 = do
setThreadNum 4
let n = length xs0
(mu, tau, xs) <- model $ myModel n
forM (zip xs xs0) $ \(x, x0) -> observe x x0
monitor mu
monitor tau
を、いくつかのデータ取る:
xs0 = [1, -1, 2, 2, 2, -2]
をしてsimluatorを実行します。
main = genSimulator "myExample" (mySim xs0)
はこれが作成されます新しいディレクトリmyExample
とサンプラー用のOpenMPコード。