# Cannot evaluate a vector for some ProductDistribution

**URL:** <https://discourse.julialang.org/t/cannot-evaluate-a-vector-for-some-productdistribution/87224>\
**Category:** Probabilistic Programming\
**Tags:** bayesian-inference\
**Created:** [September 13, 2022, 4:26pm UTC](https://discourse.julialang.org/t/cannot-evaluate-a-vector-for-some-productdistribution/87224 "2022-09-13T16:26:23Z")\
**Posts on this page:** 1\
**Showing post:** 2

<div class="post-metadata">

**Author:** ![Luis\_Calderon](https://avatars.discourse-cdn.com/v4/letter/l/5e9695/32.png) [@Luis\_Calderon](https://discourse.julialang.org/u/Luis_Calderon)\
**Post date:** [September 14, 2022, 10:34am UTC](https://discourse.julialang.org/t/cannot-evaluate-a-vector-for-some-productdistribution/87224/2 "2022-09-14T10:34:38Z")

</div>

So, I implemented the following workaround:

```julia
# So first we draw from the product distribution 
function LogNormal_SqrtScaledInverseChiSquared(ν, tau²)
    dgf(n) = (n + 1) / 2
    pd = ProductDistribution(LogNormal(0, 1), InverseGamma(dgf(ν), dgf(ν) * tau²))
    rv = Random.rand!(pd, zeros(2, 1000000))
    rv[2, :] = sqrt.(rv[2, :]) 
    rv = vec(prod(rv, dims=1))

    rv_cdf = ecdf(rv)
    obs = unique(rv)
    # Percentiles 
    cdf_obs = map(x -> rv_cdf(x), sort(obs))  

    # Generate probability mass function for next part 
    pmf = Float64[]
    for i in 1:length(obs)
        if i == 1 
            append!(pmf,cdf_obs[1])
        else
            append!(pmf, cdf_obs[i]-cdf_obs[i-1])
        end
    end
    # Generate, using MLE, the distribution object 
    d = DiscreteNonParametric(sort(obs), pmf)
    sample = rand(d, 1000000)

    # Make continuous 
    U = kde(sample)
    return U
end

```

---

_[View the full topic](https://discourse.julialang.org/t/cannot-evaluate-a-vector-for-some-productdistribution/87224)._
