Exemplo n.º 1
0
 def __init__(self, niter=10, verbose=10, theta0=None,
              ssm_cls=None, prior=None, data=None, store_x=False):
     for k in ['ssm_cls', 'prior', 'data', 'theta0', 'niter', 'store_x',
               'verbose']:
         setattr(self, k, locals()[k])
     theta = np.empty(shape=niter, dtype=self.prior.dtype)
     if store_x:
         x = ssm_cls.state_container(niter, len(self.data))
         self.chain = ssp.ThetaParticles(theta=theta, x=x)
     else:
         self.chain = ssp.ThetaParticles(theta=theta)
Exemplo n.º 2
0
    def __init__(self,
                 niter=10,
                 seed=None,
                 verbose=0,
                 theta0=None,
                 adaptive=True,
                 scale=1.,
                 rw_cov=None):
        """
        Parameters
        ----------

        niter: int
            number of MCMC iterations
        seed: int (default=None)
            pseudo-random seed (if None, generator is not seeded)
        verbose: int (default=0)
            progress report printed every (niter/verbose) iterations (never if 0)
        theta0: a structured array of size=1
            starting point, simulated from the prior if set to None
        adaptive: True/False
            whether to use the adaptive version or not
        scale: positive scalar (default = 1.)
            in the adaptive case, covariance of the proposal is scale^2 times 
            (2.38 / d) times the current estimate of the target covariance
        rw_cov: (d, d) array 
            covariance matrix of the random walk proposal (set to I_d if None)
        """
        for k in ['niter', 'seed', 'verbose', 'theta0', 'adaptive']:
            setattr(self, k, locals()[k])
        self.chain = ssp.ThetaParticles(theta=np.empty(shape=niter,
                                                       dtype=self.prior.dtype),
                                        lpost=np.empty(shape=niter))
        self.nacc = 0
        d = self.chain.dim
        if self.adaptive:
            optim_scale = 2.38 / np.sqrt(d)
            self.scale = scale * optim_scale
            self.cov_tracker = VanishCovTracker(dim=d, Sigma0=rw_cov)
            self.L = self.scale * self.cov_tracker.L
        else:
            if rw_cov is None:
                self.L = np.eye(d)
            else:
                self.L = cholesky(rw_cov, lower=True)
Exemplo n.º 3
0
 def step0(self):
     th0 = self.prior.rvs(size=1) if self.theta0 is None else self.theta0
     self.prop = ssp.ThetaParticles(theta=th0, lpost=np.zeros(1))
     self.compute_post()
     self.chain.copyto_at(0, self.prop, 0)