Пример #1
0
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)
Пример #3
0
    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))
Пример #4
0
    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))
Пример #5
0
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)
Пример #6
0
    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))