from pybasicbayes.util.text import progprint_xrange from pylds.models import DefaultLDS npr.seed(0) # Set parameters D_obs = 1 D_latent = 2 D_input = 0 T = 2000 # Simulate from one LDS truemodel = DefaultLDS(D_obs, D_latent, D_input) inputs = np.random.randn(T, D_input) data, stateseq = truemodel.generate(T, inputs=inputs) # Fit with another LDS model = DefaultLDS(D_obs, D_latent, D_input) model.add_data(data, inputs=inputs) # Initialize with a few iterations of Gibbs for _ in progprint_xrange(10): model.resample_model() # Run EM def update(model): model.EM_step() return model.log_likelihood()
from pybasicbayes.distributions import Regression, DiagonalRegression from pybasicbayes.util.text import progprint_xrange from pylds.models import DefaultLDS, LDS npr.seed(0) # Model parameters D_obs = 4 D_latent = 4 T = 1000 # Simulate from an LDS truemodel = DefaultLDS(D_obs, D_latent) data, stateseq = truemodel.generate(T) # Mask off a chunk of data mask = np.ones_like(data, dtype=bool) chunksz = 100 for i, offset in enumerate(range(0, T, chunksz)): j = i % (D_obs + 1) if j < D_obs: mask[offset:min(offset + chunksz, T), j] = False if j == D_obs: mask[offset:min(offset + chunksz, T), :] = False # Fit with another LDS model = LDS(dynamics_distn=Regression(nu_0=D_latent + 3, S_0=D_latent * np.eye(D_latent), M_0=np.zeros((D_latent, D_latent)),