我在为多维随机变量定义界限时遇到问题。这是一个虚拟示例来解释我的问题。
如果我想在 [0,100] 之间有一个 3 维离散均匀
import pymc as mc
from numpy import empty
truth = mc.DiscreteUniform("bin1", lower=0, upper=100, value=[50,50,50], size=3)
@mc.deterministic(plot=False)
def unfold(truth=truth):
out = empty(3)
for r in xrange(3):
out[r] = truth[r]
return out
data = [5, 10, 30]
unfolded = mc.Poisson('unfolded', mu=unfold, value=data, observed=True, size=3)
model = mc.Model([unfolded, unfold, truth])
mcmc = mc.MCMC( model )
mcmc.use_step_method(mc.AdaptiveMetropolis, truth)
mcmc.sample(10000,1000,10)
这将为 3 个 bin 采样一个 DiscreteUniform,每个 bin 的范围相同(0 到 100 之间)。
现在,我尝试了几种方法来为每个 bin 定义不同的范围,但无法成功。我尝试了 DiscreteUniform 数组和边界数组(上、下),但它们显然不起作用。
有谁知道如何为随机变量的各个 bin 定义不同的范围?