朱莉娅:zscore和概率

时间:2017-06-02 10:37:24

标签: julia

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

2 个答案:

答案 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