def check_fpp_kuiper(F, N, M, thresh=1.): ps = [] while len(ps) < M: p = F(np.random.random(N)) if p < thresh: ps.append(p / thresh) assert kuiper.kuiper(ps)[1] > 0.01
def check_fpp_kuiper(F,N,M,thresh=1.): ps = [] while len(ps)<M: p = F(np.random.random(N)) if p<thresh: ps.append(p/thresh) assert kuiper.kuiper(ps)[1]>0.01
def get_marg_info(sampler): '''makes chains into marginalize postierior and does KL and kuiper test against uniform''' chains = sampler.flatchain[:,:3] out_post = [] out_div = [] # sfh for i in range(3): x, y = np.histogram(chains[:,i], bins=int(np.sqrt(len(chains)))) post = np.vstack((y[:-1], x/np.sum(x,dtype=float))).T out_post.append(post) unif = np.ones_like(post[:,1])/post[:,0].ptp() out_div.append([kl_diverg(post[:,1], unif), kuiper(post[:,1], unif)[0]]) #return sfh_post, age_post, met_post, sfh_div, age_div, met_div return out_post[0], out_post[1], out_post[2], out_div[0], out_div[1], out_div[1]
def test_detect_nonuniform(): D, f = kuiper.kuiper(np.random.random(500) * 0.5) assert f < 0.01
def F(x): return kuiper.kuiper(x)[1]
def test_uniform(): for N in [10, 100, 1000, 10000]: yield check_uniform, lambda x: kuiper.kuiper(x)[1], N
def test_weighted(): a = (np.random.random(100) * 3.4 + 0.8) % 1 i = (0.8, 4.2, 1) b, t = kuiper.fold_intervals([i]) cdf = kuiper.cdf_from_intervals(b, t) assert kuiper.kuiper(a, cdf)[1] > 0.01
def test_weighted(): a = (np.random.random(100) * 3.4 + 0.8)%1 i = (0.8,4.2,1) b, t = kuiper.fold_intervals([i]) cdf = kuiper.cdf_from_intervals(b,t) assert kuiper.kuiper(a,cdf)[1]>0.01
def test_detect_nonuniform(): D, f = kuiper.kuiper(np.random.random(500)*0.5) assert f<0.01
def test_uniform(): for N in [10,100,1000,10000]: yield check_uniform, lambda x: kuiper.kuiper(x)[1], N