理解 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
变量,然后将其转换为标准偏差。
我运行进入这段代码:
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
变量,然后将其转换为标准偏差。