constraints - PyMC:拟合模型时设置约束

标签 constraints pymc mcmc stochastic

我试图在通过 PyMC 的 MCMC 方法拟合变量时设置约束
例如,我在 PyMC 中定义了以下随机模型

import pymc as pm
a=pm.Uniform('a',lower=0.,upper=1.,value=0.2)
b=pm.Uniform('b',lower=0.,upper=1.,value=0.2)

如何定义模型以使 b 始终小于或等于 a?
这是一种有效的方法吗?
a=pm.Uniform('a',lower=0.,upper=1.,value=0.2)
b=pm.Uniform('b',lower=0.,upper=b,value=0.2) #used a as the upper bound for b

最佳答案

我相信你的意思是“上= a”。

我认为您可以将 'b' 定义为依赖于 'a' 的随机变量,如下所示:

import pymc as pm
import numpy as np
import scipy.stats as scs

@pm.stochastic
def b(value=0.0, a=a):
    def logp(value, a):
        if 0 <= value <= a:
            return np.log(1/a)
        else:
            return -np.inf

    def random(a):
        return scs.uniform(0, a).rvs()

现在您可以通过调用 'b.random()' 来测试变量,您应该看到一个以 'a' ('a.value') 为界的均匀分布。

查看 variables 上的 PyMC 文档.

关于constraints - PyMC:拟合模型时设置约束,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24066886/

相关文章:

swift - UISearchBar 与 UINavigationBar 重叠?

python - 声明 basinhopping 优化的约束

pymc - PyMC 3 中的生存分析

python - pymc 的后验概率

rstan MCMC : Different squence of data resulting in different results, 为什么?

objective-c - 拦截/以编程方式设置 IBOutlet 属性

ios - UITableViewCell约束

python - 使用pymc用MCMC拟合两个正态分布(直方图)?

python - 从 pymc2 到 PyMC3 的 CAR 模型

r - R 包 pscl 中的 Ideal() 不会产生可重复的结果