예제 #1
0
 def test_invert_lambert(self):
     # Test if we can transform and transform back
     mu, sigma, delta = 0.5, 1.7, 0.33
     x = np.random.normal(loc=mu, scale=sigma, size=ns)
 
     y = g.inverse(x, (mu, sigma, delta))
     x_prime = g.w_t(y, (mu, sigma, delta))
     assert np.allclose(x, x_prime)
예제 #2
0
def test_invert_lambert():
    # Test if we can transform and transform back
    mu, sigma, delta = 0.5, 1.7, 0.33
    x = np.random.normal(loc=mu, scale=sigma, size=ns)

    y = g.inverse(x, (mu, sigma, delta))
    x_prime = g.w_t(y, (mu, sigma, delta))
    assert np.allclose(x, x_prime)
예제 #3
0
 def test_recover_lambert(self):
     # Generate data from a normal, then apply the W transform, and check if we can recover parameters
     # See Table 2 of Georg's paper
     # These results seem a little worse, but we'd have to run many replications to directly compare.
     mu, sigma = 0, 1
     # print ('del_true\tns\tmu\tsigma\tdelta').expandtabs(10)
     for delta in [0, 1./3, 1., 1.5]:
         for n in [50, 100, 1000]:
             x = np.random.normal(loc=mu, scale=sigma, size=n)
             y = g.inverse(x, (mu, sigma, delta))
             mu_prime, sigma_prime, delta_prime = g.igmm(y)
             print(('%0.3f\t%d\t%0.3f\t%0.3f\t%0.3f' % (delta, n, mu_prime, sigma_prime, delta_prime)).expandtabs(10))
             assert np.abs(mu - mu_prime) < 10. / np.sqrt(n)
             assert np.abs(sigma - sigma_prime) < 10. / np.sqrt(n)
             assert np.abs(delta - delta_prime) < 10. / np.sqrt(n)
예제 #4
0
def test_recover_lambert():
    # Generate data from a normal, then apply the W transform, and check if we can recover parameters
    # See Table 2 of Georg's paper
    # These results seem a little worse, but we'd have to run many replications to directly compare.
    mu, sigma = 0, 1
    print ("del_true\tns\tmu\tsigma\tdelta").expandtabs(10)
    for delta in [0, 1.0 / 3, 1.0, 1.5]:
        for n in [50, 100, 1000]:
            x = np.random.normal(loc=mu, scale=sigma, size=n)
            y = g.inverse(x, (mu, sigma, delta))
            mu_prime, sigma_prime, delta_prime = g.igmm(y)
            print ("%0.3f\t%d\t%0.3f\t%0.3f\t%0.3f" % (delta, n, mu_prime, sigma_prime, delta_prime)).expandtabs(10)
            assert np.abs(mu - mu_prime) < 10.0 / np.sqrt(n)
            assert np.abs(sigma - sigma_prime) < 10.0 / np.sqrt(n)
            assert np.abs(delta - delta_prime) < 10.0 / np.sqrt(n)