Turing: help with multinomial likelihood

Try

@model function model(y, ::Type{T} = Float64) where {T}
    n = sum(y)
    # priors
    α ~ Beta(1,1)
    β ~ Beta(1,1)
    γ ~ Beta(1,1)
    # rates
    p = Vector{T}(undef, 4)
    p[1] = α * β
    p[2] = α * (1 - β)
    p[3] = (1 - α) * (1 - γ)
    p[4] = (1 - α) * γ
    # likelihood
    y ~ Multinomial(n, p)
end

y = [14, 4, 5, 210]
chain = sample(model(y), MH(), 1000)

You can do this as well:

@model function model(y)
    n = sum(y)
    # priors
    α ~ Beta(1,1)
    β ~ Beta(1,1)
    γ ~ Beta(1,1)
    # rates
    p = [α * β
         α * (1 - β)
         (1 - α) * (1 - γ)
         (1 - α) * γ]
    # likelihood
    y ~ Multinomial(n, p)
end

y = [14, 4, 5, 210]
chain = sample(model(y), MH(), 1000)
2 Likes