首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用emcee进行错误传播

如何使用emcee进行错误传播
EN

Stack Overflow用户
提问于 2018-09-25 15:40:44
回答 2查看 312关注 0票数 1

我正在使用主持人来分析一些与SN1a相关的数据。在处理真实数据之前,我从模拟数据开始。我所取得的结果似乎是好的:

现在,我要计算一些量的后验,例如

f(q,j) =j- q^2

用我为q和j得到的后验,有人能帮我吗?

EN

回答 2

Stack Overflow用户

发布于 2018-09-25 18:25:45

如果有j和q的原始后验样本,例如两个numpy数组jq,那么对这些数组进行元素计算将得到所需变量的相应样本。在您的示例中,f = j - q**2

我知道直接在采样器中捕获转换变量样本的选项存在于其他采样器中(斯坦,PyMC3)。也许知道主持人(不是我)的人知道怎么做。

票数 0
EN

Stack Overflow用户

发布于 2019-12-09 16:00:55

您可以使用参数的最终示例,然后获取转换的分位数,例如:

代码语言:javascript
复制
ndim=3 #number of parameters
chains= sampler.chain
samples = chains.reshape((-1, ndim))
q=samples[:,0]
j=samples[:,1]
H=samples[:,2]
f = j - q**2

f现在可以表示为一个发行版:

代码语言:javascript
复制
import matplotlib.pyplot as plt
import numpy as np
plt.hist(f)
Q=np.quantile(f,q=[0.16,0.5,0.84])

如果f达到高斯分布,则Q是1西格玛值‘q,Q1’的中值Q[1]

还可以使用标准错误传播方程(不确定):

代码语言:javascript
复制
f=Ej-Eq**2
df = np.sqrt(dj**2 - (2*Eq*dq)**2)

这给了f = 0.9 +/- 0.25dq = 0.03dj = 0.25Eq=-0.52Ej=1.18 (从你的情节)。但是由于参数之间的高度相关性,这并不是最安全的方法。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52502029

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档