def simulation_iter(obs, nout, rho, variance, te, redraw, falsenull, ntreat=None, pmat=None, seed=None, n_jobs=1, simdata=None): print 'Simulating for %i outcomes, %i false null hypotheses...' % (nout, falsenull) # generate covariance matrix i = [1 for j in range(0,nout)] cov = np.outer(i, i) * rho for j in range(0,nout): cov[j,j] = variance # generate matrix of means mean = [0 for j in range(0,nout)] data = genmultinorm(obs=obs, cov=cov, mean=mean, te=te, falsenull=falsenull, ntreat=ntreat) # the first argument is regular permutation; the second argument is stepdown perm, sd = permcombo(data=data, outcomes=['y{}'.format(j) for j in range(nout)], d='d' , redraw=redraw, seed=seed, pmat=pmat, quiet=True, n_jobs=1, stepdown=True) sd1t = sd.loc[:,'stepdown_1t'].values sd1t.sort() sd2t = sd.loc[:,'stepdown_2t'].values sd2t.sort() #return sd1t, sd2t return_data = pd.DataFrame([sd1t, sd2t], index=['1t', '2t']) return return_data
variance = 1 # variance/cov. matrix diagonal obs = 50 # number of observations ntreat = 25 # number of people assigned to treatment te = 3 # treatment effect/effect size redraw = 1000 # number of permutations # generate covariance matrix i = [1 for j in range(0,nout)] cov = np.outer(i, i) * rho for j in range(0,nout): cov[j,j] = variance # generate matrix of means mean = [0 for j in range(0,nout)] data = genmultinorm(obs=obs, cov=cov, mean=mean, te=te, ntreat = ntreat, falsenull = falsenull) # generate matrix of permutations tmp_d = [1 for j in range(ntreat)] + [0 for k in range(obs-ntreat)] pmat = pd.DataFrame(np.squeeze(np.array([np.random.permutation(tmp_d) for j in range(redraw)]).T)) #perm, tippett= permcombo(data=data, outcomes=['y{}'.format(j) for j in range(nout)], d='d' , redraw=redraw, tippett=True, posneg=False, pmat = pmat, quiet=False, n_jobs=1) #perm, stepdown = permcombo(data=data, outcomes=['y{}'.format(j) for j in range(nout)], d='d' , redraw=redraw, quiet=False, stepdown=True, n_jobs=1) start_time = time.time() perm, step = permcombo(data=data, outcomes=['y{}'.format(j) for j in range(nout)], d='d' , redraw=redraw, quiet=False, n_jobs=1, pmat=pmat, stepdown=True) print("--- %s seconds ---" % (time.time() - start_time))
# parameters for fake data nout = 8 # number of outcomes falsenull = 8 # number of false nulls rho = 0.0 # equicorrelation parameter variance = 1 # variance/cov. matrix diagonal obs = 56 # number of observations ntreat = 28 # number of people assigned to treatment te = 0.5 # treatment effect/effect size redraw = 100 # number of permutations # generate covariance matrix i = [1 for j in range(0,nout)] cov = np.outer(i, i) * rho for j in range(0,nout): cov[j,j] = variance # generate matrix of means mean = [0 for j in range(0,nout)] data = genmultinorm(obs=obs, cov=cov, mean=mean, te=te, falsenull = falsenull, seed=None) # generate matrix of permutations tmp_d = [1 for j in range(ntreat)] + [0 for k in range(obs-ntreat)] pmat = pd.DataFrame(np.squeeze(np.array([np.random.permutation(tmp_d) for j in range(redraw)]).T)) perm = permfactor(data=data, outcomes=['y{}'.format(j) for j in range(nout)], d='d' , redraw=redraw, pmat = pmat, quiet=False, n_jobs=1)