From dccbe531fd57c571f70e37589a996af46f160f45 Mon Sep 17 00:00:00 2001 From: Kailash Budhathoki Date: Tue, 26 Sep 2017 01:25:20 +0200 Subject: [PATCH] rejection sampling used in accuracy vs sample size test --- test_synthetic.py | 23 +++++++++++++++++++---- 1 file changed, 19 insertions(+), 4 deletions(-) diff --git a/test_synthetic.py b/test_synthetic.py index 7c641ef..8198ae8 100644 --- a/test_synthetic.py +++ b/test_synthetic.py @@ -561,9 +561,9 @@ def test_hypercompression(): def test_sample_size(): - nsim = 500 + nsim = 1000 level = 0.05 - sizes = [100, 500, 1000, 2500, 5000] + sizes = [100, 400, 700, 1000, 1300, 1600, 2000] suppfX = range(-7, 8) srcX = "geometric" @@ -575,14 +575,28 @@ def test_sample_size(): sys.stdout.flush() # progress(0, len(sizes)) for k, size in enumerate(sizes): + nsamples = 0 nc_dc, nc_dr, nc_cisc, nc_crispe, nc_crisp = 0, 0, 0, 0, 0 - for j in xrange(nsim): + while nsamples < nsim: X = generate_X(srcX, size) suppX = list(set(X)) f = map_randomly(suppX, suppfX) N = generate_additive_N(size) Y = [f[X[i]] + N[i] for i in xrange(size)] + # check if f(x) + supp N are disjoint for x in domx + suppN = set(N) + decomps = [] + for x in suppX: + fx = f[x] + sum_fx_suppN = set([fx + n for n in suppN]) + decomps.append(sum_fx_suppN) + + non_overlapping_noise = are_disjoint(decomps) + if non_overlapping_noise: + continue + + nsamples += 1 dc_score = dc(dc_compat(X), dc_compat(Y)) dr_score = dr(X, Y, level) cisc_score = cisc(X, Y) @@ -609,4 +623,5 @@ def test_sample_size(): if __name__ == "__main__": - test_accuracy() + test_sample_size() + # test_accuracy()