理解 PyMC3 函数的参数

Understanding the arguments to function of PyMC3

我运行进入这段代码:

data = np.repeat((0, 1), (3, 6))
with pm.Model() as normal_approximation:
    p = pm.Uniform('p', 0, 1)
    w = pm.Binomial('w', n=len(data), p=p, observed=data.sum())
    mean_q = pm.find_MAP() # MAP: maximum a posteriori probability
    std_q = ((1/pm.find_hessian(mean_q, vars=[p]))**0.5)[0]
mean_q['p'], std_q

我试着搜索 google 并查看文档,了解 pm.Binomial 的参数 observed 和函数 find_hessian 是什么(例如什么是vars 关键字的含义)- 但我看不到任何解释。

有人可以不仅向我解释这些问题,还可以让我参考正确的资源来自己回答这些问题吗?

https://docs.pymc.io/en/stable/api/distributions/discrete.html#pymc3.distributions.discrete.Binomial describes n and p parameters, but doesn't list observed. After digging into the source code, I found that Binomial inherits from a class named Distribution 声明了 observed 参数:

observed : optional

Observed data to be passed when registering the random variable in the model.

See Model.register_rv.

我通常建议通读教程,尤其是 "API Quick Start" and "Getting Started" 教程。他们将介绍 PyMC3 如何将 RandomVariables 的图形模型构建为计算图的基础知识,包括 observed RV 是什么(即,您观察到的那些,因此具有可以评估可能性的数据)。除非一个人已经具备强大的贝叶斯推理背景,否则通过示例学习可能是最有效的途径。

否则,请将 the API 放在手边,并利用 Python 的 help 功能。

比如可以用后者得到find_hessian的签名:

> help(pm.find_hessian)
find_hessian(point, vars=None, model=None)
    Returns Hessian of logp at the point passed.
    
    Parameters
    ----------
    model: Model (optional if in `with` context)
    point: dict
    vars: list
        Variables for which Hessian is to be calculated.

这种特殊方法更像是一种内部实用程序(例如,它被 NUTS 采样器使用),但具有数学统计或物理背景的人(例如编写原始代码的人)会将其识别为第二部分的矩阵,并了解它与协方差矩阵的关系。在特定代码中,它在 MAP 位置 (mean_q) 评估 p 变量,然后将其转换为标准偏差。