def test_z_mc4(): """test properties of z_mc, is STD correct, is 2*STD correct""" N = 3 z_arr = np.random.uniform(size=N) * 1.5 + 0.4 z_sigma = np.random.uniform(size=N) * 0.1 + 0.1 x = np.arange(0.1, 3.01, 0.01) z_mc_std = np.zeros(N) z_mc_mean = np.zeros(N) z_mc_95 = np.zeros(N) for i in range(N): pdf = mlab.normpdf(x, z_arr[i], z_sigma[i]) z_mc = np.array([pval.get_mc(pdf, x) for j in range(100000)]) z_mc_std[i] = np.std(z_mc) z_mc_mean[i] = np.mean(z_mc) z_mc_95[i] = pval.sigma_95(z_mc) dx = (x[1] - x[0]) / 2.0 print 'diff sig', z_sigma - z_mc_std, dx print 'diff mean', z_arr - z_mc_mean, dx print 'diff 2xsig', z_mc_95 - z_mc_std * 2, dx for i in range(N): np.testing.assert_almost_equal(z_sigma[i] - z_mc_std[i], 0, decimal=3) np.testing.assert_almost_equal(z_arr[i] - z_mc_mean[i], 0, decimal=3) np.testing.assert_almost_equal(2 * z_sigma[i] - z_mc_95[i], 0, decimal=2)
def test_sigma_95_axis(): """ test sigma_95 = 2xstd dev for gauss for N-d array""" arr = np.zeros((5e5, 10)) sigs = np.arange(10) * 0.1 + 0.5 for i in range(10): arr[:, i] = np.random.normal(size=5e5) * sigs[i] + sigs[i] sig95 = pval.sigma_95(arr, axis=0) print sig95 print sigs * 2.0 np.testing.assert_almost_equal(sigs * 2.0, sig95, decimal=2)
def test_sigma95_2(): """test sigma95 to high intermediate level of accuracy""" arr1 = np.arange(1000) np.random.shuffle(arr1) print 2 * pval.sigma_95(arr1) np.testing.assert_equal(np.abs(2 * pval.sigma_95(arr1) - 953) < 1, True)
def test_sigma95_3(): """test sigma95 to high level of accuracy""" arr2 = np.arange(1e4) * 1.0 np.random.shuffle(arr2) print 2 * pval.sigma_95(arr2) np.testing.assert_equal(np.abs(2 * pval.sigma_95(arr2) - 9540) < 1, True)
def test_sigma95_1(): """test sigma95 to high level of accuracy""" arr1 = np.random.normal(size=1e7) np.testing.assert_equal( np.abs(pval.sigma_95(arr1) - 2 * np.std(arr1)) < 0.01, True)