作者热门文章
- mongodb - 在 MongoDB mapreduce 中,如何展平值对象?
- javascript - 对象传播与 Object.assign
- html - 输入类型 ="submit"Vs 按钮标签它们可以互换吗?
- sql - 使用 MongoDB 而不是 MS SQL Server 的优缺点
如果 pymc 实现 Metropolis-Hastings 算法以从感兴趣参数的后验密度中得出样本,那么为了决定是否移动到马尔可夫链中的下一个状态,它必须能够评估一些成比例的东西所有给定参数值的后验密度。
后验密度与基于观察数据乘以先验密度的似然函数成比例。
这些在 pymc 中是如何表示的?它如何从模型对象中计算出每一个数量?
我想知道是否有人可以对这种方法进行高级描述或指出我在哪里可以找到它。
最佳答案
要表示先验,您需要一个 Stochastic 类的实例,它有两个主要属性:
value : the variable's current value
logp : the log probability of the variable's current value given the values of its parents
您可以使用您正在使用的发行版的名称初始化先验。
为了表示可能性,您需要一个所谓的数据随机指标。即,随机类的实例,其 observed
标志设置为 True
。此变量的值不能更改,也不会被采样。同样,您可以使用您正在使用的分布的名称来初始化可能性(但不要忘记将 observed
标志设置为 True
)。
假设我们有以下设置:
import pymc as pm
import numpy as np
import theano.tensor as t
x = np.array([1,2,3,4,5,6])
y = np.array([0,1,0,1,1,1])
我们可以使用以下方法运行一个简单的逻辑回归:
with pm.Model() as model:
#Priors
b0 = pm.Normal("b0", mu=0, tau=1e-6)
b1 = pm.Normal("b1", mu=0, tau=1e-6)
#Likelihood
z = b0 + b1 * x
yhat = pm.Bernoulli("yhat", 1 / (1 + t.exp(-z)), observed=y)
# Sample from the posterior
trace = pm.sample(10000, pm.Metropolis())
以上大部分内容来自 Chris Fonnesbeck 的 iPython notebook here .
关于python - pymc 如何表示先验分布和似然函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16723179/
我是一名优秀的程序员,十分优秀!