def test_corr(): "Test stats.corr" ds = datasets.get_uts() y = ds.eval("uts.x[:,:3]") x = ds.eval('Y.x') n_cases = len(y) df = n_cases - 2 corr = stats.corr(y, x) p = stats.rtest_p(corr, df) for i in range(len(corr)): r_sp, p_sp = scipy.stats.pearsonr(y[:, i], x) assert_almost_equal(corr[i], r_sp) assert_almost_equal(p[i], p_sp) # NaN with warnings.catch_warnings(): # divide by 0 warnings.simplefilter("ignore") eq_(stats.corr(np.arange(10), np.zeros(10)), 0) # perm y_perm = np.empty_like(y) for perm in permute_order(n_cases, 2): y_perm[perm] = y stats.corr(y, x, corr, perm) for i in range(len(corr)): r_sp, _ = scipy.stats.pearsonr(y_perm[:, i], x) assert_almost_equal(corr[i], r_sp)
def test_permutation(): """Test permutation""" v = Var(np.arange(6)) res = np.empty((5, 6)) for i, y in enumerate(resample(v, samples=5)): res[i] = y.x # with unit s = Factor('abc', tile=2) for i, y in enumerate(resample(v, samples=5, unit=s)): res[i] = y.x # check we have only appropriate cells cols = [np.unique(res[:, i]) for i in range(res.shape[1])] for i in range(3): eq_(len(np.setdiff1d(cols[i], [i, i + 3])), 0) for i in range(3, 6): eq_(len(np.setdiff1d(cols[i], [i, i - 3])), 0) # check we have some variability eq_(max(map(len, cols)), 2) # make sure sequence is stable eq_(list(map(tuple, permute_order(4, 3))), [(2, 3, 1, 0), (2, 1, 3, 0), (0, 2, 3, 1)])
def test_corr(): "Test stats.corr" ds = datasets.get_uts() y = ds.eval("uts.x[:,:3]") x = ds.eval('Y.x') n_cases = len(y) df = n_cases - 2 corr = stats.corr(y, x) p = stats.rtest_p(corr, df) for i in range(len(corr)): r_sp, p_sp = scipy.stats.pearsonr(y[:, i], x) assert corr[i] == pytest.approx(r_sp) assert p[i] == pytest.approx(p_sp) # NaN with warnings.catch_warnings(): # divide by 0 warnings.simplefilter("ignore") assert stats.corr(np.arange(10), np.zeros(10)) == 0 # perm y_perm = np.empty_like(y) for perm in permute_order(n_cases, 2): y_perm[perm] = y stats.corr(y, x, corr, perm) for i in range(len(corr)): r_sp, _ = scipy.stats.pearsonr(y_perm[:, i], x) assert corr[i] == pytest.approx(r_sp)
def test_corr(): "Test stats.corr" ds = datasets.get_uts() y = ds.eval("uts.x[:,:3]") x = ds.eval('Y.x') n_cases = len(y) df = n_cases - 2 corr = stats.corr(y, x) p = stats.rtest_p(corr, df) for i in xrange(len(corr)): r_sp, p_sp = scipy.stats.pearsonr(y[:, i], x) assert_almost_equal(corr[i], r_sp) assert_almost_equal(p[i], p_sp) # NaN r = stats.corr(np.arange(10), np.zeros(10)) eq_(r, 0) # perm y_perm = np.empty_like(y) for perm in permute_order(n_cases, 2): y_perm[perm] = y stats.corr(y, x, corr, perm) for i in xrange(len(corr)): r_sp, _ = scipy.stats.pearsonr(y_perm[:, i], x) assert_almost_equal(corr[i], r_sp)
def test_anova_perm(): "Test permutation argument for ANOVA" ds = datasets.get_uts() y = ds['uts'].x y_perm = np.empty_like(y) n_cases, n_tests = y.shape # balanced anova aov = glm._BalancedFixedNDANOVA(ds.eval('A*B')) r1 = aov.preallocate(y.shape[1:]) for perm in permute_order(n_cases, 2): aov.map(y, perm) r2 = r1.copy() y_perm[perm] = y aov.map(y_perm) assert_allclose(r2, r1, 1e-6, 1e-6) # full repeated measures anova aov = glm._BalancedMixedNDANOVA(ds.eval('A*B*rm')) r1 = aov.preallocate(y.shape[1:]) for perm in permute_order(n_cases, 2): aov.map(y, perm) r2 = r1.copy() y_perm[perm] = y aov.map(y_perm) assert_allclose(r2, r1, 1e-6, 1e-6) # incremental anova ds = ds[1:] y = ds['uts'].x y_perm = np.empty_like(y) n_cases, n_tests = y.shape aov = glm._IncrementalNDANOVA(ds.eval('A*B')) r1 = aov.preallocate(y.shape[1:]) for perm in permute_order(n_cases, 2): aov.map(y, perm) r2 = r1.copy() y_perm[perm] = y aov.map(y_perm) assert_allclose(r2, r1, 1e-6, 1e-6)
def test_anova_perm(): "Test permutation argument for ANOVA" ds = datasets.get_uts() y = ds['uts'].x y_perm = np.empty_like(y) n_cases, n_tests = y.shape # balanced anova aov = glm._BalancedFixedNDANOVA(ds.eval('A*B')) r1 = aov.preallocate(y.shape) for perm in permute_order(n_cases, 2): aov.map(y, perm) r2 = r1.copy() y_perm[perm] = y aov.map(y_perm) assert_allclose(r2, r1, 1e-6, 1e-6) # full repeated measures anova aov = glm._FullNDANOVA(ds.eval('A*B*rm')) r1 = aov.preallocate(y.shape) for perm in permute_order(n_cases, 2): aov.map(y, perm) r2 = r1.copy() y_perm[perm] = y aov.map(y_perm) assert_allclose(r2, r1, 1e-6, 1e-6) # incremental anova ds = ds[1:] y = ds['uts'].x y_perm = np.empty_like(y) n_cases, n_tests = y.shape aov = glm._IncrementalNDANOVA(ds.eval('A*B')) r1 = aov.preallocate(y.shape) for perm in permute_order(n_cases, 2): aov.map(y, perm) r2 = r1.copy() y_perm[perm] = y aov.map(y_perm) assert_allclose(r2, r1, 1e-6, 1e-6)
def test_t_ind(): "Test independent samples t-test" ds = datasets.get_uts(True) y = ds.eval("utsnd.x") n_cases = len(y) n = n_cases / 2 t = stats.t_ind(y, n, n) p = stats.ttest_p(t, n_cases - 2) t_sp, p_sp = scipy.stats.ttest_ind(y[:n], y[n:]) assert_equal(t, t_sp) assert_equal(p, p_sp) assert_allclose(stats.ttest_t(p, n_cases - 2), np.abs(t)) # permutation y_perm = np.empty_like(y) for perm in permute_order(n_cases, 2): stats.t_ind(y, n, n, out=t, perm=perm) y_perm[perm] = y t_sp, _ = scipy.stats.ttest_ind(y_perm[:n], y_perm[n:]) assert_allclose(t, t_sp)