我有一个涉及许多对象的问题,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对象,以便在我尝试运行模型时失败...
答案 0 :(得分:0)
如果你的分类概率是固定的并且已知,那么你想要估算什么?我没有看到任何观察到的节点代表可能性。