Julia是否有计算包含分布p%
的密度点的函数?
类似answer
中提到的scipy.stats
norm.ppf
功能
示例:双边95%置信区间:
> norm.ppf(1-(1-0.95)/2)
1.96
> norm.ppf(1-(1+0.95)/2)
-1.96
答案 0 :(得分:5)
Distributions软件包中的.Where(x=> x.Sales>0 && (string.IsNullOrEmpty(filterWord) || x.Title.Contains(filterWord.ToLower())))
函数可能是(95%CI)您要查找的内容。对于Normal分布,您有:
quantile
相同的函数julia> using Distributions
julia> quantile(Normal(0.0, 1.0),1-(1+0.95)/2)
-1.9599639845400576
julia> quantile(Normal(0.0, 1.0),1-(1-0.95)/2)
1.9599639845400576
可用于其他发行版。
答案 1 :(得分:1)
只是为答案添加另一个相关的增强功能,特别是对于贝叶斯后期用户,我们可以按如下方式定义medianinterval
:
medianinterval(d,p = 0.95) = quantile(d,1-(1+p)/2),quantile(d,(1+p)/2)
并且:
julia> medianinterval(Normal())
(-1.9599639845400576, 1.9599639845400576)
但有时更有效(即更短)的间隔将围绕分布的模式。为了解决这个问题,我们可以定义:
function modeinterval(d,p=0.95)
mcdf = cdf(d,mode(d))
endpoints = mcdf < p/2 ? (0,p) : mcdf > 1-p/2 ? (1-p,1) : (mcdf-p/2,mcdf+p/2)
return map(x->quantile(d,x), endpoints)
end
对于Normal分布,它无关紧要,因为模式也是中位数,但对于其他分布,例如Beta,我们可以:
julia> modeinterval(Beta(2,8),0.2)
(0.09639068616673087, 0.15355172436770012)
julia> medianinterval(Beta(2,8),0.2)
(0.1498495815725847, 0.21227857915644155)
julia> 0.15355172436770012 - 0.09639068616673087
0.05716103820096925
julia> 0.21227857915644155 - 0.1498495815725847
0.06242899758385684
模式间隔覆盖分布的相同部分,长度较短。有关相关讨论,请参阅Credible interval。