pymc.smc.sample_smc#
- pymc.smc.sample_smc(draws=2000, kernel=<class 'pymc.smc.kernels.IMH'>, *, start=None, model=None, random_seed=None, chains=None, cores=None, compute_convergence_checks=True, return_inferencedata=True, idata_kwargs=None, progressbar=True, **kernel_kwargs)[源代码]#
基于顺序蒙特卡罗的采样。
- 参数:
- 抽取 :
int
, 默认 2000python:int, 默认值为 2000 从后验(即最后阶段)中抽取的样本数量。以及独立链的数量。默认为2000。
- 内核 : SMC 内核, 可选SMC 内核,可选
使用的SMC内核。默认为
pymc.smc.smc.IMH
(独立Metropolis Hastings)- startpython:dict 或 python:dict 的数组,可选
参数空间的起始点。它应该是一个长度为 chains 的字典列表。当为 None(默认)时,起始点从先验分布中采样。
- model模型(如果已在上下文中,则为可选)。
- random_seedpython:int, numpy:array_like of python:int, RandomState 或 Generator, 可选
采样步骤使用的随机种子。如果传递的是一个整数列表、元组或数组,每个条目将用于为每个链设置种子。如果长度与链的数量不匹配,将引发 ValueError。
- 链 :
int
, 可选python:int, 可选 要采样的链的数量。运行独立的链对于某些收敛统计量很重要。如果为
None``(默认),则设置为 ``cores
或 2 中的较大值。- cores :
int
, 默认值None
python:int, 默认 python:None 要并行运行的链数。如果为
None
,则设置为系统中的 CPU 数量。- compute_convergence_checks : 布尔值,默认值
True
bool, 默认 python:True 是否计算采样器统计数据,如
R hat
和effective_n
。默认为True
。- return_inferencedata : 布尔值, 默认值
True
bool, 默认 python:True 是否将跟踪结果返回为 InferenceData (True) 对象或 MultiTrace (False)。默认为
True
。- idata_kwargs :
dict
, 可选python:dict, 可选 用于
pymc.to_inference_data()
的关键字参数。- progressbar : 布尔值,可选,默认
True
bool, 可选, 默认 python:True 是否在命令行中显示进度条。
- **kernel_kwargs :
dict
, 可选python:dict, 可选 传递给 SMC_kernel 的关键字参数。默认的 IMH 内核接受以下关键字:
- 阈值浮点数,默认值为 0.5
确定从阶段到阶段的beta变化,即间接确定阶段数量,threshold 值越高,阶段数量越多。默认为0.5。应在0到1之间。
- correlation_thresholdfloat, 默认值 0.01
值越低,自动计算的MCMC步数越多。默认为0.01。应在0到1之间。
其他内核的关键字参数应在各自的文档字符串中检查。
- 抽取 :
注释
SMC 通过经过连续的阶段来工作。在每个阶段,逆温度 \(\beta\) 会稍微增加一点(从 0 开始,直到 1)。当 \(\beta\) = 0 时,我们得到先验分布;当 \(\beta\) = 1 时,我们得到后验分布。因此,用更一般的话来说,我们总是在计算一个可以写成如下形式的退火后验分布的样本:
\[p(\theta \mid y)_{\beta} = p(y \mid \theta)^{\beta} p(\theta)\]算法的总结是:
将 \(\beta\) 初始化为零,阶段初始化为零。
生成 N 个样本 \(S_{\beta}\) 从先验分布中(因为当 :math beta = 0 时,退火后验分布就是先验分布)。
增加 \(\beta\) 以使有效样本大小等于某个预定义值(我们使用 \(Nt\),其中 \(t\) 默认为 0.5)。
计算一组 N 个重要性权重 W。这些权重是根据样本在阶段 i+1 和阶段 i 的似然比计算的。
根据 W 重新采样获得 \(S_{w}\)。
使用 W 来计算提议分布(一个 MvNormal)的均值和协方差。
运行 N 个独立的 MCMC 链,每个链从 \(S_{w}\) 中的不同样本开始。对于 IMH 核,提议分布的均值是前一个后验阶段的均值,而不是参数空间中的当前点。
N 条链运行,直到与前一阶段的样本的自相关性在给定阈值下停止下降。
从步骤3重复,直到 \(\beta \ge 1\)。
最终结果是从后验分布中抽取的N个样本的集合。
参考文献
[Minson2013]Minson, S. E., Simons, M., 和 Beck, J. L. (2013). “贝叶斯反演用于有限断层地震源模型 I- 理论与算法.” 《国际地球物理杂志》, 2013, 194(3), 第1701-1726页. 链接
[Ching2007]Ching, J., 和 Chen, Y. (2007). “基于贝叶斯模型更新、模型类别选择和模型平均的过渡马尔可夫链蒙特卡罗方法。” J. Eng. Mech., 2007, 133(7), pp. 816-832. doi:10.1061/(ASCE)0733-9399(2007)133:7(816). 链接