Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/design-patterns/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python PyMC Pareto+;具有未知α的正常值不';对于非常小的噪声,不能收敛_Python_Bayesian_Pymc - Fatal编程技术网

Python PyMC Pareto+;具有未知α的正常值不';对于非常小的噪声,不能收敛

Python PyMC Pareto+;具有未知α的正常值不';对于非常小的噪声,不能收敛,python,bayesian,pymc,Python,Bayesian,Pymc,我尝试使用pymc解决一个简单的模型: 我知道N=1000个通量是从帕累托分布得出的:通量~Pareto(alpha,1) 我试图计算出帕累托函数的alpha参数:alpha~Uniform(1,3) 我的通量测量受到高斯噪声的污染:通量_meas~Gaussian(通量,tau) 目前,我只是想模拟一下,如果我改变噪音的大小会发生什么 问题是,当我在非常小(即可以忽略不计)的噪声量下运行模型时,每次运行的alpha平均值都会发生根本性的变化,并且似乎与alpha的真实值没有任何关系。但是,

我尝试使用pymc解决一个简单的模型:

  • 我知道N=1000个通量是从帕累托分布得出的:通量~Pareto(alpha,1)

  • 我试图计算出帕累托函数的alpha参数:alpha~Uniform(1,3)

  • 我的通量测量受到高斯噪声的污染:通量_meas~Gaussian(通量,tau)

目前,我只是想模拟一下,如果我改变噪音的大小会发生什么

问题是,当我在非常小(即可以忽略不计)的噪声量下运行模型时,每次运行的alpha平均值都会发生根本性的变化,并且似乎与alpha的真实值没有任何关系。但是,如果我完全忽略高斯噪声,并且说我只是直接观察帕累托分布,它会像预期的那样工作

我做错了什么

一个有效的代码片段是:(一个更复杂、更旧的代码片段是)

关键位如下所示:

import pymc
N = 1000
true_alpha = 2
noise = 0.001 # This noise is much smaller than the signal

# Simulated fluxes
s_arr = pymc.rpareto(true_alpha, 1, size=N)

# the unknown alpha
alpha = pymc.Uniform('alpha', 1, 3)

# fluxes are drawn from a Pareto distribution
flux = pymc.Pareto('flux', alpha, 1, size=N)

# My observed fluxes are contaminated by Gaussian noise
flux_meas = pymc.Normal('flux_meas', mu=flux, tau=noise**-2, observed=True,
                         value=pymc.rnormal(s_arr, tau=noise**-2, size=N))

model = pymc.MCMC([alpha, flux, flux_meas])

# If I run this model several times, the mean of alpha will be somewhere between
# 1 and 3. The variance of alpha is pretty small
model.sample(5000, 1000, 5)

以上型号对我来说运行良好:

In [5]: alpha.summary()

alpha:

    Mean             SD               MC Error        95% HPD interval
    ------------------------------------------------------------------
    2.473            0.079            0.005            [ 2.317  2.612]


    Posterior quantiles:

    2.5             25              50              75             97.5
     |---------------|===============|===============|---------------|
    2.317            2.422           2.474          2.522         2.613

您如何归纳您报告的高度可变的输出?请记住,
alpha
指定的统一变量不是alpha变化的模型,它是先验变量,因此指定了我们在
alpha

中的不确定性,很抱歉这么晚才回到这里。α平均值=2.473是与真α的许多标准偏差。如果我再次运行该模型,alpha平均值将是与前一个平均值(以及真α)的许多标准偏差。我预计多次运行将收敛于真α。即使“噪音”非常小,也会发生这种情况。此外,如果我运行模型时观察到的是“通量”而不是“通量”,那么模型的多次运行总是收敛到alpha=true_alpha。