|
@@ -1,6 +1,25 @@
|
|
|
import numpy as np
|
|
import numpy as np
|
|
|
import scipy
|
|
import scipy
|
|
|
|
|
|
|
|
|
|
+
|
|
|
|
|
+def setup_scipy_distr(distr_str, n_pars, parse_pars):
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
|
|
+ # log of pdf for all choice
|
|
|
|
|
+ def log_pdfs(x, pars, choice = 2):
|
|
|
|
|
+ logpdf = eval(distr_str).logpdf
|
|
|
|
|
+ if choice in [0,1]: return logpdf(x, **parse_pars(pars))
|
|
|
|
|
+ return (logpdf(x, **parse_pars(pars)), logpdf(x, **parse_pars(pars[n_pars:])))
|
|
|
|
|
+
|
|
|
|
|
+ # sample w.r.t. distribution
|
|
|
|
|
+ def distr_sample(rng, pars, n, choice = 2):
|
|
|
|
|
+ rvs = eval(distr_str).rvs
|
|
|
|
|
+ if choice in [0,1]: return rvs( **parse_pars(pars), size = n, random_state = rng)
|
|
|
|
|
+ return np.concatenate((rvs(**parse_pars(pars), size = n[0], random_state = rng),
|
|
|
|
|
+ rvs(**parse_pars(pars[n_pars:]), size = n[1], random_state = rng)))
|
|
|
|
|
+
|
|
|
|
|
+ return log_pdfs, distr_sample
|
|
|
|
|
+
|
|
|
"""
|
|
"""
|
|
|
Bayesian model describing conditional probability
|
|
Bayesian model describing conditional probability
|
|
|
|
|
|