1

我有一个涉及许多对象的问题,N 每个都可以处于固定数量的状态 j。我们知道一个物体处于每种状态的概率——但是物体之间的概率是不同的。

例如,如果有 j=3 个状态和 N=2 个对象,则概率可以描述为:

P_object1 = [0.1,0.8,0.1]
P_object2 = [0.05,0.05,0.99]

对于少量的对象,我可以写:

state_object1 = mc.Categorical("StateObject1", P_object1, size=1)
state_object2 = mc.Categorical("StateObject2", P_object2, size=1)

但是,我有大量的对象...

我要创建的是与随机状态相对应的整数向量,其中每一行对应一个单独的对象。

我试图实现一个集合来做到这一点:

objectIDs = np.empty(nGrains, dtype=object)
objectIDs_0 = mc.Categorical('objectID_0', probs[0])
objectIDs[0] = objectIDs_0
for i in range(1, N):    
    objectIDs[i] = mc.Categorical('objectID_%i' %i, probs[i])

当我尝试在下一步中使用它时,问题就来了:

@mc.deterministic
def lambda_S(nI=nI, objectIDs=objectIDs, closureAges=closureAges):
    out = np.empty(N)
    for i in range(N):    
        out[i] = nI[i] * ( math.exp( lambda_U238*stateValue[objectIDs[i]]*1.E6 ) - 1 ) / b
    return out

在上面的 nI 是一个整数向量, stateValue 是一个双精度向量,每个状态一个。问题是这会返回一个双精度数组而不是一个 pymc 对象,因此当我尝试运行模型时它会失败......

4

1 回答 1

0

如果您的分类概率是固定的且已知的,那么您要估计什么?我没有看到任何代表可能性的观察节点。

于 2013-10-12T21:02:13.953 回答