Skip to content

Instantly share code, notes, and snippets.

@binarybana
Created July 14, 2014 21:15
Show Gist options
  • Save binarybana/4fbb4e6dfc5d30da234e to your computer and use it in GitHub Desktop.
Save binarybana/4fbb4e6dfc5d30da234e to your computer and use it in GitHub Desktop.
Mamba Distribution
using Mamba
data = (Symbol=>Any)[:x1 => [10, 12, 14, 9],
:x2 => [10,11,12,8]]
N = length(data[:x2])
data[:N] = N
d=10.0
model = Model(
x1 = Stochastic(1,
@modelexpr(N, lam,
Distribution[
begin
rate = d*exp(lam[i][1])
Poisson(rate)
end
for i=1:N]),
false),
x2 = Stochastic(1,
@modelexpr(N, lam,
Distribution[
begin
rate = d*exp(lam[i][2])
Poisson(rate)
end
for i=1:N]),
false),
lam = Stochastic(1,
@modelexpr(N,mu,sig,
Distribution[MultivariateNormal(mu,sig) for i=1:N]), true),
mu = Stochastic(1,:(IsoNormal(2,10)), true),
sig = Stochastic(2,:(InverseWishart(10, eye(2))), true)
)
temp = (Symbol=>Any)[:x1=>data[:x1], :x2=>data[:x2], :lam=>[rand(IsoNormal(2,1)) for i=1:N], :mu=>zeros(2), :sig => eye(2)]
#temp = (Symbol=>Any)[:x1=>data[:x1], :x2=>data[:x2], :lam=>rand(IsoNormal(2,1),data[:N]), :mu=>zeros(2), :sig => eye(2)]
inits = Dict{Symbol,Any}[copy(temp) for i=1:4]
scheme = [AMWG([:lam], ones(N)), AMWG([:mu],ones(2)/10),AMWG([:sig], ones(4))]
setsamplers!(model, scheme)
sim = mcmc(model, data, inits, 10000, burnin=2500, thin=2, chains=4)
describe(sim)
Error when using lam dimension = 1 (code above):
julia> include("mpm.jl")
MCMC Simulation of 10000 Iterations x 4 Chains...
exception on 1: ERROR: `convert` has no method matching convert(::Type{Float64}, ::Array{Float64,1})
in copy! at abstractarray.jl:149
in setinits! at /home/jason/.julia/Mamba/src/model/dependent.jl:120
in setinits! at /home/jason/.julia/Mamba/src/model/initialization.jl:26
in mcmc_sub! at /home/jason/.julia/Mamba/src/model/mcmc.jl:28
in anonymous at multi.jl:652
in run_work_thunk at multi.jl:613
in remotecall_fetch at multi.jl:686
in remotecall_fetch at multi.jl:701
in anonymous at task.jl:1348
ERROR: `convert` has no method matching convert(::Type{Chains}, ::MethodError)
in getindex at array.jl:121
in mcmc at /home/jason/.julia/Mamba/src/model/mcmc.jl:20
in include at ./boot.jl:245
in include_from_node1 at ./loading.jl:128
while loading /home/jason/GSP/research/samc/mamba/mpm.jl, in expression starting on line 47
Error for dimensionality of lam=2 (commented code, and changing lam dim 1 to 2):
julia> include("mpm.jl")
MCMC Simulation of 10000 Iterations x 4 Chains...
exception on 1: ERROR: stochastic parameter and distribution dimensions must match
in setinits! at /home/jason/.julia/Mamba/src/model/dependent.jl:124
in setinits! at /home/jason/.julia/Mamba/src/model/initialization.jl:26
in mcmc_sub! at /home/jason/.julia/Mamba/src/model/mcmc.jl:28
in anonymous at multi.jl:652
in run_work_thunk at multi.jl:613
in remotecall_fetch at multi.jl:686
in remotecall_fetch at multi.jl:701
in anonymous at task.jl:1348
ERROR: `convert` has no method matching convert(::Type{Chains}, ::ErrorException)
in getindex at array.jl:121
in mcmc at /home/jason/.julia/Mamba/src/model/mcmc.jl:20
in include at ./boot.jl:245
in include_from_node1 at ./loading.jl:128
while loading /home/jason/GSP/research/samc/mamba/mpm.jl, in expression starting on line 46
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment