# Can't get quantiles of the Kolmogorov-Smirnov (KSDist) distribution

**URL:** https://discourse.julialang.org/t/cant-get-quantiles-of-the-kolmogorov-smirnov-ksdist-distribution/31065
**Category:** Statistics
**Created:** [November 13, 2019, 10:42pm UTC](https://discourse.julialang.org/t/cant-get-quantiles-of-the-kolmogorov-smirnov-ksdist-distribution/31065 "2019-11-13T22:42:09Z")
**Posts on this page:** 3
**Page:** 1

<div class="post-metadata">

### Author: ![sylvaticus](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/sylvaticus/32/203883_2.png) [@sylvaticus](https://discourse.julialang.org/u/sylvaticus)
#### Post date: [November 13, 2019, 10:42pm UTC](https://discourse.julialang.org/t/cant-get-quantiles-of-the-kolmogorov-smirnov-ksdist-distribution/31065/1 "2019-11-13T22:42:09Z")

</div>

I am trying to replicate this table (from the MITx course in “Fundamental of statistics”):

 ![KS%20Table](https://global.discourse-cdn.com/julialang/original/3X/8/6/86026e9367c3a1ef1c9faaf90ae4ce0ae7731d2a.png)

I can get the cdf, but not the quantiles. For example, for n=7:

```julia
julia> using Distributions
julia> KSd = KSDist(7)
KSDist(n=7)
julia> cdf(KSd,0.48342)
0.9499971874088311
julia> quantile(KSd,0.95)
ERROR: MethodError: no method matching iterate(::KSDist)
Closest candidates are:
  iterate(::Core.SimpleVector) at essentials.jl:604
  iterate(::Core.SimpleVector, ::Any) at essentials.jl:604
  iterate(::ExponentialBackOff) at error.jl:214
  ...
Stacktrace:
 [1] copyto!(::Array{Float64,1}, ::KSDist) at ./abstractarray.jl:722
 [2] _collect(::UnitRange{Int64}, ::KSDist, ::Base.HasEltype, ::Base.HasLength) at ./array.jl:550
 [3] collect(::KSDist) at ./array.jl:544
 [4] #quantile#50(::Bool, ::typeof(quantile), ::KSDist, ::Float64) at /buildworker/worker/package_linux64/build/usr/share/julia/stdlib/v1.2/Statistics/src/Statistics.jl:941
 [5] quantile(::KSDist, ::Float64) at /buildworker/worker/package_linux64/build/usr/share/julia/stdlib/v1.2/Statistics/src/Statistics.jl:941
 [6] top-level scope at none:0

```

Are quantiles not defined for the KSDis distribution ? Would be there any workaround ?

---

<div class="post-metadata">

### Author: ![longemen3000](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/longemen3000/32/7298_2.png) [@longemen3000](https://discourse.julialang.org/u/longemen3000)
#### Post date: [November 14, 2019, 3:49am UTC](https://discourse.julialang.org/t/cant-get-quantiles-of-the-kolmogorov-smirnov-ksdist-distribution/31065/2 "2019-11-14T03:49:44Z")

</div>

> [@sylvaticus](#):
>
> Are quantiles not defined for the KSDis distribution

efectively.

```julia
julia> methodswith(KSDist)
[1] ccdf(d::KSDist, x::Float64) in Distributions at C:\Users\andre\.julia\packages\Distributions\wRw5p\src\univariate\continuous\ksdist.jl:53
[2] cdf(d::KSDist, x::Float64) in Distributions at C:\Users\andre\.julia\packages\Distributions\wRw5p\src\univariate\continuous\ksdist.jl:24
[3] maximum(d::KSDist) in Distributions at C:\Users\andre\.julia\packages\Distributions\wRw5p\src\univariates.jl:148
[4] minimum(d::KSDist) in Distributions at C:\Users\andre\.julia\packages\Distributions\wRw5p\src\univariates.jl:147

```

for a workaround, maybe solving for a point by newton or other method?

---

<div class="post-metadata">

### Author: ![longemen3000](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/longemen3000/32/7298_2.png) [@longemen3000](https://discourse.julialang.org/u/longemen3000)
#### Post date: [November 14, 2019, 4:31am UTC](https://discourse.julialang.org/t/cant-get-quantiles-of-the-kolmogorov-smirnov-ksdist-distribution/31065/3 "2019-11-14T04:31:59Z")

</div>

for example:

```julia
using Roots
function myquantile(dist::KSDist,px::T) where T<:Real
    return Roots.find_zero(x->cdf(dist,x) - px,(0.0,1.0))
end

julia> myquantile(KSd,0.95)
0.4834236023636414

```

Update: there exists the function `Distributions.quantile_bisect` that calculates the quantile via bisection, and is integrated on Distributions.jl, so this works without additional packages:

```julia
Distributions.quantile_bisect(KSd,0.95)
0.48342360236396026

```

for measuring accuracy:

```julia
julia> cdf(KSd,Distributions.quantile_bisect(KSd,0.95))
0.9500000000002492

julia> cdf(KSd,myquantile(KSd,0.95))
0.95

```
