使用PyMC3计算最大似然

bur*_*nck 7 python statistics pymc3

在某些情况下,我实际上并不对贝叶斯推断的整个后验感兴趣,而只是对最大似然性(或对于适当选择的先验而言,对最大后验概率)感兴趣,并且可能是Hessian。PyMC3具有执行此操作的功能,但find_MAP似乎会根据转换后的先验分布以转换形式返回模型参数。是否有一种简单的方法可以从中获取未转换的值?find_hessian对我来说,输出甚至还不够清楚,但是很有可能在转换后的空间中也是如此。

alo*_*dia 5

可能更简单的解决方案是传递参数transform=None,以避免PyMC3进行转换,然后使用find_MAP

我让你和一个简单的模型的例子。

data = np.repeat((0, 1), (3, 6))
with pm.Model() as normal_aproximation:
    p = pm.Uniform('p', 0, 1, transform=None)
    w = pm.Binomial('w', n=len(data), p=p, observed=data.sum())
    mean_q = pm.find_MAP()
    std_q = ((1/pm.find_hessian(mean_q))**0.5)[0]
print(mean_q['p'], std_q)
Run Code Online (Sandbox Code Playgroud)

您考虑过使用ADVI吗?