{ "cells": [ { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "Stochaskell, version 0.1.0\n", "Copyright (C) 2015-2020 David A Roberts\n", "This program comes with ABSOLUTELY NO WARRANTY.\n", "This is free software, and you are welcome to redistribute it\n", "under certain conditions; see the LICENSE for details.\n", "\n", "Using installation directory at \n", " /home/jovyan/stochaskell" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ ":set -XFlexibleContexts -XMonadComprehensions -XNoImplicitPrelude -XRebindableSyntax\n", "import Language.Stochaskell\n", "stochaskell" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [], "source": [ ":opt svg\n", "import Language.Stochaskell.Plot" ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [], "source": [ "poissonProc :: R -> P R -> P RVec\n", "poissonProc m f = do\n", " n <- poisson m\n", " xs <- orderedSample n f\n", " return xs" ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [], "source": [ "poissonProcHomo :: R -> R -> P RVec\n", "poissonProcHomo rate t = do\n", " poissonProc (rate * t) (uniform 0 t)" ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "[0.9716267457678796,1.5309201571040059,2.0869329893499335,3.5964876124419183,4.223162045679379]" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "simulate (poissonProcHomo 1 5)" ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [ { "data": { "image/png": "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", "image/svg+xml": [ "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", " \n", "\n", "\n", " \n", "\n", "\n", " \n", "\n", "\n", " \n", "\n", "\n", " \n", "\n", "\n", " \n", "\n", "\n", " \n", "\n", "\n", " \n", "\n", "\n", " \n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", " \n", "\n", "\n", " \n", "\n", "\n", " \n", "\n", "\n", " \n", "\n", "\n", " \n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", " \n", "\n", "\n", " \n", "\n", "\n", " \n", "\n", "\n", " \n", "\n", "\n", " \n", "\n", "\n", " \n", "\n", "\n", " \n", " \n", " \n", " \n", "\n", "\n", "\n" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "samples <- sequence [simulate (poissonProcHomo 1 5) | i <- [1..5]]\n", "toRenderable $ do\n", " sequence_ $ plotStep \"\" (0,5) . list <$> samples\n", " xlabel \"Time\"\n", " ylabel \"Cumulative number of events\"" ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [], "source": [ "gp :: (R -> R -> R) -> Z -> RVec -> P RVec\n", "gp kernel n x = do\n", " let mu = vector [ 0 | i <- 1...n ]\n", " cov = matrix [ kernel (x!i) (x!j) | i <- 1...n, j <- 1...n ]\n", " g <- normal mu cov\n", " return g" ] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [], "source": [ "kernelSE1 = kernelSE (log 1) (log 1)\n", "\n", "kernelSE lsv lls2 a b =\n", " exp (lsv - (a - b)^2 / (2 * exp lls2))\n", " + if a == b then 1e-6 else 0" ] }, { "cell_type": "code", "execution_count": 9, "metadata": {}, "outputs": [ { "data": { "image/png": "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", "image/svg+xml": [ "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", " \n", "\n", "\n", " \n", "\n", "\n", " \n", "\n", "\n", " \n", "\n", "\n", " \n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", " \n", " \n", "\n", "\n", " \n", " \n", "\n", "\n", " \n", " \n", "\n", "\n", " \n", "\n", "\n", " \n", "\n", "\n", " \n", "\n", "\n", " \n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", " \n", "\n", "\n", " \n", "\n", "\n", " \n", "\n", "\n", " \n", "\n", "\n", " \n", "\n", "\n", " \n", " \n", "\n", "\n", "\n" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "let test = list [i/10 | i <- [0..100]]\n", "samples <- sequence [simulate (gp kernelSE1 101 test) | i <- [1..5]]\n", "toRenderable $ sequence [plot $ line \"\" [test `zip` list ys] | ys <- samples]" ] }, { "cell_type": "code", "execution_count": 10, "metadata": {}, "outputs": [], "source": [ "normalChol :: Z -> RVec -> RMat -> P RVec\n", "normalChol n mu cov = do\n", " w <- joint vector [ normal 0 1 | i <- 1...n ]\n", " return (mu + chol cov #> w)" ] }, { "cell_type": "code", "execution_count": 11, "metadata": {}, "outputs": [], "source": [ "gpChol :: (R -> R) -> (R -> R -> R) -> Z -> RVec -> P RVec\n", "gpChol expect kernel n x = do\n", " let mu = vector [ expect (x!i) | i <- 1...n ]\n", " cov = matrix [ kernel (x!i) (x!j) | i <- 1...n, j <- 1...n ]\n", " g <- normalChol n mu cov\n", " return g" ] }, { "cell_type": "code", "execution_count": 12, "metadata": {}, "outputs": [ { "data": { "image/png": "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", "image/svg+xml": [ "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", " \n", "\n", "\n", " \n", "\n", "\n", " \n", "\n", "\n", " \n", "\n", "\n", " \n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", " \n", " \n", "\n", "\n", " \n", " \n", "\n", "\n", " \n", " \n", "\n", "\n", " \n", " \n", "\n", "\n", " \n", "\n", "\n", " \n", "\n", "\n", " \n", "\n", "\n", " \n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", " \n", "\n", "\n", " \n", "\n", "\n", " \n", "\n", "\n", " \n", "\n", "\n", " \n", "\n", "\n", " \n", " \n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "\n", "\n", "\n" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "samples <- sequence [simulate (gpChol (const 0) kernelSE1 101 test) | i <- [1..5]]\n", "toRenderable $ do\n", " sequence_ [plot $ line \"\" [test `zip` list ys] | ys <- samples]\n", " xlabel \"Function input value\"\n", " ylabel \"Function output value\"" ] }, { "cell_type": "code", "execution_count": 13, "metadata": {}, "outputs": [], "source": [ "gpClassifier :: (R -> R -> R) -> Z -> RVec -> P (RVec,BVec)\n", "gpClassifier kernel n x = do\n", " g <- gpChol (const 0) kernel n x\n", " phi <- joint vector [ bernoulliLogit (g!i) | i <- 1...n ]\n", " return (g,phi)" ] }, { "cell_type": "code", "execution_count": 14, "metadata": {}, "outputs": [], "source": [ "model :: R -> P (Z,RVec,RVec,BVec)\n", "model rate = do\n", " x <- poissonProcHomo rate 10\n", " let n = vectorSize x\n", " (y,z) <- gpClassifier kernelSE1 n x\n", " return (n,x,y,z)" ] }, { "cell_type": "code", "execution_count": 15, "metadata": {}, "outputs": [ { "data": { "image/png": "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", "image/svg+xml": [ "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", " \n", " \n", "\n", "\n", " \n", " \n", " \n", " \n", "\n", "\n", " \n", " \n", "\n", "\n", " \n", " \n", " \n", " \n", "\n", "\n", " \n", "\n", "\n", " \n", " \n", " \n", "\n", "\n", " \n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", " \n", "\n", "\n", " \n", "\n", "\n", " \n", "\n", "\n", " \n", "\n", "\n", " \n", "\n", "\n", " \n", " \n", "\n", "\n", "\n" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "(n,x,y,z) <- simulate (model 10)\n", "toRenderable . plot $ line \"\" [list x `zip` list y]" ] }, { "cell_type": "code", "execution_count": 16, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "--- Generating Stan code ---\n", "functions {\n", " // https://github.com/stan-dev/stan/issues/452\n", " real to_real(real x) { return x; }\n", "}\n", "data {\n", " int x_stan_0_0;\n", " vector[x_stan_0_0] x_stan_0_1;\n", " \n", " int x_stan_0_3[x_stan_0_0];\n", "}\n", "parameters {\n", " \n", " \n", " vector[x_stan_0_0] x_stan_0_2;\n", " \n", "}\n", "model {\n", " \n", " vector[x_stan_0_0] v_0_1;\n", " \n", " matrix[x_stan_0_0,x_stan_0_0] v_0_3;\n", " matrix[x_stan_0_0,x_stan_0_0] v_0_4;\n", " \n", " vector[x_stan_0_0] v_0_6;\n", " vector[x_stan_0_0] v_0_7;\n", " \n", " for (i_1_1 in 1:x_stan_0_0) {\n", " \n", " v_0_1[i_1_1] = 0;\n", " }\n", " \n", " for (i_1_1 in 1:x_stan_0_0) for (i_1_2 in 1:x_stan_0_0) {\n", " real v_1_0;\n", " real v_1_1;\n", " real v_1_2;\n", " real v_1_3;\n", " real v_1_4;\n", " int v_1_5;\n", " real v_1_6;\n", " real v_1_7;\n", " v_1_0 = x_stan_0_1[i_1_1] - x_stan_0_1[i_1_2];\n", " v_1_1 = v_1_0 .* v_1_0;\n", " v_1_2 = to_real(v_1_1) ./ to_real(2);\n", " v_1_3 = -(v_1_2);\n", " v_1_4 = exp(v_1_3);\n", " v_1_5 = x_stan_0_1[i_1_1] == x_stan_0_1[i_1_2];\n", " v_1_6 = v_1_5 ? 1.0e-6 : 0;\n", " v_1_7 = v_1_4 + v_1_6;\n", " v_0_3[i_1_1, i_1_2] = v_1_7;\n", " }\n", " v_0_4 = cholesky_decompose(to_matrix(v_0_3));\n", " \n", " v_0_6 = to_matrix(v_0_4) * to_vector(x_stan_0_2);\n", " v_0_7 = v_0_1 + v_0_6;\n", "\n", " \n", " \n", " for (i_1_1 in 1:x_stan_0_0) {\n", " x_stan_0_2[i_1_1] ~ normal(0, 1);\n", " }\n", " for (i_1_1 in 1:x_stan_0_0) {\n", " x_stan_0_3[i_1_1] ~ bernoulli_logit(v_0_7[i_1_1]);\n", " }\n", "}\n", "\n", "make -C /home/jovyan/stochaskell/cmdstan /home/jovyan/stochaskell/cache/stan/model_7569d5f54491ccd122205a025152ebf820b7d76f\n", "make[1]: Entering directory '/home/jovyan/stochaskell/cmdstan'\n", "\n", "--- Translating Stan model to C++ code ---\n", "bin/stanc --o=/home/jovyan/stochaskell/cache/stan/model_7569d5f54491ccd122205a025152ebf820b7d76f.hpp /home/jovyan/stochaskell/cache/stan/model_7569d5f54491ccd122205a025152ebf820b7d76f.stan\n", "Model name=model_7569d5f54491ccd122205a025152ebf820b7d76f_model\n", "Input file=/home/jovyan/stochaskell/cache/stan/model_7569d5f54491ccd122205a025152ebf820b7d76f.stan\n", "Output file=/home/jovyan/stochaskell/cache/stan/model_7569d5f54491ccd122205a025152ebf820b7d76f.hpp\n", "\n", "--- Compiling, linking C++ code ---\n", "g++ -std=c++1y -pthread -Wno-sign-compare -O3 -I src -I stan/src -I stan/lib/stan_math/ -I stan/lib/stan_math/lib/eigen_3.3.3 -I stan/lib/stan_math/lib/boost_1.69.0 -I stan/lib/stan_math/lib/sundials_4.1.0/include -DBOOST_RESULT_OF_USE_TR1 -DBOOST_NO_DECLTYPE -DBOOST_DISABLE_ASSERTS -DBOOST_PHOENIX_NO_VARIADIC_EXPRESSION -c -x c++ -o /home/jovyan/stochaskell/cache/stan/model_7569d5f54491ccd122205a025152ebf820b7d76f.o /home/jovyan/stochaskell/cache/stan/model_7569d5f54491ccd122205a025152ebf820b7d76f.hpp\n", "g++ -std=c++1y -pthread -Wno-sign-compare -O3 -I src -I stan/src -I stan/lib/stan_math/ -I stan/lib/stan_math/lib/eigen_3.3.3 -I stan/lib/stan_math/lib/boost_1.69.0 -I stan/lib/stan_math/lib/sundials_4.1.0/include -DBOOST_RESULT_OF_USE_TR1 -DBOOST_NO_DECLTYPE -DBOOST_DISABLE_ASSERTS -DBOOST_PHOENIX_NO_VARIADIC_EXPRESSION src/cmdstan/main.o stan/lib/stan_math/lib/sundials_4.1.0/lib/libsundials_nvecserial.a stan/lib/stan_math/lib/sundials_4.1.0/lib/libsundials_cvodes.a stan/lib/stan_math/lib/sundials_4.1.0/lib/libsundials_idas.a /home/jovyan/stochaskell/cache/stan/model_7569d5f54491ccd122205a025152ebf820b7d76f.o -o /home/jovyan/stochaskell/cache/stan/model_7569d5f54491ccd122205a025152ebf820b7d76f\n", "make[1]: Leaving directory '/home/jovyan/stochaskell/cmdstan'\n", "--- Sampling Stan model ---\n", "/home/jovyan/stochaskell/cache/stan/model_7569d5f54491ccd122205a025152ebf820b7d76f method=sample num_samples=1000 num_warmup=1000 save_warmup=0 thin=1 adapt engaged=1 algorithm=hmc engine=nuts max_depth=10 metric=diag_e stepsize=1.0 stepsize_jitter=0.0 data file=/tmp/stan-3387388d1f5fd324/stan.data init=0 output file=/tmp/stan-3387388d1f5fd324/stan.csv\n", "method = sample (Default)\n", " sample\n", " num_samples = 1000 (Default)\n", " num_warmup = 1000 (Default)\n", " save_warmup = 0 (Default)\n", " thin = 1 (Default)\n", " adapt\n", " engaged = 1 (Default)\n", " gamma = 0.050000000000000003 (Default)\n", " delta = 0.80000000000000004 (Default)\n", " kappa = 0.75 (Default)\n", " t0 = 10 (Default)\n", " init_buffer = 75 (Default)\n", " term_buffer = 50 (Default)\n", " window = 25 (Default)\n", " algorithm = hmc (Default)\n", " hmc\n", " engine = nuts (Default)\n", " nuts\n", " max_depth = 10 (Default)\n", " metric = diag_e (Default)\n", " metric_file = (Default)\n", " stepsize = 1 (Default)\n", " stepsize_jitter = 0 (Default)\n", "id = 0 (Default)\n", "data\n", " file = /tmp/stan-3387388d1f5fd324/stan.data\n", "init = 0\n", "random\n", " seed = -1 (Default)\n", "output\n", " file = /tmp/stan-3387388d1f5fd324/stan.csv\n", " diagnostic_file = (Default)\n", " refresh = 100 (Default)\n", "\n", "\n", "Gradient evaluation took 0.003398 seconds\n", "1000 transitions using 10 leapfrog steps per transition would take 33.98 seconds.\n", "Adjust your expectations accordingly!\n", "\n", "\n", "Iteration: 1 / 2000 [ 0%] (Warmup)\n", "Iteration: 100 / 2000 [ 5%] (Warmup)\n", "Iteration: 200 / 2000 [ 10%] (Warmup)\n", "Iteration: 300 / 2000 [ 15%] (Warmup)\n", "Iteration: 400 / 2000 [ 20%] (Warmup)\n", "Iteration: 500 / 2000 [ 25%] (Warmup)\n", "Iteration: 600 / 2000 [ 30%] (Warmup)\n", "Iteration: 700 / 2000 [ 35%] (Warmup)\n", "Iteration: 800 / 2000 [ 40%] (Warmup)\n", "Iteration: 900 / 2000 [ 45%] (Warmup)\n", "Iteration: 1000 / 2000 [ 50%] (Warmup)\n", "Iteration: 1001 / 2000 [ 50%] (Sampling)\n", "Iteration: 1100 / 2000 [ 55%] (Sampling)\n", "Iteration: 1200 / 2000 [ 60%] (Sampling)\n", "Iteration: 1300 / 2000 [ 65%] (Sampling)\n", "Iteration: 1400 / 2000 [ 70%] (Sampling)\n", "Iteration: 1500 / 2000 [ 75%] (Sampling)\n", "Iteration: 1600 / 2000 [ 80%] (Sampling)\n", "Iteration: 1700 / 2000 [ 85%] (Sampling)\n", "Iteration: 1800 / 2000 [ 90%] (Sampling)\n", "Iteration: 1900 / 2000 [ 95%] (Sampling)\n", "Iteration: 2000 / 2000 [100%] (Sampling)\n", "\n", " Elapsed Time: 35.3845 seconds (Warm-up)\n", " 22.6767 seconds (Sampling)\n", " 58.0612 seconds (Total)\n", "\n", "Stan took 58.08748379s\n", "# stan_version_major = 2\n", "# stan_version_minor = 20\n", "# stan_version_patch = 0\n", "# model = model_7569d5f54491ccd122205a025152ebf820b7d76f_model\n", "# method = sample (Default)\n", "# sample\n", "# num_samples = 1000 (Default)\n", "# num_warmup = 1000 (Default)\n", "# save_warmup = 0 (Default)\n", "# thin = 1 (Default)\n", "# adapt\n", "# engaged = 1 (Default)\n", "# gamma = 0.050000000000000003 (Default)\n", "# delta = 0.80000000000000004 (Default)\n", "# kappa = 0.75 (Default)\n", "# t0 = 10 (Default)\n", "# init_buffer = 75 (Default)\n", "# term_buffer = 50 (Default)\n", "# window = 25 (Default)\n", "# algorithm = hmc (Default)\n", "# hmc\n", "# engine = nuts (Default)\n", "# nuts\n", "# max_depth = 10 (Default)\n", "# metric = diag_e (Default)\n", "# metric_file = (Default)\n", "# stepsize = 1 (Default)\n", "# stepsize_jitter = 0 (Default)\n", "# id = 0 (Default)\n", "# data\n", "# file = /tmp/stan-3387388d1f5fd324/stan.data\n", "# init = 0\n", "# random\n", "# seed = -1 (Default)\n", "# output\n", "# file = /tmp/stan-3387388d1f5fd324/stan.csv\n", "# diagnostic_file = (Default)\n", "# refresh = 100 (Default)\n", "# Adaptation terminated\n", "# Step size = 0.307326\n", "# Diagonal elements of inverse mass matrix:\n", "# 0.454784, 0.609914, 0.892531, 0.966999, 0.975292, 0.813568, 0.984162, 1.12342, 0.791994, 0.867618, 1.05041, 0.97575, 0.893809, 0.841702, 1.12326, 0.842975, 0.919122, 0.968328, 0.965005, 0.985369, 1.04096, 1.03149, 1.04123, 0.96826, 0.933623, 0.949133, 1.01007, 0.946262, 0.889816, 1.06354, 0.783898, 1.04882, 1.02299, 0.792839, 0.916242, 0.744308, 1.03046, 0.849252, 0.926423, 0.955199, 0.888793, 0.855933, 1.03896, 1.06476, 0.829021, 0.981326, 1.05203, 0.818894, 0.715086, 0.763326, 0.99942, 1.00893, 0.918666, 0.93359, 1.00808, 1.14396, 0.888619, 1.01575, 0.837915, 0.97647, 0.853298, 0.777611, 0.806646, 0.861312, 0.893244, 1.03236, 0.990303, 1.00321, 0.954213, 0.904326, 0.957451, 1.01408, 0.920718, 0.87331, 0.820142, 0.902128, 1.14986, 0.867055, 1.05263, 0.887892, 0.893434, 1.02279, 0.98857, 1.10319, 1.07899, 1.0448, 1.02726, 1.00964, 1.01895, 1.0081, 1.00302, 0.899133, 1.00881, 1.0358, 1.01014, 0.985071, 0.990859, 0.900477, 1.02481, 0.970945, 0.956314, 1.04053\n", "# \n", "# Elapsed Time: 35.3845 seconds (Warm-up)\n", "# 22.6767 seconds (Sampling)\n", "# 58.0612 seconds (Total)\n", "# \n", "\n", "Extracting: v_0_7\n", "--- Removing temporary files ---" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "samples <- hmcStan 1000 [y' | (n',x',y',z') <- model 5, n' == n, x' == x, z' == z]" ] }, { "cell_type": "code", "execution_count": 17, "metadata": {}, "outputs": [ { "data": { "image/png": "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2rZXYZGqZLvQgbS4l/D7/Xq9Xhi5XyVVLvr2KixStW0vz6WTyaTP52ttbcUtPM+Hw2G73c6yrHSCPud5DD5H/H7/v/3bv7355puD7plDISgUCqWayMkqDrJOunTp0j//+c8A8OGHH7a3tycSifPOO++GG24488wz1ZSjOBWiUCiUKiaHvmsmk5k9e/akSZNuvfXWkpaJQqFQaogczOgHH3xw6qmntre348eHH3541qxZJSsYhUKh1Aa17RFGoVAoFYfG1FMoFEpBUDNKoVAoBUHNKIVCoRQENaMUCoVSENSMUigUSkFQM0qhUCgFQc0ohUKhFERJzOiaNWu6urqOPvrohQsXluL81ca+fftOO+20jo6OESNG/OlPf6p0ccoHx3GTJk06+eSTK12QcuDxeM4999zW1tZjjjnmiy++qHRxysGjjz46ZsyYMWPGzJw5E/PDHsZccsklTqdTqGSXgx3LNTXJoHAcd8wxx3z11Vcsy5544okfffRR0S9Rbezdu/fDDz/keb6/v7+9vf2bb76pdInKxLJly/7jP/7jxz/+caULUg5mz559zz33cBwXCoUGBgYqXZyS4/P5mpubfT4fz/OXXHLJ0qVLK12i0rJ27dpPP/103Lhx+DEnO1b83uimTZscDseECRN0Ot3PfvazV155peiXqDaKlYm1tnC73S+88MJ1111X6YKUA5fLtWHDhltuuUWj0dTV1TkcjkqXqOSggUgkEplMJpFItLW1VbpEpWXq1KmNjY3kY052rPhmtKenh8Tdd3Z29vT0FP0SVcuOHTt27Nhx0kknVbog5eCmm266++67tVptpQtSDnbu3Dls2LB58+aNHTv2iiuuwFTqhzcOh2Px4sWjRo1qa2tjWXbu3LmVLlFZycmOFd+M8ofm/S36+auWQCAwZ86cxx57rOb0hfJgzZo1DMMcIbOiAJBOpz///PNrrrlm8+bNPM8vWbKk0iUqOZFI5Kmnntq2bVtPT4/BYHj00UcrXaKykpMdK74Z7ejo6O7uxv+7u7uJRT+8ySkT62HAxo0b33vvveHDh8+aNeuzzz4799xzK12i0tLR0dHa2nryySczDDN79uxNmzZVukQlZ/369Q0NDR0dHTqdbubMmRs3bqx0icpKTnas+Gb02GOP9fl8ODX77LPPzpw5s+iXqDYymcyFF144Y8aMK664otJlKRMLFy7s6enZs2fPq6+++v3vf/+1116rdIlKy8iRI51O51dffQUA7777rnA993Bl2LBhX3zxhdfr5Xn+nXfe6erqqnSJykpudqwUa17vvffeyJEjOzo6fv3rX5fi/NXG+++/DwDtB3jllVcqXaLy8fHHHx8hK/Uff/zxhAkTRo0aNXv27GAwWOnilIPFixePGDFi5MiRF1xwQSgUqnRxSsusWbNaW1t1Ol17e/tf/vIXPhc7RvONUigUSkHQKCYKhUIpCGpGKRQKpSCoGaVQKJSCoGaUQqFQCoKaUQqFQikIakYpFAqlIKgZpVAolIKgZpRCoVAKgppRCoVCKQhqRikUCqUgqBmlUCiUgqBmlEKhUAqi3GY0FostW7Ys1z1dLtdxxx1XynIVjfvvv//BBx+Ubldf8VpEfe0CgcDo0aNLXR4KpZxUhRnleV6aX/owszuHWXVEqKwdz/NWq/Wvf/3roLsdUboJlFqn3Gb0zjvv3L1797Rp02677TaXyzVmzJjrrrvuzDPPXLdu3bRp03CfxYsXP/jgg8I9ASCTyVx11VWjR48+88wzE4lEmYs9KEuXLh0zZsxpp5325Zdf4pbp06dPnDhx/PjxTz/9NBxacem3VYXL5fre9753zTXXzJ079/zzz49EIgDw+OOPT5gwYfz48YsWLQKAQCAwffr0E0444dhjj129erWodi+99NIPfvCDiRMn/uxnP0smk8KG/vbbby+++GK8kOicwt3cbnflfgAKJUdKng31UDweD5Ew7evr02q127Zt43l+69atU6dOxe333nvv0qVLpXt+9tlnPM9fcsklq1atyrsAH+/7eMlHSz7e93ERv926dWtXV1c4HI5EIqNHj0YpWtTgjcVixx9/fDAYFFZH+m3e1SkFfX19DMNs376d5/nFixcvWrRo27Zto0aNCgQCiURi0qRJ77777tNPP33jjTfi/qFQSFi73bt3T506NZFI8Dx/++23P/zww8KG9vv9XV1dPM9LzyncjUKpIXSVNeIjRoxQKU4wcuTIE044AQAmTZq0Z8+e/C73z55//vjJH3M8x2iYjVduPKn9pKJ8u2HDhrPPPttmswHA7NmzceOf//znf/zjHzqdbt++fbt27ero6BCeTfRttc38HnPMMd/73vcA4Kyzzpo/f357e/vZZ59tt9sB4KKLLlq3bt2cOXMWLVpkMBjOOeecH/3oR8lkkhy7du3aPXv2nHHGGQAQj8dPOeUUkGto/NGE5xw/frz6+4FCqR4GMaNHHw35miwYPhx27x5kH7PZvL8cOh2ZDkulUiaTSbQn2aLVatPpdH5F2rB3A8dzAMDx3Ia9G0SGspBv9Xq98J933nln48aNa9asMRgMM2bMEM1CKH+bK263O5PJ5HesVqttaWmRbmdZVvSPiAkTJnz66advvvnmLbfccu655wpFqHienzFjhlBI0uVykYZWRuVuFEpVMcjc6O7dwPN5/snaUJvNFg6HpduHDh3a3d2dyWQ4jluzZo3CnoUw5agpWo0WALQa7ZSjphTr25NPPvmDDz7Awr/zzjsA4Pf7jz76aIPB0N/fj5KKwupIvy2ElpaWofkia0MB4LvvvtuwYQMArFy5csqUKSeffPIbb7wRDAaTyeTzzz8/derU7u7uurq6Sy+9dMGCBV988YWwdtOmTXvttdd27doFAIFA4Ntvv5W9hPScBf4OFEqlKPeg3mQyTZ8+ffz48aeffvqvf/1rst1qtV5zzTXTpk3r7Oxsa2tT2LMQTmw7ceOVG9fvXT952OQT204s1rejR4++6KKLzjjjjCFDhgwbNgwAzjnnnBUrVsydO9dms02cOFFUnXvuuUf0bbUxfvz4FStWXHfddcOHD7/rrrtsNttNN930wx/+kOf5iy666NRTT129evVvf/tbrVZrMpmWL18urN3SpUsfeeSRWbNmsSyr1+sfeughWQ+nrq4u0TldLlf5a0qhFA6VtKOIcblcM2bMOBKk2CmUokCjmCgUCqUgaG+UQqFQCoL2RikUCqUgqBmlUCiUgqBmlEKhUAqCmlEKhUIpCGpGKRQKpSCoGaVQKJSCoGaUQqFQCoKaUQqFQikIakYpFAqlIKgZpVAolIL4/12af7x6RUuhAAAAAElFTkSuQmCC", "image/svg+xml": [ "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", " \n", "\n", "\n", " \n", "\n", "\n", " \n", "\n", "\n", " \n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", " \n", " \n", "\n", "\n", " \n", " \n", "\n", "\n", " \n", "\n", "\n", " \n", "\n", "\n", " \n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", " \n", "\n", "\n", " \n", "\n", "\n", " \n", "\n", "\n", " \n", "\n", "\n", " \n", "\n", "\n", " \n", " \n", "\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", "\n", "\n", "\n", "\n", "\n", " \n", " \n", " \n", " \n", "\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "\n", "\n", "\n" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "toRenderable $ do\n", " plot $ line \"truth\" [list x `zip` list y]\n", " plot $ points \"data\" $ list x `zip` [if b then 1.8 else -1.8 | b <- list z]\n", " setColors [black `withOpacity` 0.1]\n", " plot $ line \"posterior\" [list x `zip` list y' | (i,y') <- [0..] `zip` samples, i `mod` 100 == 0]\n", " ylim (-2,2)" ] } ], "metadata": { "kernelspec": { "display_name": "Haskell", "language": "haskell", "name": "haskell" }, "language_info": { "codemirror_mode": "ihaskell", "file_extension": ".hs", "name": "haskell", "pygments_lexer": "Haskell", "version": "8.6.5" } }, "nbformat": 4, "nbformat_minor": 2 }