def check_filter_and_sample(A, B, C, d, mu_init, sigma_init, data): rngstate = np.random.get_state() ll1, sample1 = filter_and_sample(mu_init, sigma_init, A, B.dot(B.T), C, np.diag(d ** 2), data) np.random.set_state(rngstate) ll2, sample2 = filter_and_sample_diagonal(mu_init, sigma_init, A, B.dot(B.T), C, d ** 2, data) assert np.isclose(ll1, ll2) assert np.allclose(sample1, sample2)
def check_filter_and_sample(A, B, C, d, mu_init, sigma_init, data): rngstate = np.random.get_state() ll1, sample1 = filter_and_sample(mu_init, sigma_init, A, B.dot(B.T), C, np.diag(d**2), data) np.random.set_state(rngstate) ll2, sample2 = filter_and_sample_diagonal(mu_init, sigma_init, A, B.dot(B.T), C, d**2, data) assert np.isclose(ll1, ll2) assert np.allclose(sample1, sample2)
def resample_states(self): # Have the observation object compute the conditional mean and covariance conditional_mean = self.data.conditional_mean() conditional_cov = self.data.conditional_cov(flat=True) ll, self.stateseq = filter_and_sample_diagonal( self.mu_init, self.sigma_init, self.A, self.sigma_states, self.C, conditional_cov, conditional_mean) assert np.all(np.isfinite(self.stateseq))
def resample(self, conditional_mean, conditional_cov): # Filter and sample with heterogeneous noise from the Polya gamma obs assert isinstance(self.model.emission_distn, PGMultinomialRegression) assert conditional_mean.shape == (self.T, self.p) assert conditional_cov.shape == (self.T, self.p) ll, self.stateseq = filter_and_sample_diagonal( self.mu_init, self.sigma_init, self.A, self.B, self.sigma_states, self.C, self.D, conditional_cov, self.inputs, conditional_mean) assert np.all(np.isfinite(self.stateseq))
def check_filter_and_sample(A, B, sigma_states, C, D, sigma_obs, mu_init, sigma_init, inputs, data): rngstate = np.random.get_state() ll1, sample1 = filter_and_sample(mu_init, sigma_init, A, B, sigma_states, C, D, sigma_obs, inputs, inputs) np.random.set_state(rngstate) ll2, sample2 = filter_and_sample_diagonal(mu_init, sigma_init, A, B, sigma_states, C, D, np.diag(sigma_obs), inputs, data) assert np.isclose(ll1, ll2) assert np.allclose(sample1, sample2)
def resample(self, conditional_mean, conditional_cov): # Filter and sample with heterogeneous noise from the Polya gamma obs assert isinstance(self.model.emission_distn, PGMultinomialRegression) assert conditional_mean.shape == (self.T, self.p) assert conditional_cov.shape == (self.T, self.p) ll, self.stateseq = filter_and_sample_diagonal( self.mu_init, self.sigma_init, self.A, self.sigma_states, self.C, conditional_cov, conditional_mean) assert np.all(np.isfinite(self.stateseq))