# Turing with both Poisson and Gaussian noise

**URL:** <https://discourse.julialang.org/t/turing-with-both-poisson-and-gaussian-noise/129369>\
**Category:** Statistics\
**Tags:** question, turing\
**Created:** [May 27, 2025, 8:14am UTC](https://discourse.julialang.org/t/turing-with-both-poisson-and-gaussian-noise/129369 "2025-05-27T08:14:20Z")\
**Posts on this page:** 4\
**Page:** 1

<div class="post-metadata">

**Author:** ![Cyan](https://avatars.discourse-cdn.com/v4/letter/c/278dde/32.png) [@Cyan](https://discourse.julialang.org/u/Cyan)\
**Post date:** [May 27, 2025, 8:14am UTC](https://discourse.julialang.org/t/turing-with-both-poisson-and-gaussian-noise/129369/1 "2025-05-27T08:14:21Z")

</div>

I have a set of data with both Poisson and Gaussian noise, which distribution I should choose in likelihood?  
My dataset looks like

```julia
obs = data + Poisson + Gaussian

```

PS  
My data is a series of images, it contains Gaussian and poisson noises. Iam not sure which likelihood function I should choose

---

<div class="post-metadata">

**Author:** ![eteppo](https://avatars.discourse-cdn.com/v4/letter/e/90db22/32.png) [@eteppo](https://discourse.julialang.org/u/eteppo)\
**Post date:** [May 27, 2025, 9:34am UTC](https://discourse.julialang.org/t/turing-with-both-poisson-and-gaussian-noise/129369/2 "2025-05-27T09:34:22Z")

</div>

Could you describe a bit more what you are modelling?

---

<div class="post-metadata">

**Author:** ![Cyan](https://avatars.discourse-cdn.com/v4/letter/c/278dde/32.png) [@Cyan](https://discourse.julialang.org/u/Cyan)\
**Post date:** [May 30, 2025, 7:21am UTC](https://discourse.julialang.org/t/turing-with-both-poisson-and-gaussian-noise/129369/3 "2025-05-30T07:21:37Z")

</div>

I mean for Gaussian noise, we usually use `y ~ Normal(predict, sigma)` to describe the noise in observation noise; But what if the noise is Poisson; and how to deal with the mixture noise?

---

<div class="post-metadata">

**Author:** ![sethaxen](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/sethaxen/32/35604_2.png) [@sethaxen](https://discourse.julialang.org/u/sethaxen)\
**Post date:** [May 30, 2025, 7:54am UTC](https://discourse.julialang.org/t/turing-with-both-poisson-and-gaussian-noise/129369/4 "2025-05-30T07:54:18Z")

</div>

I’m assuming you mean your observation model looks like

```julia
x ~ Poisson.(λ)
y ~ Normal.(m, s)
obs .= x .+ y

```

and you want a likelihood for `obs`. If your number of data points isn’t too high, you could do this:

```julia
x ~ Poisson.(λ)
obs ~ array_dist(Normal.(m .+ x, s))

```

which would model the Poisson-variate. The downside here is that you then can’t use NUTS because you now have discrete parameters.

If `λ` is large enough, Poisson is approximately Gaussian (restricted to integer support) with mean and variance `λ`. You could then convolve the two data distributions and use

```julia
obs ~ array_dist(Normal.(m .+ λ, s .+ sqrt.(λ)))

```
