问题描述
我正在使用 pyMC3 模拟一个非常基本的贝叶斯网络。在这个模拟中,我只有分类变量。给定一个变量的值,我想根据我用来存储条件概率的 Pandas 数据帧的输出来设置另一个变量的分布。例如,如果 x
是一个 pyMC3 随机变量,并且 x=1
在模拟的一个实例中,那么我想访问 p_y_cond_x.loc[x]
,在这个实例中它只是 {{1} },这里p_y_cond_x.loc[1]
是一个预先计算的(使用数据)条件概率表,存储为pandas系列。
有没有什么简单的方法可以做到这一点?不幸的是,实例化模型时 p_y_cond_x
不是整数(例如,使用 x
块),因此我不确定如何在模拟运行时访问其值并执行上述操作。
我见过使用 with
的解决方案,但不幸的是我的变量是三元的,所以我需要为每个条件使用两个开关。此外,如果我需要以多个变量为条件,我想这会很痛苦。