# Numerical errors in logit normal model using Turing.jl

**URL:** <https://discourse.julialang.org/t/numerical-errors-in-logit-normal-model-using-turing-jl/30602>\
**Category:** Probabilistic Programming\
**Tags:** question, turing\
**Created:** [November 1, 2019, 7:01pm UTC](https://discourse.julialang.org/t/numerical-errors-in-logit-normal-model-using-turing-jl/30602 "2019-11-01T19:01:50Z")\
**Posts on this page:** 1\
**Showing post:** 12

<div class="post-metadata">

**Author:** ![trappmartin](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/trappmartin/32/1165_2.png) [@trappmartin](https://discourse.julialang.org/u/trappmartin)\
**Post date:** [November 8, 2019, 7:52pm UTC](https://discourse.julialang.org/t/numerical-errors-in-logit-normal-model-using-turing-jl/30602/12 "2019-11-08T19:52:31Z")

</div>

Please do the following for now. I’ll included this into the PR. Sorry for the inconvenience!

```julia
using FillArrays

"""
    MvBinomialLogit(n::Vector{<:Int}, logpitp::Vector{<:Real})

A multivariate binomial logit distribution with `n` trials and logit values of `logitp`.
"""
struct MvBinomialLogit{T<:Real, I<:Int} <: DiscreteMultivariateDistribution
    n::Vector{I}
    logitp::Vector{T}
end

Distributions.length(d::MvBinomialLogit) = length(d.n)

function Distributions.logpdf(d::MvBinomialLogit{<:Real}, ks::Vector{<:Integer})
    return sum(Turing.logpdf_binomial_logit.(d.n, d.logitp, ks))
end

@model normal_logit(n, x) = begin

    n_obs = length(n)

    ## hyperparameters for varying effectgs
    ā ~ Normal(0, 0.5)
    σ_a ~ Truncated(Exponential(3), 0, Inf)

    # varying intercepts for each observation
    a ~ MvNormal(Fill(ā, n_obs), σ_a)

    x ~ MvBinomialLogit(n, a)
end

```

---

_[View the full topic](https://discourse.julialang.org/t/numerical-errors-in-logit-normal-model-using-turing-jl/30602)._
