在 PyMC 中,“瘦”论点似乎不再使用。可以用什么代替?

问题描述 投票:0回答:1

试图通过例子来理解PyMC,我做了一个小模型参考一组鸟类重量(观察到的数据:

y20
),据说来自正常人口
N(mu, sigma)
.

import pymc as pm
import arviz as az

with pm.Model() as model:
    
    # Priors for unknown model parameters
    mu = pm.Uniform('mu', lower = 0, upper = 2000)
    sigma = pm.Uniform('sigma', lower = 0, upper = 100)

    # Likelihood of observations
    lkd = pm.Normal('likelihood', mu = mu, sigma = sigma, observed = y20)
    
    # Expected value of outcome
    weights = pm.Normal('weights', mu = mu, sigma = sigma)

这个

pm.Model()
运行没有问题。现在关于抽样......

浏览文档,我在“阅读文档”教程中找到,在这里:HERE

paragraph 3.5.1
,以下句子:MCMC 通常会导致样本之间的强自相关,从而导致不精确的后验推理。为了避免这种情况,通过仅保留每第 k 个样本来稀释样本是很有用的,其中 k 是一个整数值。这个细化间隔通过 thin 参数传递给采样器。

所以,在我的模型之后,我使用了这条新线:

with model:
    trace = pm.sample(1000, tune = 1000, thin = 10)

我得到了一个奇怪的结果:

ValueError: Unused step method arguments: {'thin'}

PyMC 有什么变化吗?

python pymc
1个回答
0
投票

您共享的文档链接似乎已过时。您分享的参考链接的主页:https://pymcmc.readthedocs.io/en/latest/ 显示它适用于版本 2x(检查介绍下的 1.3:版本 2 中的新功能)并且当前版本是 5.1.1

正如您在他们分享的教程中看到的,他们也使用 iter 作为参数。但是,您正在使用 tune。您正在合并来自两个不同版本的输入定义。

他们的 git 页面指向此文档页面作为参考,并且似乎也已更新: https://www.pymc.io/welcome.html

你可以参考这个文件的第317行,看看sample函数接受的参数是否符合你的要求: https://github.com/pymc-devs/pymc/blob/main/pymc/sampling/mcmc.py

© www.soinside.com 2019 - 2024. All rights reserved.