# Distributions.jl: how to create a mixture of a scaled Beta distribution?

**URL:** https://discourse.julialang.org/t/distributions-jl-how-to-create-a-mixture-of-a-scaled-beta-distribution/117062
**Category:** General Usage
**Tags:** question, turing, distributions, bayesian-inference, probablistic
**Created:** [July 15, 2024, 5:06pm UTC](https://discourse.julialang.org/t/distributions-jl-how-to-create-a-mixture-of-a-scaled-beta-distribution/117062 "2024-07-15T17:06:48Z")
**Posts on this page:** 3
**Page:** 1

<div class="post-metadata">

### Author: ![DominiqueMakowski](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/dominiquemakowski/32/51410_2.png) [@DominiqueMakowski](https://discourse.julialang.org/u/DominiqueMakowski)
#### Post date: [July 15, 2024, 5:06pm UTC](https://discourse.julialang.org/t/distributions-jl-how-to-create-a-mixture-of-a-scaled-beta-distribution/117062/1 "2024-07-15T17:06:48Z")

</div>

Defining a mixture of 2 Beta distributions works as one would expect:

```julia
using Distributions, GLMakie
LocationScale(0.5, 1, Beta(1, 1))

d = MixtureModel(
    Beta[
        Beta(1, 1),
        Beta(2, 10)], [0.5, 0.5])

xaxis = range(-0.1, 1.1, length=1000)
lines(xaxis, pdf.(d, xaxis))

```

![image](https://global.discourse-cdn.com/julialang/original/3X/1/0/10158c062c0c3d492a1ea75f8d4f80acf43c4423.png)

Scaling one distribution works too:

```julia
d = 0.5 * Beta(2, 10)
lines(xaxis, pdf.(d, xaxis))

```

![image](https://global.discourse-cdn.com/julialang/original/3X/8/a/8a1e6020d2e597b9113a98d76da3c2d13c1554f7.png)

Unfortunately, setting a mixture of 2 scaled Beta distributions fails:

```julia
d = MixtureModel(
    Beta[
        0.5 * Beta(1, 1),
        0.5 * Beta(2, 10)], [0.5, 0.5])

```

```julia
ERROR: MethodError: Cannot `convert` an object of type 
  LocationScale{Float64, Continuous, Beta{Float64}} to an object of type
  Beta

Closest candidates are:
  convert(::Type{T}, ::T) where T
   @ Base Base.jl:84

```

I also tried setting the `LocationScale` for the first Beta but to no avail:

```julia
d = MixtureModel(
    LocationScale(0, 1, Beta(1, 1))[
        0.5 * Beta(1, 1),
        0.5 * Beta(2, 10)], [0.5, 0.5])

```

```julia
ERROR: MethodError: no method matching getindex(::LocationScale{…}, ::LocationScale{…}, ::LocationScale{…})

```

Any help to create a mixture of 2 scaled Betas would be much appreciated

---

<div class="post-metadata">

### Author: ![empet](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/empet/32/221303_2.png) [@empet](https://discourse.julialang.org/u/empet)
#### Post date: [July 15, 2024, 6:58pm UTC](https://discourse.julialang.org/t/distributions-jl-how-to-create-a-mixture-of-a-scaled-beta-distribution/117062/2 "2024-07-15T18:58:07Z")

</div>

If X\sim Beta(a,b), and c is a number in (0,1), then cX  
isn’t Beta distributed. Hence your d is not a mixture of Beta distributions.  
It works with just:

```julia
d = MixtureModel([0.5 * Beta(1, 1), 0.5 * Beta(2, 10)], [0.5, 0.5])

```

---

<div class="post-metadata">

### Author: ![DominiqueMakowski](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/dominiquemakowski/32/51410_2.png) [@DominiqueMakowski](https://discourse.julialang.org/u/DominiqueMakowski)
#### Post date: [July 15, 2024, 8:20pm UTC](https://discourse.julialang.org/t/distributions-jl-how-to-create-a-mixture-of-a-scaled-beta-distribution/117062/3 "2024-07-15T20:20:43Z")

</div>

Aah makes sense. Thanks!
