【发布时间】:2019-05-17 12:37:31
【问题描述】:
我正在尝试将不同类型和重复的测量合并到 PyMC3 中的一个模型中。
考虑以下模型:P(t)=P0*exp(-kBt) 其中 P(t)、P0 和 B 是浓度。 k 是一个比率。我们通过粒子计数在不同时间测量 P(t) 和 B 一次。 k 是我们试图推断的感兴趣的参数。
我的问题有两个部分: (1) 如何将 P(t) 和 B 的测量值合并到一个模型中? (2) 如何使用可变数量的重复实验来告知k的值?
我想我可以回答第 (1) 部分,但不确定它是否正确或以正确的方式完成。我未能概括代码以包含可变数量的复制。
对于一个实验(一个重复):
ts=np.asarray([time0,time1,...])
counts=np.asarray([countforB,countforPattime0,countforPattime1,...])
basic_model = pm.Model()
with basic_model:
k=pm.Uniform('k',0,20)
B=pm.Uniform('B',0,1000)
P=pm.Uniform('P',0,1000)
exprate=pm.Deterministic('exprate',k*B)
modelmu=pm.math.concatenate(B*(np.asarray([1.0]),P*pm.math.exp(-exprate*ts)))
Y_obs=pm.Poisson('Y_obs',mu=modelmu,observed=counts))
我尝试按照上述方法包含不同的复制,但无济于事:
...
k=pm.Uniform('k',0,20) # same within replicates
B=pm.Uniform('B',0,1000,shape=numrepl) # can vary between expts.
P=pm.Uniform('P',0,1000,shape=numrepl) # can vary between expts.
exprate=???
modelmu=???
【问题讨论】:
-
编辑删除错字。