-
Notifications
You must be signed in to change notification settings - Fork 37
Description
I believe I found an issue, that may or may not be related to the previous issue I created (#190).
So, with a very similar model to the first issue I created, I now tried to see what happens when I query using a chain, and instead of specifying a conditional, explicitly ignoring one (so setting it as missing or nothing). I believe this should be possible, because otherwise I cannot think of how else to perform such a query. Essentially, when having 2 random variables A and B, I just want to calculate P(A).
using Turing
@model function gdemo(x, y)
s ~ InverseGamma(2, 3)
m ~ Normal(0, sqrt(s))
x ~ Normal(m, sqrt(s))
for i in 1:length(y)
y[i] ~ Normal(x, sqrt(s))
end
end
model_gdemo = gdemo(1.0, [1.5, 0.0])
c2 = sample(model_gdemo, NUTS(0.65), 100)
result1 = prob"y = [1.5] | chain = c2, model = model_gdemo, x = nothing"Stacktrace
MethodError: no method matching vectorize(::Distributions.Normal{Float64}, ::Missing)
Closest candidates are:
vectorize(::Distributions.Distribution{Distributions.Univariate,S} where S<:Distributions.ValueSupport, !Matched::Real) at /home/michiel/.julia/packages/DynamicPPL/rPTnE/src/utils.jl:109
- tilde(::Random._GLOBAL_RNG, ::DynamicPPL.LikelihoodContext{NamedTuple{(:chain, :model, :x),Tuple{MCMCChains.Chains{Float64,AxisArrays.AxisArray{Float64,3,Array{Float64,3},Tuple{AxisArrays.Axis{:iter,StepRange{Int64,Int64}},AxisArrays.Axis{:var,Array{Symbol,1}},AxisArrays.Axis{:chain,UnitRange{Int64}}}},Missing,NamedTuple{(:parameters, :internals),Tuple{Array{Symbol,1},Array{Symbol,1}}},NamedTuple{(),Tuple{}}},DynamicPPL.Model{Main.workspace167.var"Immutable parameters support #1#2",(:x, :y),(),(),Tuple{Float64,Array{Float64,1}},Tuple{}},Missing}}}, ::DynamicPPL.SampleFromPrior, ::Distributions.Normal{Float64}, ::DynamicPPL.VarName{:x,Tuple{}}, ::Tuple{}, ::DynamicPPL.VarInfo{NamedTuple{(:s, :m, :x),Tuple{DynamicPPL.Metadata{Dict{DynamicPPL.VarName{:s,Tuple{}},Int64},Array{Distributions.InverseGamma{Float64},1},Array{DynamicPPL.VarName{:s,Tuple{}},1},Array{Float64,1},Array{Set{DynamicPPL.Selector},1}},DynamicPPL.Metadata{Dict{DynamicPPL.VarName{:m,Tuple{}},Int64},Array{Distributions.Normal{Float64},1},Array{DynamicPPL.VarName{:m,Tuple{}},1},Array{Float64,1},Array{Set{DynamicPPL.Selector},1}},DynamicPPL.Metadata{Dict{DynamicPPL.VarName{:x,Tuple{}},Int64},Array{Distributions.Normal{Float64},1},Array{DynamicPPL.VarName{:x,Tuple{}},1},Array{Float64,1},Array{Set{DynamicPPL.Selector},1}}}},Float64})@context_implementations.jl:34
2. tilde_assume(::Random._GLOBAL_RNG, ::DynamicPPL.LikelihoodContext{NamedTuple{(:chain, :model, :x),Tuple{MCMCChains.Chains{Float64,AxisArrays.AxisArray{Float64,3,Array{Float64,3},Tuple{AxisArrays.Axis{:iter,StepRange{Int64,Int64}},AxisArrays.Axis{:var,Array{Symbol,1}},AxisArrays.Axis{:chain,UnitRange{Int64}}}},Missing,NamedTuple{(:parameters, :internals),Tuple{Array{Symbol,1},Array{Symbol,1}}},NamedTuple{(),Tuple{}}},DynamicPPL.Model{Main.workspace167.var"Immutable parameters support #1#2",(:x, :y),(),(),Tuple{Float64,Array{Float64,1}},Tuple{}},Missing}}}, ::DynamicPPL.SampleFromPrior, ::Distributions.Normal{Float64}, ::DynamicPPL.VarName{:x,Tuple{}}, ::Tuple{}, ::DynamicPPL.VarInfo{NamedTuple{(:s, :m, :x),Tuple{DynamicPPL.Metadata{Dict{DynamicPPL.VarName{:s,Tuple{}},Int64},Array{Distributions.InverseGamma{Float64},1},Array{DynamicPPL.VarName{:s,Tuple{}},1},Array{Float64,1},Array{Set{DynamicPPL.Selector},1}},DynamicPPL.Metadata{Dict{DynamicPPL.VarName{:m,Tuple{}},Int64},Array{Distributions.Normal{Float64},1},Array{DynamicPPL.VarName{:m,Tuple{}},1},Array{Float64,1},Array{Set{DynamicPPL.Selector},1}},DynamicPPL.Metadata{Dict{DynamicPPL.VarName{:x,Tuple{}},Int64},Array{Distributions.Normal{Float64},1},Array{DynamicPPL.VarName{:x,Tuple{}},1},Array{Float64,1},Array{Set{DynamicPPL.Selector},1}}}},Float64})@context_implementations.jl:52
3. Immutable parameters support #1@Other: 5[inlined]
4. (::Main.workspace167.var"Immutable parameters support #1#2")(::Random._GLOBAL_RNG, ::DynamicPPL.Model{Main.workspace167.var"Immutable parameters support #1#2",(:x, :y),(),(:x,),Tuple{Missing,Array{Float64,1}},Tuple{}}, ::DynamicPPL.VarInfo{NamedTuple{(:s, :m, :x),Tuple{DynamicPPL.Metadata{Dict{DynamicPPL.VarName{:s,Tuple{}},Int64},Array{Distributions.InverseGamma{Float64},1},Array{DynamicPPL.VarName{:s,Tuple{}},1},Array{Float64,1},Array{Set{DynamicPPL.Selector},1}},DynamicPPL.Metadata{Dict{DynamicPPL.VarName{:m,Tuple{}},Int64},Array{Distributions.Normal{Float64},1},Array{DynamicPPL.VarName{:m,Tuple{}},1},Array{Float64,1},Array{Set{DynamicPPL.Selector},1}},DynamicPPL.Metadata{Dict{DynamicPPL.VarName{:x,Tuple{}},Int64},Array{Distributions.Normal{Float64},1},Array{DynamicPPL.VarName{:x,Tuple{}},1},Array{Float64,1},Array{Set{DynamicPPL.Selector},1}}}},Float64}, ::DynamicPPL.SampleFromPrior, ::DynamicPPL.LikelihoodContext{NamedTuple{(:chain, :model, :x),Tuple{MCMCChains.Chains{Float64,AxisArrays.AxisArray{Float64,3,Array{Float64,3},Tuple{AxisArrays.Axis{:iter,StepRange{Int64,Int64}},AxisArrays.Axis{:var,Array{Symbol,1}},AxisArrays.Axis{:chain,UnitRange{Int64}}}},Missing,NamedTuple{(:parameters, :internals),Tuple{Array{Symbol,1},Array{Symbol,1}}},NamedTuple{(),Tuple{}}},DynamicPPL.Model{Main.workspace167.var"Immutable parameters support #1#2",(:x, :y),(),(),Tuple{Float64,Array{Float64,1}},Tuple{}},Missing}}}, ::Missing, ::Array{Float64,1})@none:0
5. macro expansion@model.jl:0[inlined]
6. _evaluate(::Random._GLOBAL_RNG, ::DynamicPPL.Model{Main.workspace167.var"Immutable parameters support #1#2",(:x, :y),(),(:x,),Tuple{Missing,Array{Float64,1}},Tuple{}}, ::DynamicPPL.VarInfo{NamedTuple{(:s, :m, :x),Tuple{DynamicPPL.Metadata{Dict{DynamicPPL.VarName{:s,Tuple{}},Int64},Array{Distributions.InverseGamma{Float64},1},Array{DynamicPPL.VarName{:s,Tuple{}},1},Array{Float64,1},Array{Set{DynamicPPL.Selector},1}},DynamicPPL.Metadata{Dict{DynamicPPL.VarName{:m,Tuple{}},Int64},Array{Distributions.Normal{Float64},1},Array{DynamicPPL.VarName{:m,Tuple{}},1},Array{Float64,1},Array{Set{DynamicPPL.Selector},1}},DynamicPPL.Metadata{Dict{DynamicPPL.VarName{:x,Tuple{}},Int64},Array{Distributions.Normal{Float64},1},Array{DynamicPPL.VarName{:x,Tuple{}},1},Array{Float64,1},Array{Set{DynamicPPL.Selector},1}}}},Float64}, ::DynamicPPL.SampleFromPrior, ::DynamicPPL.LikelihoodContext{NamedTuple{(:chain, :model, :x),Tuple{MCMCChains.Chains{Float64,AxisArrays.AxisArray{Float64,3,Array{Float64,3},Tuple{AxisArrays.Axis{:iter,StepRange{Int64,Int64}},AxisArrays.Axis{:var,Array{Symbol,1}},AxisArrays.Axis{:chain,UnitRange{Int64}}}},Missing,NamedTuple{(:parameters, :internals),Tuple{Array{Symbol,1},Array{Symbol,1}}},NamedTuple{(),Tuple{}}},DynamicPPL.Model{Main.workspace167.var"Immutable parameters support #1#2",(:x, :y),(),(),Tuple{Float64,Array{Float64,1}},Tuple{}},Missing}}})@model.jl:160
7. evaluate_threadunsafe(::Random._GLOBAL_RNG, ::DynamicPPL.Model{Main.workspace167.var"Immutable parameters support #1#2",(:x, :y),(),(:x,),Tuple{Missing,Array{Float64,1}},Tuple{}}, ::DynamicPPL.VarInfo{NamedTuple{(:s, :m, :x),Tuple{DynamicPPL.Metadata{Dict{DynamicPPL.VarName{:s,Tuple{}},Int64},Array{Distributions.InverseGamma{Float64},1},Array{DynamicPPL.VarName{:s,Tuple{}},1},Array{Float64,1},Array{Set{DynamicPPL.Selector},1}},DynamicPPL.Metadata{Dict{DynamicPPL.VarName{:m,Tuple{}},Int64},Array{Distributions.Normal{Float64},1},Array{DynamicPPL.VarName{:m,Tuple{}},1},Array{Float64,1},Array{Set{DynamicPPL.Selector},1}},DynamicPPL.Metadata{Dict{DynamicPPL.VarName{:x,Tuple{}},Int64},Array{Distributions.Normal{Float64},1},Array{DynamicPPL.VarName{:x,Tuple{}},1},Array{Float64,1},Array{Set{DynamicPPL.Selector},1}}}},Float64}, ::DynamicPPL.SampleFromPrior, ::DynamicPPL.LikelihoodContext{NamedTuple{(:chain, :model, :x),Tuple{MCMCChains.Chains{Float64,AxisArrays.AxisArray{Float64,3,Array{Float64,3},Tuple{AxisArrays.Axis{:iter,StepRange{Int64,Int64}},AxisArrays.Axis{:var,Array{Symbol,1}},AxisArrays.Axis{:chain,UnitRange{Int64}}}},Missing,NamedTuple{(:parameters, :internals),Tuple{Array{Symbol,1},Array{Symbol,1}}},NamedTuple{(),Tuple{}}},DynamicPPL.Model{Main.workspace167.var"Immutable parameters support #1#2",(:x, :y),(),(),Tuple{Float64,Array{Float64,1}},Tuple{}},Missing}}})@model.jl:130
8. (::DynamicPPL.Model{Main.workspace167.var"Immutable parameters support #1#2",(:x, :y),(),(:x,),Tuple{Missing,Array{Float64,1}},Tuple{}})(::Random._GLOBAL_RNG, ::DynamicPPL.VarInfo{NamedTuple{(:s, :m, :x),Tuple{DynamicPPL.Metadata{Dict{DynamicPPL.VarName{:s,Tuple{}},Int64},Array{Distributions.InverseGamma{Float64},1},Array{DynamicPPL.VarName{:s,Tuple{}},1},Array{Float64,1},Array{Set{DynamicPPL.Selector},1}},DynamicPPL.Metadata{Dict{DynamicPPL.VarName{:m,Tuple{}},Int64},Array{Distributions.Normal{Float64},1},Array{DynamicPPL.VarName{:m,Tuple{}},1},Array{Float64,1},Array{Set{DynamicPPL.Selector},1}},DynamicPPL.Metadata{Dict{DynamicPPL.VarName{:x,Tuple{}},Int64},Array{Distributions.Normal{Float64},1},Array{DynamicPPL.VarName{:x,Tuple{}},1},Array{Float64,1},Array{Set{DynamicPPL.Selector},1}}}},Float64}, ::DynamicPPL.SampleFromPrior, ::DynamicPPL.LikelihoodContext{NamedTuple{(:chain, :model, :x),Tuple{MCMCChains.Chains{Float64,AxisArrays.AxisArray{Float64,3,Array{Float64,3},Tuple{AxisArrays.Axis{:iter,StepRange{Int64,Int64}},AxisArrays.Axis{:var,Array{Symbol,1}},AxisArrays.Axis{:chain,UnitRange{Int64}}}},Missing,NamedTuple{(:parameters, :internals),Tuple{Array{Symbol,1},Array{Symbol,1}}},NamedTuple{(),Tuple{}}},DynamicPPL.Model{Main.workspace167.var"Immutable parameters support #1#2",(:x, :y),(),(),Tuple{Float64,Array{Float64,1}},Tuple{}},Missing}}})@model.jl:92
9. (::DynamicPPL.Model{Main.workspace167.var"Immutable parameters support #1#2",(:x, :y),(),(:x,),Tuple{Missing,Array{Float64,1}},Tuple{}})(::DynamicPPL.VarInfo{NamedTuple{(:s, :m, :x),Tuple{DynamicPPL.Metadata{Dict{DynamicPPL.VarName{:s,Tuple{}},Int64},Array{Distributions.InverseGamma{Float64},1},Array{DynamicPPL.VarName{:s,Tuple{}},1},Array{Float64,1},Array{Set{DynamicPPL.Selector},1}},DynamicPPL.Metadata{Dict{DynamicPPL.VarName{:m,Tuple{}},Int64},Array{Distributions.Normal{Float64},1},Array{DynamicPPL.VarName{:m,Tuple{}},1},Array{Float64,1},Array{Set{DynamicPPL.Selector},1}},DynamicPPL.Metadata{Dict{DynamicPPL.VarName{:x,Tuple{}},Int64},Array{Distributions.Normal{Float64},1},Array{DynamicPPL.VarName{:x,Tuple{}},1},Array{Float64,1},Array{Set{DynamicPPL.Selector},1}}}},Float64}, ::Vararg{Any,N} where N)@model.jl:98
10. (::DynamicPPL.var"[WIP] Fix support for distributions with stochastic support #115#116"{DynamicPPL.Model{Main.workspace167.var"Immutable parameters support #1#2",(:x, :y),(),(:x,),Tuple{Missing,Array{Float64,1}},Tuple{}},DynamicPPL.VarInfo{NamedTuple{(:s, :m, :x),Tuple{DynamicPPL.Metadata{Dict{DynamicPPL.VarName{:s,Tuple{}},Int64},Array{Distributions.InverseGamma{Float64},1},Array{DynamicPPL.VarName{:s,Tuple{}},1},Array{Float64,1},Array{Set{DynamicPPL.Selector},1}},DynamicPPL.Metadata{Dict{DynamicPPL.VarName{:m,Tuple{}},Int64},Array{Distributions.Normal{Float64},1},Array{DynamicPPL.VarName{:m,Tuple{}},1},Array{Float64,1},Array{Set{DynamicPPL.Selector},1}},DynamicPPL.Metadata{Dict{DynamicPPL.VarName{:x,Tuple{}},Int64},Array{Distributions.Normal{Float64},1},Array{DynamicPPL.VarName{:x,Tuple{}},1},Array{Float64,1},Array{Set{DynamicPPL.Selector},1}}}},Float64},MCMCChains.Chains{Float64,AxisArrays.AxisArray{Float64,3,Array{Float64,3},Tuple{AxisArrays.Axis{:iter,StepRange{Int64,Int64}},AxisArrays.Axis{:var,Array{Symbol,1}},AxisArrays.Axis{:chain,UnitRange{Int64}}}},Missing,NamedTuple{(:parameters, :internals),Tuple{Array{Symbol,1},Array{Symbol,1}}},NamedTuple{(),Tuple{}}}})(::Tuple{Int64,Int64})@prob_macro.jl:197
11. iterate@generator.jl:47[inlined]
12. collect(::Base.Generator{Base.Iterators.ProductIterator{Tuple{UnitRange{Int64},UnitRange{Int64}}},DynamicPPL.var"[WIP] Fix support for distributions with stochastic support #115#116"{DynamicPPL.Model{Main.workspace167.var"Immutable parameters support #1#2",(:x, :y),(),(:x,),Tuple{Missing,Array{Float64,1}},Tuple{}},DynamicPPL.VarInfo{NamedTuple{(:s, :m, :x),Tuple{DynamicPPL.Metadata{Dict{DynamicPPL.VarName{:s,Tuple{}},Int64},Array{Distributions.InverseGamma{Float64},1},Array{DynamicPPL.VarName{:s,Tuple{}},1},Array{Float64,1},Array{Set{DynamicPPL.Selector},1}},DynamicPPL.Metadata{Dict{DynamicPPL.VarName{:m,Tuple{}},Int64},Array{Distributions.Normal{Float64},1},Array{DynamicPPL.VarName{:m,Tuple{}},1},Array{Float64,1},Array{Set{DynamicPPL.Selector},1}},DynamicPPL.Metadata{Dict{DynamicPPL.VarName{:x,Tuple{}},Int64},Array{Distributions.Normal{Float64},1},Array{DynamicPPL.VarName{:x,Tuple{}},1},Array{Float64,1},Array{Set{DynamicPPL.Selector},1}}}},Float64},MCMCChains.Chains{Float64,AxisArrays.AxisArray{Float64,3,Array{Float64,3},Tuple{AxisArrays.Axis{:iter,StepRange{Int64,Int64}},AxisArrays.Axis{:var,Array{Symbol,1}},AxisArrays.Axis{:chain,UnitRange{Int64}}}},Missing,NamedTuple{(:parameters, :internals),Tuple{Array{Symbol,1},Array{Symbol,1}}},NamedTuple{(),Tuple{}}}}})@array.jl:686
13. map(::Function, ::Base.Iterators.ProductIterator{Tuple{UnitRange{Int64},UnitRange{Int64}}})@abstractarray.jl:2188
14. loglikelihood(::NamedTuple{(:y,),Tuple{Array{Float64,1}}}, ::NamedTuple{(:chain, :model, :x),Tuple{MCMCChains.Chains{Float64,AxisArrays.AxisArray{Float64,3,Array{Float64,3},Tuple{AxisArrays.Axis{:iter,StepRange{Int64,Int64}},AxisArrays.Axis{:var,Array{Symbol,1}},AxisArrays.Axis{:chain,UnitRange{Int64}}}},Missing,NamedTuple{(:parameters, :internals),Tuple{Array{Symbol,1},Array{Symbol,1}}},NamedTuple{(),Tuple{}}},DynamicPPL.Model{Main.workspace167.var"Immutable parameters support #1#2",(:x, :y),(),(),Tuple{Float64,Array{Float64,1}},Tuple{}},Missing}}, ::DynamicPPL.Model{Main.workspace167.var"Immutable parameters support #1#2",(:x, :y),(),(),Tuple{Float64,Array{Float64,1}},Tuple{}}, ::Nothing)@prob_macro.jl:195
15. logprob(::NamedTuple{(:y,),Tuple{Array{Float64,1}}}, ::NamedTuple{(:chain, :model, :x),Tuple{MCMCChains.Chains{Float64,AxisArrays.AxisArray{Float64,3,Array{Float64,3},Tuple{AxisArrays.Axis{:iter,StepRange{Int64,Int64}},AxisArrays.Axis{:var,Array{Symbol,1}},AxisArrays.Axis{:chain,UnitRange{Int64}}}},Missing,NamedTuple{(:parameters, :internals),Tuple{Array{Symbol,1},Array{Symbol,1}}},NamedTuple{(),Tuple{}}},DynamicPPL.Model{Main.workspace167.var"Immutable parameters support #1#2",(:x, :y),(),(),Tuple{Float64,Array{Float64,1}},Tuple{}},Missing}})@prob_macro.jl:29
16. top-level scope@Local: 5