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)