问题标签 [emcee]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
python - 为什么回火 mcmc fit 不能很好地转换?
我正在尝试使用简单的直线y=mx+c
类型来拟合一些合成数据parallel-tempered mcmc
。我的目标是能够理解如何使用它,以便以后可以应用于一些更复杂的模型。我正在尝试的示例是在一个简单的 emcee 代码中已经完成的复制:http:
//dfm.io/emcee/current/user/line/
但我不想使用 mcmc,而是使用并行处理 mcmc :
http ://dfm.io/emcee/current/user/pt/
这是一个工作代码:
运行此代码时唯一的问题是我得到了远离真实值的最佳参数值。增加步行者或样本的数量在任何意义上都没有帮助。谁能告诉我为什么tempered-mcmc
不在这里工作?
更新:
我发现了一个有用的包ptemcee
(https://pypi.org/project/ptemcee/#description),虽然这个包的文档不存在。似乎这个包可能很有用,任何关于如何用这个包实现相同的线性拟合的帮助也将不胜感激。
python - 主持人采样初始位置
我正在尝试将逆伽马分布拟合到直方图。我可以通过玩弄它的两个参数(参见图 1 中的橙色线)轻松挑选出一组合适的参数。
但是,当我尝试使用 emcee 估计后验时,我只是简单地对链的初始起点进行采样。
后验均值和标准差对应于我在中设置的值pos = [np.array(p0) + 5e-1*np.random.randn(ndim) for i in range(nwalkers)]
(即[p0 +- 0.5])。更改步数和/或烧录样本的数量无济于事。
如果我增加步行者的数量,它只会更好地采样输入位置 - 他们似乎永远不会去任何地方。
有这个帖子链接,但我认为它不适用于这里 - 逆伽马分布可以说有点烦人,但曲线拟合问题应该得到很好的定义..?
- - - - - - - - - -编辑 - - - - - - - - - -
我知道这个问题:删除flux
为零的数据点会导致步行者开始移动,我得到了一个结果。我觉得这种行为有点奇怪,所以更新一下问题:
为什么两个单独的异常值会阻止司仪移动?
python - 尝试在 slurm 集群上将 MPI 与 emcee 一起使用时出错
嗨,谢谢你的帮助!
我试图让 emcee 在 Slurm 集群上使用 mpi 运行,但是当我启动我的代码时,它会在几分钟后返回一个错误,下面描述了一个大错误,这似乎围绕着“无效的通信器”错误。
你知道我可能做错了什么吗?
我正在使用 anaconda,所以我尝试重新安装环境,更改使用的软件包,并删除所有可能不必要的内容,但错误总是相同的。
这是我通过 sbatch 提交的脚本:
在我的 python 代码中,我使用了 schwimmbad 的 MPIPool。
错误是这个大块:
python - 为什么 emcee.EnsembleSampler.run_mcmc() 函数不会在我的任何步行者的连续步骤中改变我的 emcee.EnsembleSampler.chain 值?
我正在 emcee 库中运行 emcee.EnsembleSampler 函数,为我正在做的一些研究制作参数的马尔可夫链。由于某些原因,run_mcmc 函数运行的某些时候,我在 emcee.EnsembleSampler.chain 对象中找到的链在本质上应该近似高斯时根本没有变化。
我已经在我的一些数据上运行了多次,它工作得非常好,但在某些情况下,它实际上只是链没有迭代,只有直线。
我如何使用司仪代码(大约 90% 的时间有效):
__ln_prob 函数是这样写的(这里也详细介绍了其中使用的函数):
先验功能:
我预计链值会振荡,但在某些情况下不会。我后来的代码没有抛出任何错误,所以似乎没有一个 -np.inf 值从 __ln_prior 或 __ln_prob 返回。如果返回 -np.inf 我认为代码应该中断?也许这就是为什么?
我认为代码对于理解这个问题不是很有必要,我只是希望这一定是一些我明显不理解的相对频繁出现的问题。
我尝试查看源代码,了解为什么 sample() 函数可能返回与其接收到的相同的参数集,但我似乎没有找到这一点。
这是找到源代码的地方: https ://github.com/dfm/emcee/blob/master/emcee/ensemble.py
python - 与 Pool 并行运行 emcee 时的相同步骤
我正在使用 Python 在 Python 中运行 MCMC 进程emcee
。我的 python 代码是一个不同软件的包装器。emcee
walkers 对该软件的输入参数空间进行采样。该软件读取一个文本文件作为其输入。emcee
我的代码使用链的每个步骤生成此文本文件。为了加快采样速度,我希望多个进程并行运行来评估对数似然。但是,这些进程中的每一个都需要写入不同的输入文本文件,以防止进程之间的干扰。出于这个原因,我认为我不能使用司仪网站上的简单标准示例。
理想情况下,我希望每个进程在自己的子目录中运行,生成不同的输入文件,这样不同的进程就不会相互干扰。为此,我使用Pool
frommultiprocessing
手动创建并行进程,而不是使用默认选项 from emcee
。我知道为了让不同的并行进程产生不同的随机数,我需要为每个 PRNG 提供不同的种子。我当前的代码如下:
尽管为每个进程提供了不同的种子,但所有 4 个进程都会生成完全相同的一组emcee
步骤。
不是播种PRNGnp.random.seed
的相关参数吗?emcee
有没有更好的方法让不同的进程在不同的目录中工作?
python - emcee EnsembleSampler 对象没有属性 get_chain
我无法使用 get_chain() 方法访问从 emcee 生成的值。我的代码提供如下:
当我运行它时,我收到消息AttributeError: 'EnsembleSampler' object has no attribute 'get_chain'
,但我不知道为什么。我在网上某处读到 get_chain() 方法仅添加在较新版本的 emcee 中,并且需要从 GitHub 下载。如果这是问题,我将如何从 GitHub 下载它并确保它仍然适用于 Anaconda(我是 Python/GitHub 的新手,我不太熟悉如何完成)?
任何帮助将不胜感激!谢谢!
sampling - emcee MCMC Sampling... 一小群步行者没有收敛?
我在我知道真实参数值的模拟上运行 mcmc。假设我在链条中使用 100 个步行者和 10,000 个步骤。大部分步行者收敛到正确的参数值,但大约 3 个步行者(100 个中)只是拖到远处,没有收敛。除了我的潜在错误之外,不确定这里会发生什么。
python - 如何在 emcee 中正确并行化黑盒可能性
我目前正在使用 emcee 包通过教程https://emcee.readthedocs.io/en/stable/tutorials/parallel/获取 MCMC 示例。代码的串行版本可以工作,但速度很慢,所以我想使用并行化技术来加速这个过程。
我的代码目前如下所示(提供伪代码):
data
并且ivar
是用于酸洗目的的全局变量,如教程中所述。每当我尝试运行此代码时,它都会无限期地执行,当我中断执行时,我会收到以下回调:
我不完全确定发生了什么以及代码冻结的原因。如果有人可以帮助我,我将不胜感激。