python - 使用 Pymc3 的条件概率

标签 python statistics modeling pymc3

我的问题是如何使用PYMC3包进行条件概率模型。

我有一组数据a_observed、b_observed、c_observed,我想找出它们之间的关系。我怀疑a,b,c都是正态分布,b依赖a,c依赖a,b。我需要找到参数。

到目前为止我有:

with model:

    # define priors
    muA = pm.Uniform('muA', lower=0, upper=24)
    muB = pm.Uniform('muB', lower=0, upper=24)
    muC = pm.Uniform('muC', lower=0, upper=24)

    sigmaA = pm.Uniform('sigmaA', lower=0, upper=1000)
    sigmaB = pm.Uniform('sigmaB', lower=0, upper=1000)
    sigmaC = pm.Uniform('sigmaC', lower=0, upper=1000)

    distributionA = pm.Normal('a', mu = muA, sd = sigmaA, observed = a_observed)
    distributionB = pm.Normal('b', mu = muB, sd = sigmaB, observed = b_observed)
    distributionC = pm.Normal('c', mu = muC, sd = sigmaC, observed = c_observed)

    start = pm.find_MAP()
    step = pm.Slice()

现在我希望A独立,B|A,C|A,B。 PYMC3 中执行此操作的最佳方法是什么?我在这里看到了 lambda 函数 http://healthyalgorithms.com/2011/11/23/causal-modeling-in-python-bayesian-networks-in-pymc/ ,但这种方法直接给出了条件概率。

此外,我想知道将模型扩展到具有更复杂依赖关系的三个以上变量有多容易。谢谢!

最佳答案

请看下面的问题:Simple Bayesian Network via Monte Carlo Markov Chain ported to PyMC3 .在相关的要点中,我将您在上面引用的 PyMC2 示例移植到了 PyMC3。关键是使用 pm.Deterministic() 和 pm.math.switch()。我希望这会有所帮助。

关于python - 使用 Pymc3 的条件概率,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35067883/

相关文章:

python - 基于索引列表返回子列表的最简单和最有效的函数是什么?

r - 将嵌套循环的结果写入 R 中的向量对象

python - 有效地找到多列的低中位数

java - Java等编程语言中的结构化分类器对应什么?

python - 如何在 Python 3 中设置 sys.stdout 编码?

python - 解析两个相似的html文件的时间差异很大

python - 改进 SQL INSERT 查询以避免 sql 注入(inject)

encoding - 哪些统计数据表明 Z3 的运行效率很高?

对象提供 UML 中的接口(interface)

modeling - 如何从 Ecore 模型创建 Xcore 资源?