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)
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)
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)
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)