This notebook is a work in progress.
from __future__ import division, print_function
%matplotlib inline
import numpy as np
import matplotlib.pyplot as plt
plt.style.use('ggplot')
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()