给定一些参数上的后验p(D),可以define如下:
最大后密度区是Θ的一组最可能值,总共构成后肿块的100(1-α)%。
换句话说,对于给定的α,我们寻找满足以下条件的ap*
然后得到最高后密度区域作为集合:
使用与上述相同的符号,可信区域(或区间)定义为:
根据分布情况,可能有许多这样的间隔。中心可信区间定义为每个尾部上都有质量(1-α)/2的可信区间。
对于一般的发行版,给定发行版的样本,是否有内置的Python或PyMC来获取上面的两个数量?
对于常见的参数分布(如Beta、Gaussian等),是否有内置的或库可以使用SciPy或statsmodels来计算?
PyMC有一个用于计算hpd的内置函数。在2.3版本中是在utils中。请参阅源here。作为线性模型的一个例子,它是HPD
你也可以考虑计算分位数
我认为只要取2.5%到97.5%的值,就得到95%的中心可信区间。
为了计算HPD,可以利用pymc3,下面是一个例子
根据我的理解,“中心可信区”与计算置信区间没有任何不同;你所需要的只是
cdf
函数在alpha/2
和1-alpha/2
的倒数;在scipy
中,这称为ppf
(百分点函数);因此对于高斯后验分布:验证
[l, u]
覆盖(1-alpha)
后密度:类似地,对于β-后位,比如
a=1
和b=3
:再说一遍:
here您可以看到scipy中包含的参数分布;我猜它们都有
ppf
函数至于最高后密度区,则更为棘手,因为
pdf
函数不一定是可逆的;一般来说,这样的区域甚至可能是不相连的;例如,在β与a = b = .5
的情况下(可以看到here)但是,在高斯分布的情况下,很容易看到“最高后验密度区域”与“中心可信区域”一致;我认为这是所有对称的单峰分布的情况(即,如果pdf函数围绕分布模式对称)
一般情况下的一种可能的数值方法是使用
pdf
的numerical integration对p*
的值进行二进制搜索;利用积分是p*
的单调函数的事实下面是混合高斯的一个例子:
[1]首先需要的是一个分析pdf函数;对于混合高斯函数,这很容易:
例如位置、比例和重量值
你将得到两个很好的高斯分布:
[2]现在,您需要一个错误函数,该函数为
p*
提供一个测试值,集成上述p*
的pdf函数,并从所需值返回平方误差1 - alpha
:[3]现在,对于给定的
alpha
值,我们可以最小化错误函数以获得p*
:其结果为
p* = 0.0450
,HPD如下;红色区域表示分布的1 - alpha
,水平虚线为p*
。相关问题 更多 >
编程相关推荐