瀏覽代碼

Simplifying setuping Bayesian model

Martin Horvat 1 年之前
父節點
當前提交
209aa5fe28
共有 3 個文件被更改,包括 25 次插入6 次删除
  1. 6 6
      python/bayesian/bayesian.ipynb
  2. 19 0
      python/bayesian/bayesian.py
  3. 二進制
      python/bayesian/results/bayesian_fit.pdf

文件差異過大導致無法顯示
+ 6 - 6
python/bayesian/bayesian.ipynb


+ 19 - 0
python/bayesian/bayesian.py

@@ -1,6 +1,25 @@
 import numpy as np
 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 
 

二進制
python/bayesian/results/bayesian_fit.pdf


部分文件因文件數量過多而無法顯示