python - 使用 PyMC3 计算最大似然

标签 python statistics pymc3

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

最佳答案

可能更简单的解决方案是传递参数 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)

您是否考虑过使用ADVI

关于python - 使用 PyMC3 计算最大似然,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40703849/

相关文章:

lda - PyMC3如何实现潜在狄利克雷分配?

python - 在 R 中执行 mysql 更新查询的任何更快的方法?在 python ?

r - 分母为 n 的 var, sd, cor 函数

r - 在 R 中,如何估算低于检测限的左删失数据?

r - 自动求解一个 `pt`的方程为 `ncp`

python - Pymc3 条件后验采样

python - 如何用PyMC3得到累积分布函数?

python - Pandas MultiIndex 获取所有具有标签值的行

python - wxPython状态栏

python - 在 Python 中随机舍入为整数