你的符号让我有点困惑,但如果我理解正确,你想从先验的可能性(参数和数据的某些函数)中采样。我同意 - 这是典型的贝叶斯东西。
我认为贝叶斯逻辑回归是一个很好的例子,因为我们无法解析地解决它。假设我们的模型如下:
B ~ 正常(0, sigma2 * I)
p(y_i | B) = p_i ^ {y_i} (1 - p_i) ^{1 - y_i}
观察到 y_i 并且 p_i = 1 / (1 + exp(-z_i)) 和
z_i = B_0 + B_1 * x_i
我们假设 sigma2 是已知的。在我们将数据加载到 numpy 数组 x 和 y 中后,我们可以使用以下内容从后验中采样:
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
yhat = pm.Bernoulli("yhat", 1 / (1 + t.exp(-(b0 + b1*x))), observed=y)
# Sample from the posterior
trace = pm.sample(10000, pm.NUTS(), progressbar=False)
要查看完整示例,请查看此 iPython 笔记本:
http://nbviewer.ipython.org/gist/jbencook/9295751c917941208349
pymc3 也有很好的 glm 语法。你可以在这里看到它是如何工作的:
http://jbencook.github.io/portfolio/bayesian_logistic_regression.html