多次元確率変数の境界の定義に問題があります。これは私の問題を説明するためのダミーの例です。
[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 つのビンの DiscreteUniform が各ビンの同じ範囲 (0 から 100 の間) でサンプリングされます。
ここで、ビンごとに異なる範囲を定義するためにいくつかのことを試みましたが、成功しません。DiscreteUniform の配列と境界 (上限、下限) の配列を試しましたが、明らかに機能しません。
確率変数のさまざまなビンに対して異なる範囲を定義する方法を知っている人はいますか?