Skip to content

Conversation

@sevyharris
Copy link

A PR to add an extra warning against user error if they initialize all the walkers in the same place. Based on this issue.
#38

Here's the code I was using to test a correct vs incorrect initialization:

import numpy as np
from sklearn.datasets import make_spd_matrix
import matplotlib.pyplot as plt
import zeus


ndim = 10
nwalkers = 30
nsteps= 5000

C = make_spd_matrix(ndim)

icov = np.linalg.inv(C)

mu = np.random.rand(ndim)

def log_prob(x, mu, icov):
    return -0.5 * np.dot(np.dot((x-mu).T,icov),(x-mu))

# correct initialization
start = np.random.randn(nwalkers, ndim)


# incorrect initialization
start = np.random.randn(1, ndim)
start = np.tile(start, (nwalkers, 1))

print(start)


sampler = zeus.EnsembleSampler(nwalkers, ndim, log_prob, args=[mu, icov])
sampler.run_mcmc(start, nsteps)


print('Samples: ', sampler.samples.flatten(discard = 0).shape)

Add validation for walker initial positions.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant