예제 #1
0
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    
예제 #2
0
    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))
    
    
예제 #3
0
    # 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)