ENV["GKS_ENCODING"] = "utf-8" # Allows the use of unicode characters in Plots.jl
using Plots
using StatsPlots
using Turing
using Random
using Bijectors
# Set a seed.
Random.seed!(0)
# Define a strange model.
@model function gdemo(x)
~ InverseGamma(2, 3)
s² ~ Normal(0, sqrt(s²))
m = sin(m) + cos(m)
bumps = m + 5 * bumps
m for i in eachindex(x)
~ Normal(m, sqrt(s²))
x[i] end
return s², m
end
# Define our data points.
= [1.5, 2.0, 13.0, 2.1, 0.0]
x
# Set up the model call, sample from the prior.
= gdemo(x)
model
# Evaluate surface at coordinates.
evaluate(m1, m2) = logjoint(model, (m=m2, s²=invlink.(Ref(InverseGamma(2, 3)), m1)))
function plot_sampler(chain; label="")
# Extract values from chain.
= get(chain, [:s², :m, :lp])
val = link.(Ref(InverseGamma(2, 3)), val.s²)
ss = val.m
ms = val.lp
lps
# How many surface points to sample.
= 100
granularity
# Range start/stop points.
= 0.5
spread = minimum(ss) - spread * std(ss)
σ_start = maximum(ss) + spread * std(ss)
σ_stop = minimum(ms) - spread * std(ms)
μ_start = maximum(ms) + spread * std(ms)
μ_stop = collect(range(σ_start; stop=σ_stop, length=granularity))
σ_rng = collect(range(μ_start; stop=μ_stop, length=granularity))
μ_rng
# Make surface plot.
= surface(
p
σ_rng,
μ_rng,
evaluate;=(30, 65),
camera# ticks=nothing,
=false,
colorbar=:inferno,
color=label,
title
)
= 1:length(ms)
line_range
scatter3d!(
ss[line_range],
ms[line_range],
lps[line_range];=:viridis,
mc=collect(line_range),
marker_z=0,
msw=false,
legend=false,
colorbar=0.5,
alpha="σ",
xlabel="μ",
ylabel="Log probability",
zlabel=label,
title
)
return p
end;
Precompiling Turing... 867.9 ms ? OptimizationBase 1488.8 ms ? Optimization 2261.4 ms ? OptimizationOptimJL Info Given Turing was explicitly requested, output will be shown live WARNING: redefinition of constant OptimizationBase.OPTIMIZER_MISSING_ERROR_MESSAGE. This may fail, cause incorrect answers, or produce other errors. WARNING: Method definition (::Type{OptimizationBase.OptimizerMissingError})(Any) in module OptimizationBase at /home/runner/.julia/packages/OptimizationBase/sfIfa/src/solve.jl:23 overwritten at /home/runner/.julia/packages/OptimizationBase/sfIfa/src/solve.jl:177. ERROR: Method overwriting is not permitted during Module precompilation. Use `__precompile__(false)` to opt-out of precompilation. 5821.6 ms ? Turing 6088.4 ms ? Turing → TuringOptimExt WARNING: redefinition of constant OptimizationBase.OPTIMIZER_MISSING_ERROR_MESSAGE. This may fail, cause incorrect answers, or produce other errors. WARNING: Method definition (::Type{OptimizationBase.OptimizerMissingError})(Any) in module OptimizationBase at /home/runner/.julia/packages/OptimizationBase/sfIfa/src/solve.jl:23 overwritten at /home/runner/.julia/packages/OptimizationBase/sfIfa/src/solve.jl:177. ERROR: Method overwriting is not permitted during Module precompilation. Use `__precompile__(false)` to opt-out of precompilation. Precompiling Optimization... 861.8 ms ? OptimizationBase Info Given Optimization was explicitly requested, output will be shown live WARNING: redefinition of constant OptimizationBase.OPTIMIZER_MISSING_ERROR_MESSAGE. This may fail, cause incorrect answers, or produce other errors. WARNING: Method definition (::Type{OptimizationBase.OptimizerMissingError})(Any) in module OptimizationBase at /home/runner/.julia/packages/OptimizationBase/sfIfa/src/solve.jl:23 overwritten at /home/runner/.julia/packages/OptimizationBase/sfIfa/src/solve.jl:177. ERROR: Method overwriting is not permitted during Module precompilation. Use `__precompile__(false)` to opt-out of precompilation. 1486.2 ms ? Optimization WARNING: redefinition of constant OptimizationBase.OPTIMIZER_MISSING_ERROR_MESSAGE. This may fail, cause incorrect answers, or produce other errors. WARNING: Method definition (::Type{OptimizationBase.OptimizerMissingError})(Any) in module OptimizationBase at /home/runner/.julia/packages/OptimizationBase/sfIfa/src/solve.jl:23 overwritten at /home/runner/.julia/packages/OptimizationBase/sfIfa/src/solve.jl:177. ERROR: Method overwriting is not permitted during Module precompilation. Use `__precompile__(false)` to opt-out of precompilation. Precompiling OptimizationBase... Info Given OptimizationBase was explicitly requested, output will be shown live WARNING: redefinition of constant OptimizationBase.OPTIMIZER_MISSING_ERROR_MESSAGE. This may fail, cause incorrect answers, or produce other errors. WARNING: Method definition (::Type{OptimizationBase.OptimizerMissingError})(Any) in module OptimizationBase at /home/runner/.julia/packages/OptimizationBase/sfIfa/src/solve.jl:23 overwritten at /home/runner/.julia/packages/OptimizationBase/sfIfa/src/solve.jl:177. ERROR: Method overwriting is not permitted during Module precompilation. Use `__precompile__(false)` to opt-out of precompilation. 803.3 ms ? OptimizationBase WARNING: redefinition of constant OptimizationBase.OPTIMIZER_MISSING_ERROR_MESSAGE. This may fail, cause incorrect answers, or produce other errors. WARNING: Method definition (::Type{OptimizationBase.OptimizerMissingError})(Any) in module OptimizationBase at /home/runner/.julia/packages/OptimizationBase/sfIfa/src/solve.jl:23 overwritten at /home/runner/.julia/packages/OptimizationBase/sfIfa/src/solve.jl:177. ERROR: Method overwriting is not permitted during Module precompilation. Use `__precompile__(false)` to opt-out of precompilation. WARNING: redefinition of constant OptimizationBase.OPTIMIZER_MISSING_ERROR_MESSAGE. This may fail, cause incorrect answers, or produce other errors. WARNING: redefinition of constant OptimizationBase.OPTIMIZER_MISSING_ERROR_MESSAGE. This may fail, cause incorrect answers, or produce other errors. ┌ Warning: Replacing docs for `CommonSolve.solve :: Tuple{SciMLBase.OptimizationProblem, Any, Vararg{Any}}` in module `OptimizationBase` └ @ Base.Docs docs/Docs.jl:243 WARNING: redefinition of constant OptimizationBase.OPTIMIZER_MISSING_ERROR_MESSAGE. This may fail, cause incorrect answers, or produce other errors. ┌ Warning: Replacing docs for `CommonSolve.init :: Tuple{SciMLBase.OptimizationProblem, Any, Vararg{Any}}` in module `OptimizationBase` └ @ Base.Docs docs/Docs.jl:243 ┌ Warning: Replacing docs for `CommonSolve.solve! :: Tuple{SciMLBase.AbstractOptimizationCache}` in module `OptimizationBase` └ @ Base.Docs docs/Docs.jl:243 Precompiling OptimizationOptimJL... 821.8 ms ? OptimizationBase 1034.0 ms ? Optimization Info Given OptimizationOptimJL was explicitly requested, output will be shown live ┌ Warning: Module Optimization with build ID ffffffff-ffff-ffff-b728-a84d2b566c7e is missing from the cache. │ This may mean Optimization [7f7a1694-90dd-40f0-9382-eb1efda571ba] does not support precompilation but is imported by a module that does. └ @ Base loading.jl:2541 1183.5 ms ? OptimizationOptimJL ┌ Warning: Module Optimization with build ID ffffffff-ffff-ffff-b728-a84d2b566c7e is missing from the cache. │ This may mean Optimization [7f7a1694-90dd-40f0-9382-eb1efda571ba] does not support precompilation but is imported by a module that does. └ @ Base loading.jl:2541 Precompiling TuringOptimExt... 794.7 ms ? OptimizationBase 1004.9 ms ? Optimization 1197.5 ms ? OptimizationOptimJL 3835.3 ms ? Turing Info Given TuringOptimExt was explicitly requested, output will be shown live ┌ Warning: Module Turing with build ID ffffffff-ffff-ffff-8998-7a795d18fdde is missing from the cache. │ This may mean Turing [fce5fe82-541a-59a6-adf8-730c64b5f9a0] does not support precompilation but is imported by a module that does. └ @ Base loading.jl:2541 660.5 ms ? Turing → TuringOptimExt ┌ Warning: Module Turing with build ID ffffffff-ffff-ffff-8998-7a795d18fdde is missing from the cache. │ This may mean Turing [fce5fe82-541a-59a6-adf8-730c64b5f9a0] does not support precompilation but is imported by a module that does. └ @ Base loading.jl:2541