# StackOverflowError when fitting data to a von Mises distribution

**URL:** <https://discourse.julialang.org/t/stackoverflowerror-when-fitting-data-to-a-von-mises-distribution/45406>\
**Category:** Probabilistic Programming\
**Created:** [August 23, 2020, 8:26am UTC](https://discourse.julialang.org/t/stackoverflowerror-when-fitting-data-to-a-von-mises-distribution/45406 "2020-08-23T08:26:21Z")\
**Posts on this page:** 5\
**Page:** 1

<div class="post-metadata">

**Author:** ![oscarbelmon](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/oscarbelmon/32/17411_2.png) [@oscarbelmon](https://discourse.julialang.org/u/oscarbelmon)\
**Post date:** [August 23, 2020, 8:26am UTC](https://discourse.julialang.org/t/stackoverflowerror-when-fitting-data-to-a-von-mises-distribution/45406/1 "2020-08-23T08:26:21Z")

</div>

Hi everyone.

I’m trying to use Turing.jl to fit data to a von Mises circular distribution, and I am having some “stack overflow” issues during the fitting.

This is my (very simple) code (coin flip adaptation):

```julia
using Turing
using Distributions

μ = 0; κ = 517
vm = VonMises(μ, κ)
data = rand(vm, 100)

@model model(x) = begin
    μ ~ Normal(0, 10)
    κ ~ Uniform(450, 550)
    N = length(x)
    for n in 1:N
        x[n] ~ VonMises(μ, κ)
    end
end

ϵ = 0.05
τ = 10
iterations = 1000

chain = sample(model(data), HMC(ϵ, τ), iterations, progress=false)

```

The error is “StackOverflowError: in besselix at SpecialFunctions/LC8dm/src/bessel.jl:583”

Thank you very much in advance.

---

<div class="post-metadata">

**Author:** ![mohamed82008](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/mohamed82008/32/18171_2.png) [@mohamed82008](https://discourse.julialang.org/u/mohamed82008)\
**Post date:** [August 23, 2020, 8:39am UTC](https://discourse.julialang.org/t/stackoverflowerror-when-fitting-data-to-a-von-mises-distribution/45406/2 "2020-08-23T08:39:34Z")

</div>

This is a known issue [https://github.com/TuringLang/DistributionsAD.jl/blob/bc0ab9ae3f8754c2beb1fa5cf4d7265a26e625a1/test/ad/distributions.jl#L220](https://github.com/TuringLang/DistributionsAD.jl/blob/bc0ab9ae3f8754c2beb1fa5cf4d7265a26e625a1/test/ad/distributions.jl#L220). One fix is to have a pure Julia implementation of the `besselix` function.

---

<div class="post-metadata">

**Author:** ![mohamed82008](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/mohamed82008/32/18171_2.png) [@mohamed82008](https://discourse.julialang.org/u/mohamed82008)\
**Post date:** [August 23, 2020, 8:43am UTC](https://discourse.julialang.org/t/stackoverflowerror-when-fitting-data-to-a-von-mises-distribution/45406/3 "2020-08-23T08:43:49Z")

</div>

If you are up for the task, check this [https://github.com/JuliaMath/SpecialFunctions.jl/blob/cf85c05f2c7b77cec2d0ca23209d4c780eaa4c52/docs/src/functions\_overview.md#bessel-functions](https://github.com/JuliaMath/SpecialFunctions.jl/blob/cf85c05f2c7b77cec2d0ca23209d4c780eaa4c52/docs/src/functions_overview.md#bessel-functions).

---

<div class="post-metadata">

**Author:** ![oscarbelmon](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/oscarbelmon/32/17411_2.png) [@oscarbelmon](https://discourse.julialang.org/u/oscarbelmon)\
**Post date:** [August 24, 2020, 6:49am UTC](https://discourse.julialang.org/t/stackoverflowerror-when-fitting-data-to-a-von-mises-distribution/45406/4 "2020-08-24T06:49:17Z")

</div>

Hi Mohamed.

Thank you very much for your quick answer. I didn’t know about the issue (absolute beginner in Julia). I shall take a look to the references you sent to me.

Many thanks again.

---

<div class="post-metadata">

**Author:** ![MatthewH](https://avatars.discourse-cdn.com/v4/letter/m/a6a055/32.png) [@MatthewH](https://discourse.julialang.org/u/MatthewH)\
**Post date:** [September 11, 2020, 8:05am UTC](https://discourse.julialang.org/t/stackoverflowerror-when-fitting-data-to-a-von-mises-distribution/45406/5 "2020-09-11T08:05:26Z")

</div>

Hi,

I’d also be very interested in getting von Mises distributions distributions working.

When you say a pure Julia function is needed, are there any specific requirements for that? Would a straight conversion of [netlib.org/amos/zbesi.f](http://netlib.org/amos/zbesi.f) and associated functions be suitable, or does it have to match a technique already used in SpecialFunctions?

Thanks.
