我试图找到适合二项式调查数据的函数参数。每个数据点实际上是一个大小为 n 的样本。如果我使用贝叶斯预测的动态模型(如West& Harrison&#39>贝叶斯预测和动态模型第14.4章),我可以使用beta二项式共轭先验方案来解释不同的样本量。但是,我还希望以包含data.n
列的方式在PyMC3中执行此操作。我已按如下方式设置模型:
import pymc3 as pm
import pandas as pd
import theano.tensor as T
data = pd.DataFrame({'P':[0.98, 0.98, 0.94, 0.91, 0.82],
't' : [1, 2, 3, 4, 5], 'n':[50, 10, 40, 30, 50]})
with pm.Model() as model:
gamma = pm.Uniform('gamma', 0.9, 1.1, testval=1.)
zeta = pm.Uniform('zeta', 0, 0.05, testval=0.001)
beta = pm.Uniform('beta', 0, 5, testval = 0.5)
likelihood = pm.Normal('P_obs', mu=1/(gamma + zeta*T.exp(beta*data.t)), sd=0.005, observed=data.P)
start = pm.find_MAP()
trace = pm.sample(5000, step=pm.NUTS(scaling=start), start=start)
(我也不确定似然函数中的方差项。我必须让它很小才能工作。我尝试过HalfCauchy,但它没有那么好用。但是那个不是我的主要查询。)