Example #1
0
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)
Example #2
0
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)
Example #3
0
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)
Example #4
0
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)
Example #5
0
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)