包括pyMC3中的测量不确定度

2024-06-16 13:03:40 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图将一些有测量误差的观测值与其他没有测量误差的数据进行拟合。如何考虑pyMC3中的测量误差?我有以下方法,这似乎给了我合理的结果,但这是正确的方法吗?在

n_samples = 20000
with pymc3.Model() as predictive_model:
    intercept = pymc3.Normal('Intercept',mu=1.0,sd=0.2)
    exponent = pymc3.Normal('A',mu=4.2,sd=0.15)
    likelihood = pymc3.Normal('Observed', 
                          mu=intercept*x_values**exponent,                              
                          observed=observed_values,
                          sd=observed_errors)

    start = pymc3.find_MAP() 
    step = pymc3.NUTS(scaling=start)
    trace_predictive = pymc3.sample(n_samples, step, start=start,njobs=4)

其中x_valuesobserved_values和{}是相同长度的1D numpy数组。在


Tags: 数据方法stepsdstartvaluessamplesnormal
1条回答
网友
1楼 · 发布于 2024-06-16 13:03:40

看起来你有一个模型C x^A,但你相信你收集的数据看起来像C x^A + eps。你似乎也知道测量误差是多少(这让我很惊讶!)在

如果你的目标是推断截距C,指数A,和测量噪声{},我会这样写模型:

with pymc3.Model() as predictive_model:
    intercept = pymc3.Normal('Intercept',mu=1.0,sd=0.2)
    exponent = pymc3.Normal('A',mu=4.2,sd=0.15)
    eps = pymc3.HalfNormal('eps', 10.)
    likelihood = pymc3.Normal('Observed', 
                              mu=intercept*x_values**exponent,
                              sd=eps
                              observed=observed_values - observed_errors)

    trace_predictive = pymc3.sample(n_samples, njobs=4)

(请注意,现在有比MAP更好的初始化方法,它们会被自动选择!)在

相关问题 更多 >