def plot_rvalue_test(effect_sizes, reproducibility, emphasis): """Visualize the result.""" sns.set_style('darkgrid') fig = plt.figure(figsize=(8, 5)) ax = fig.add_subplot(111) n_methods = np.shape(reproducibility)[0] method_colors = ['r', 'g', 'b'] for i in np.arange(0, n_methods): ax = plot_logistic(effect_sizes, reproducibility[i, :], ax, color=method_colors[i]) fig.tight_layout() plt.show()
def direct_replication_fwer_partial_conjunction(): """Perform a comparison of the partial conjuction and FWER replicability methods using the two-group model.""" N, nl, sl = 25, 90, 30 effect_sizes = np.linspace(0.6, 2.4, 12) n_effect_sizes = len(effect_sizes) method = lsu # hochberg #bonferroni emphasis = np.asarray( [0.02, 0.05, 0.10, 0.30, 0.50, 0.70, 0.90, 0.95, 0.98]) n_emphasis = len(emphasis) """Generate the test data.""" print('Simulating primary and follow-up experiments ..') # Allocate memory. pvals_pri = np.zeros([n_effect_sizes, nl, nl]) pvals_sec = np.zeros(np.shape(pvals_pri)) # Obtain the uncorrected p-values. for i, delta in enumerate(effect_sizes): pvals_pri[i] = square_grid_model(nl, sl, N, delta)[0] pvals_sec[i] = square_grid_model(nl, sl, N, delta)[0] """Find reproducible effects using the FWER replicability method.""" print('Estimating reproducibility: FWER replicability ..') repr_fwer = np.zeros([n_effect_sizes, n_emphasis]) for i in np.ndindex(n_effect_sizes, n_emphasis): # Find reproducible effects and rearrange the data. result = fwer_replicability(pvals_pri[i[0]].flatten(), pvals_sec[i[0]].flatten(), emphasis[i[1]], method) result = np.reshape(result, [nl, nl]) # Compute the number reproducible true effects. repr_fwer[i] = (grid_model_counts(result, nl, sl)[0] / float(sl**2)) """Find reproducible effects using the partial conjuction method.""" print('Estimating reproducibility: Partial conjuction ..') repr_part = np.zeros([n_effect_sizes]) for i in np.ndindex(n_effect_sizes): result = partial_conjuction(pvals_pri[i].flatten(), pvals_sec[i].flatten(), method) result = np.reshape(result, [nl, nl]) repr_part[i] = (grid_model_counts(result, nl, sl)[0] / float(sl**2)) """Visualize the data.""" sns.set_style('white') fig = plt.figure(figsize=(8, 5)) ax = fig.add_subplot(111) plot_logistic(effect_sizes, repr_fwer[:, emphasis <= 0.5], ax=ax, color='k') plot_logistic(effect_sizes, repr_fwer[:, emphasis > 0.5], ax=ax, color='g') plot_logistic(effect_sizes, repr_part, ax=ax, color='b') ax.set_xlabel('Effect size') ax.set_ylabel('Reproducibility rate') fig.tight_layout() plt.show()