如何将pymc分类应用于大量不同的概率

时间:2013-10-08 08:29:10

标签: pymc

我有一个涉及许多对象的问题,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对象,以便在我尝试运行模型时失败...

1 个答案:

答案 0 :(得分:0)

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