# scenario2: alpha, beta, p1, and p2 are given, p2>p1 # what's the minimum sample size needed to reject h0: p1>=p2 in favor of p2>p1 # we return a matrix of options import numpy as np, pandas as pd, array as a, math as m from scipy.stats import norm params=pd.read_csv("./scen2_params.csv", sep=",", names=['alpha', 'beta', 'p1', 'p2']) alpha=float(params.alpha[params.alpha.index[0]]) beta=float(params.beta[params.beta.index[0]]) p1=float(params.p1[params.p1.index[0]]) p2=float(params.p2[params.p2.index[0]]) # s = pd.Series(np.randn(10), index=np.arange(10)) # print s # print alpha z_alpha_div2=norm.ppf(alpha/2) z_1_minus_beta=norm.ppf(1-beta) # print z_alpha_div2, z_1_minus_beta c=((p2-p1)**2)/((z_1_minus_beta-z_alpha_div2)**2) c1=p1-p1**2 c2=p2-p2**2 # print c, c1, c2 # First case is n1=n2 n1=int(m.ceil(((c1)+(c2))/c)) # print 'n1', n1 S=2*n1 # print 'S', S # res=[{'S':pd.Series([S, S], index=[0, 1]), 'n1':pd.Series([n1, n1], index=[0, 1]), 'n2':pd.Series([n1, n1], index=[0, 1])}] # res=[S, n1, n1] res = np.zeros((1,),dtype=[('S', 'f4'),('n1', 'f4'),('n2', 'f4')]) # print 'res', res res[:] = [(S, n1, n1)] # print 'res', res res=pd.DataFrame(res, columns=['S', 'n1', 'n2']) print 'res', res # # if n1>60 & n1<500: # cn1=n1 # shape_res=0 # # print 'cn1', cn1 # while True: # cn1=cn1-1 # if S-cn1>3*n1: # break # S=int(m.ceil(((cn1**2*c+n1*(-c1+c2)))/(cn1*c-c1))) # shape_res+=1 # # tmp=np.zeros((1,),dtype=[('S', 'f4'),('n1', 'f4'),('n2', 'f4')]) # tmp[:]=[(S, cn1, S-cn1)] # tmp=pd.DataFrame(tmp, columns=['S', 'n1', 'n2'], index=[shape_res]) # # print 'tmp', tmp # res=res.append(tmp) # cn1=n1 # while True: # cn1=cn1+1 # if cn1>=3*n1: # break # S=int(m.ceil(((cn1**2*c+n1*(-c1+c2)))/(cn1*c-c1))) # shape_res+=1 # # tmp=np.zeros((1,),dtype=[('S', 'f4'),('n1', 'f4'),('n2', 'f4')]) # tmp[:]=[(S, cn1, S-cn1)] # tmp=pd.DataFrame(tmp, columns=['S', 'n1', 'n2'], index=[shape_res]) # # print 'tmp', tmp # res=res.append(tmp) # # res.to_csv("scen2_out.csv") # # #