true_KK = 6
TT = 5
N_t = fill(300, TT)
vv = 0.01
true_atoms = [Gaussian1D(kk, vv) for kk = 1:true_KK]
xx = Array(Vector{Float64}, TT)
true_zz = Array(Vector{Int64}, TT)
true_nn = zeros(Int, TT, true_KK)
epoch_chains = Array(Vector{Int}, TT)
epoch_chains[1] = [1, 2, 3]
epoch_chains[2] = [1, 2, 3, 4]
epoch_chains[3] = [2, 3, 4, 5]
epoch_chains[4] = [3, 4, 5, 6]
epoch_chains[5] = [3, 4, 5, 6]
for tt = 1:TT
n_chains = length(epoch_chains[tt])
mix = ones(Float64, n_chains)/n_chains
xx_ = ones(Float64, N_t[tt])
true_zz_ = ones(Int64, N_t[tt])
for n = 1:N_t[tt]
kk = sample(mix)
kk = epoch_chains[tt][kk]
true_zz_[n] = kk
xx_[n] = sample(true_atoms[kk])
true_nn[tt, kk] += 1
end
xx[tt] = xx_
true_zz[tt] = true_zz_
end
m0= mean(xx[1])
v0 = 2
q0 = Gaussian1DGaussian1D(m0, v0, vv)
init_KK = 3
rcrp_aa = 1
rcrp_a1 = 1
rcrp_a2 = 1
rcrp = RCRP(q0, init_KK, rcrp_aa, TT, rcrp_a1, rcrp_a2)
# sampling
zz = Array(Vector{Int64}, TT)
for tt = 1:TT
zz[tt] = rand(1:rcrp.K, N_t[tt])
end
n_burnins = 100
n_lags = 1
n_samples = 400
sample_hyperparam = true
n_internals = 10
store_every = 10000
filename = "demo_RCRP_Gaussian1DGaussian1D_"
nn, components, zz2table = collapsed_gibbs_sampler!(rcrp, xx, zz,
n_burnins, n_lags, n_samples, sample_hyperparam, n_internals, store_every, filename)