Exemplo n.º 1
0
 def testSinglePointSingleComponent_1d(self):
     x = array([0])
     mu = array([1])
     sigma = eye(1)
     self.assertAlmostEqual(
         pdf(x, mu, sigma),
         mvnormpdf(x, mu, sigma),
         delta=1e-6,
         msg='pmvnormpdf and mvnormpdf differ in result, %f != %f' %
         (pdf(x, mu, sigma), mvnormpdf(x, mu, sigma)))
     for i in range(10):
         x = array([uniform(-4, 4)])
         mu = array([uniform(-4, 4)])
         a = uniform(.1, 4)
         sigma = eye(1) * a
         p = pdf(x, loc=mu, scale=sqrt(sigma)[0])
         m = mvnormpdf(x, mu, sigma)
         self.assertAlmostEqual(
             p,
             m,
             delta=1e-6,
             msg=
             'pmvnormpdf and mvnormpdf differ in result, %0.8e != %0.8e, [%0.8e], (%d): %s, %s, %s '
             % (p, m, p - m, i, str(x), str(mu), str(sigma).replace(
                 '\n', ',')))
Exemplo n.º 2
0
 def testMultiplePointSingleComponent(self):
     for i in range(100):
         x = array([[uniform(-4, 4), uniform(-4, 4)], [uniform(-4, 4), uniform(-4, 4)]])
         mu = array([uniform(-4, 4), uniform(-4, 4)])
         a = uniform(0, 4)
         sigma = eye(2) + a
         self.assertAlmostEqual(float(pmvnormpdf(x, mu, sigma)[0][0]),
                 float(mvnormpdf(x, mu, sigma)[0]), 6,
                 'pmvnormpdf and mvnormpdf differ in result, %f != %f, (%d): %s, %s, %s ' % (float(pmvnormpdf(x, mu, sigma)[0][0]), float(mvnormpdf(x, mu, sigma)[0]), i, str(x), str(mu), str(sigma).replace('\n', ',')))
         self.assertAlmostEqual(float(pmvnormpdf(x, mu, sigma)[1][0]),
                 float(mvnormpdf(x, mu, sigma)[1]), 6,
                 'pmvnormpdf and mvnormpdf differ in result, %f != %f, (%d): %s, %s, %s ' % (float(pmvnormpdf(x, mu, sigma)[1][0]), float(mvnormpdf(x, mu, sigma)[1]), i, str(x), str(mu), str(sigma).replace('\n', ',')))
Exemplo n.º 3
0
 def testSinglePointSingleComponent_1d(self):
     x = array([0])
     mu = array([1])
     sigma = eye(1)
     self.assertAlmostEqual(pdf(x, mu, sigma), mvnormpdf(x, mu, sigma), delta=1e-6, msg='pmvnormpdf and mvnormpdf differ in result, %f != %f' % (pdf(x, mu, sigma), mvnormpdf(x, mu, sigma)))
     for i in range(10):
         x = array([uniform(-4, 4)])
         mu = array([uniform(-4, 4)])
         a = uniform(.1, 4)
         sigma = eye(1) * a
         p = pdf(x,loc= mu, scale= sqrt(sigma)[0])
         m = mvnormpdf(x, mu, sigma)
         self.assertAlmostEqual(p, m, delta=1e-6, msg='pmvnormpdf and mvnormpdf differ in result, %0.8e != %0.8e, [%0.8e], (%d): %s, %s, %s ' % (p, m, p - m, i, str(x), str(mu), str(sigma).replace('\n', ',')))
Exemplo n.º 4
0
 def testSinglePointSingleComponent(self):
     x = array([0, 0])
     mu = array([1, 1]).reshape(1,2)
     sigma = eye(2).reshape(1,2,2)
     mx = mvnormpdf(x, mu, sigma)
     px = pmvnormpdf(x, mu.squeeze(), sigma.squeeze())
     self.assertAlmostEqual(px, mx, 6, 'pmvnormpdf and mvnormpdf differ in result, %f != %f' % (px, mx))
     for i in range(100):
         x = array([uniform(-4, 4), uniform(-4, 4)])
         mu = array([uniform(-4, 4), uniform(-4, 4)]).reshape(1,2)
         a = uniform(0, 4)
         sigma = (eye(2) + a).reshape(1,2,2)
         mx = mvnormpdf(x, mu, sigma)
         px = pmvnormpdf(x, mu.squeeze(), sigma.squeeze())
         self.assertAlmostEqual(px, mx, 6, 'pmvnormpdf and mvnormpdf differ in result, %f != %f, (%d): %s, %s, %s ' % (px, mx, i, str(x), str(mu), str(sigma).replace('\n', ',')))
Exemplo n.º 5
0
 def testMultiplePointSingleComponent_1d(self):
     x = array([0,1,2,3,4])
     mu = array([1])
     sigma = eye(1).reshape(1,1,1)
     px = pdf(x, mu, sigma).squeeze()
     mx = mvnormpdf(x, mu, sigma)
     assert_array_almost_equal(px, mx, 6, 'pmvnormpdf and mvnormpdf differ in result, %s != %s' % (str(type(px)), str(type(mx))))
Exemplo n.º 6
0
    def testSinglePointSingleComponent(self):
        x = array([0, 0])
        mu = array([1, 1])
        sigma = eye(2)

        self.assertAlmostEqual(
            pmvnormpdf(x, mu, sigma), mvnormpdf(x, mu, sigma), 6,
            'pmvnormpdf and mvnormpdf differ in result, %f != %f' %
            (pmvnormpdf(x, mu, sigma), mvnormpdf(x, mu, sigma)))
        for i in range(100):
            x = array([uniform(-4, 4), uniform(-4, 4)])
            mu = array([uniform(-4, 4), uniform(-4, 4)])
            a = uniform(0, 4)
            sigma = eye(2) + a
            self.assertAlmostEqual(
                pmvnormpdf(x, mu, sigma), mvnormpdf(x, mu, sigma), 6,
                'pmvnormpdf and mvnormpdf differ in result, %f != %f, (%d): %s, %s, %s '
                % (pmvnormpdf(x, mu, sigma), mvnormpdf(x, mu, sigma), i,
                   str(x), str(mu), str(sigma).replace('\n', ',')))
Exemplo n.º 7
0
Arquivo: util.py Projeto: whitews/fcm
def check_mode(m, pm, pi, mu, sigma):
    """Check that modes are local maxima"""
    k, p = mu.shape
    z = np.zeros(p)
    tm = []  # true modes
    tpm = []  # true mode densities
    for _m, _pm in zip(m, pm):
        G = np.zeros((p, p))
        omega = sigma.copy()
        for j in range(k):
            omega[j] = inv(sigma[j])
            eij = _m - mu[j]
            S = np.dot(np.identity(p) - np.outer(eij, eij), omega[j])
            G += pi[j] * mvnormpdf(eij, z, sigma[j], use_gpu=False) * S
        if np.linalg.det(G) > 0:
            tm.append(_m)
            tpm.append(_pm)
    return np.array(tm), np.array(tpm)
Exemplo n.º 8
0
def check_mode(m, pm, pi, mu, sigma):
    """Check that modes are local maxima"""
    k, p = mu.shape
    z = np.zeros(p)
    tm = []  # true modes
    tpm = []  # true mode densities
    for _m, _pm in zip(m, pm):
        G = np.zeros((p, p))
        omega = sigma.copy()
        for j in range(k):
            omega[j] = inv(sigma[j])
            eij = _m - mu[j]
            S = np.dot(np.identity(p) - np.outer(eij, eij), omega[j])
            G += pi[j] * mvnormpdf(eij, z, sigma[j], use_gpu=False) * S
        if np.linalg.det(G) > 0:
            tm.append(_m)
            tpm.append(_pm)
    return np.array(tm), np.array(tpm)