from __future__ import division
%pylab inline
Populating the interactive namespace from numpy and matplotlib
from qinfer.test_models import SimplePrecessionModel
from qinfer.derived_models import RandomWalkModel
from qinfer.distributions import NormalDistribution, UniformDistribution
from qinfer.smc import SMCUpdater
prior = UniformDistribution([0, 1])
step_dist = NormalDistribution(0, 0.01**2)
model = RandomWalkModel(SimplePrecessionModel(), step_dist)
updater = SMCUpdater(model, 1000, prior)
experiments = np.logspace(-2, 4, 200)
true_model = prior.sample()
for idx_exp, experiment in enumerate(experiments):
outcome = model.simulate_experiment(true_model, experiment[np.newaxis])
updater.update(outcome, experiment[np.newaxis])
print true_model, updater.est_mean()
[[ 0.90754165]] [ 0.898664]