Julia 计算并绘制分布中分布的中心可信区间和最高后验密度区间。jl
我想(I)计算和(ii)绘制Distributions.jl库中分布的中心可信区间和最高后验密度区间。 理想情况下,可以编写自己的函数来计算CI和HPD,然后使用Plots.jl来绘制它们。然而,我发现实现相当棘手(免责声明:我对Julia是新手)。 关于图书馆/GIST/repo,有什么建议可以让计算和绘图变得更容易吗 上下文Julia 计算并绘制分布中分布的中心可信区间和最高后验密度区间。jl,julia,plots.jl,julia-plots,Julia,Plots.jl,Julia Plots,我想(I)计算和(ii)绘制Distributions.jl库中分布的中心可信区间和最高后验密度区间。 理想情况下,可以编写自己的函数来计算CI和HPD,然后使用Plots.jl来绘制它们。然而,我发现实现相当棘手(免责声明:我对Julia是新手)。 关于图书馆/GIST/repo,有什么建议可以让计算和绘图变得更容易吗 上下文 using Plots, StatsPlots, LaTeXStrings using Distributions dist = Beta(10, 10) plot(
using Plots, StatsPlots, LaTeXStrings
using Distributions
dist = Beta(10, 10)
plot(dist) # thanks to StatsPlots it nicely plots the distribution
# missing piece 1: compute CI and HPD
# missing piece 2: plot CI and HPD
预期最终结果汇总在下图或第页。第33页,共页
迄今发现的资源:
- :但使用PyPlot
- 感谢您更新问题;它带来了一个新的视角
要点有点正确;只是它使用了茱莉亚的早期版本。
因此,应将
linspace
替换为LinRange
。不要使用PyPlot而使用使用Plot
。
我会将绘图部分更改为以下内容:
plot(cred_x, pdf(B, cred_x), fill=(0, 0.9, :orange))
plot!(x,pdf(B,x), title="pdf with 90% region highlighted")
乍一看,CI的计算似乎是正确的。(就像封闭的Limelike曲线的答案或问题[there][1]的答案一样)。对于HDP,我同意闭合的Limelike曲线。只有我要补充的是,您可以在gist代码的基础上构建HDP函数。我也会有一个版本的后部与已知的分布(如在您的参考文件第33页,图2.2),因为您不需要样品。另一种是显示了类似于闭合的石灰样曲线的采样。您正在寻找ArviZ.jl,以及Turing.jl的McMcMcChains。MCMCChains将为您提供非常基本的绘图功能,例如,根据每条链估算的PDF绘图。jl(Python ArviZ包的包装器)添加了更多的情节。OP编辑了这个问题,所以我给出了一个新的答案 对于中心可信区间,答案很简单:取每个点的分位数:
lowerBound = quantile(Normal(0, 1), .025)
upperBound = quantile(Normal(0, 1), .975)
这将给你一个区间,x
的概率低于下限.025,同样的,上限的概率加起来是.05
HPD更难计算。此外,它们往往不太常见,因为它们有一些中央可信区间不共享的奇怪属性。最简单的方法可能是使用蒙特卡罗算法。使用randomSample=rand(正态(0,1,2^12)
从正态分布中提取2^12
样本。(或者,无论您想要多少样本,越大的结果越准确,受随机机会的影响越小。)然后,对于每个随机点,使用pdf.(randomSample)
评估该随机点的概率密度。然后,选取概率密度最高的95%点;包括最高密度间隔中的所有这些点,以及它们之间的任何点(我假设您处理的是与正态分布类似的单模式分布)
对于正态分布,有更好的方法可以做到这一点,但它们更难概括。嗨,史蒂夫,我把问题的范围缩小到只包括分布。jl分布嗨,史蒂夫,这完全回答了我的问题-非常感谢你的帮助!我认为OP想学习如何自己编写代码。非常感谢你的回答!