def __init__(self, bn,burnin=1000): """ @param bn: A causal Bayesian network from which samples are drawn. @type bn: L{CBN} @param burnin: The burn in for the L{GibbsSampler} used for generating interventional data. @type burnin: int """ super(CausalWorld,self).__init__(domain=Domain.copy(bn),variables=bn.variables()) self._pure_model = bn.copy(copy_domain=True) self._pure_sampler = ForwardSampler(self._pure_model) self._burnin = burnin self._data = None self._inter_sampler = {} self._inter_data = {}
def tryModel(self, model): # generate some samples cf = [] sampler = ForwardSampler(model) samples = sampler.samples(100) cf.append(CompactFactor(samples,domain=Domain())) icf = IncrementalCompactFactor(samples, domain=Domain()) for i in xrange(10): samples = sampler.samples(100) cf.append(CompactFactor(samples,domain=Domain())) icf.update(samples) # see if the sum of the CPT Factors in cf match that of icf for child in model.variables(): family = model.adg().parents(child) | set([child]) a = icf.makeFactor(family) b = cf[0].makeFactor(family) for f in cf[1:]: b += f.makeFactor(family) self.assert_(same_factor(a,b))