Untitled
unknown
plain_text
a year ago
6.6 kB
16
Indexable
def experiment_simulation_plot(alpha, aa_control_group_means, aa_test_group_means, aa_means_diffs_list, aa_stat_list, aa_p_val_list, ab_control_group_means, ab_test_group_means, ab_means_diffs_list, ab_stat_list, ab_p_val_list): ''' aa_control_group_means - средние полученные по симуляциям в контрольной группе в AA-варианте симуляции aa_test_group_means - средние полученные по симуляциям в тестовой группе в AA-варианте симуляции aa_means_diffs_list - разница средних в AA-варианте симуляции aa_stat_list - значение критерия полученного по симуляциям в AA-варианте симуляции aa_p_val_list - p-value полученные по симуляциям в AA-варианте симуляции ab_control_group_means - средние полученные по симуляциям в контрольной группе в AB-варианте симуляции ab_test_group_means - средние полученные по симуляциям в тестовой группе в AB-варианте симуляции ab_means_diffs_list - разница средних в AB-варианте симуляции ab_stat_list - значение критерия полученного по симуляциям в AB-варианте симуляции ab_p_val_list - p-value полученные по симуляциям в AB-варианте симуляции ''' # рассчитываем 95% доверительные интервалы для полученных численно alpha и beta alpha_ci = proportion_confint(np.sum(np.array(aa_p_val_list) < alpha), n_iter, alpha=0.05) beta_ci = proportion_confint(np.sum(np.array(ab_p_val_list) < alpha), n_iter, alpha=0.05) # PLOT fig, axes = plt.subplots(2, 4, figsize=(15,10)) ### AA subplots ### Первый ряд графиков посвящен АА-симуляциям. # График распределения средних в первой и второй выборках. Иллюстрирует тоже самое о чем говорит ЦПТ. sns.kdeplot(ax=axes[0,0], data = aa_control_group_means, color = 'blue') sns.kdeplot(ax=axes[0,0], data = aa_test_group_means, color = 'red') axes[0,0].set_title('AA: A|B group mean distribution') axes[0,0].axvline(x=np.quantile(aa_control_group_means, 0.5), linestyle = '--', color = 'blue', label = 'control mean') axes[0,0].axvline(x=np.quantile(aa_test_group_means, 0.5), linestyle = '--', color = 'red', label = 'test mean') axes[0,0].legend(loc='lower right') # График распределения разницы между средними sns.kdeplot(ax=axes[0,1], data = aa_means_diffs_list) axes[0,1].axvline(x=0, linestyle = '--', color = 'red', label = 'zero difference') axes[0,1].axvline(x=np.quantile(aa_means_diffs_list, alpha/2), linestyle = '--', color = 'grey', label = '95% conf interval for diff') axes[0,1].axvline(x=np.quantile(aa_means_diffs_list, 1-alpha/2), linestyle = '--', color = 'grey') axes[0,1].set_title('AA: Means diffs distribution') axes[0,1].legend(loc='lower right') # график распределения значения стат критерия. t-статистика для t-теста sns.kdeplot(ax=axes[0,2], data = aa_stat_list) axes[0,2].set_title('AA: stats distribution') # график распределения p-value sns.kdeplot(ax=axes[0,3], data = aa_p_val_list) axes[0,3].set_title('AA: p-values distribution') axes[0,3].axvline(x=alpha, linestyle = '--', color = 'red', label = 'alpha') axes[0,3].axvline(x=np.quantile(aa_p_val_list, 0.8), linestyle = '--', color = 'blue', label = '80% quantile for p-value') axes[0,3].legend(loc='lower right') ### AB subplots ### второй ряд графиков посвящен АБ-симуляциям # график распределения средних в первой и второй выборках. Иллюстрирует тоже самое о чем говорит ЦПТ sns.kdeplot(ax=axes[1,0], data = ab_control_group_means, color = 'blue') sns.kdeplot(ax=axes[1,0], data = ab_test_group_means, color = 'red') axes[1,0].set_title('AB: A|B group mean distribution') axes[1,0].axvline(x=np.quantile(ab_control_group_means, 0.5), linestyle = '--', color = 'blue', label = 'control mean') axes[1,0].axvline(x=np.quantile(ab_test_group_means, 0.5), linestyle = '--', color = 'red', label = 'test mean') axes[1,0].legend(loc='lower right') # график распределения разницы между средними sns.kdeplot(ax=axes[1,1], data = ab_means_diffs_list) axes[1,1].axvline(x=0, linestyle = '--', color = 'red', label = 'zero difference') axes[1,1].axvline(x=np.quantile(ab_means_diffs_list, alpha/2), linestyle = '--', color = 'grey', label = '95% conf interval for diff') axes[1,1].axvline(x=np.quantile(ab_means_diffs_list, 1-alpha/2), linestyle = '--', color = 'grey') axes[1,1].set_title('AB: Means diffs distribution') axes[1,1].legend(loc='lower right') # график распределения значения стат критерия. t-статистика для t-теста sns.kdeplot(ax=axes[1,2], data = ab_stat_list) axes[1,2].set_title('AB: stats distribution') # график распределения p-value sns.kdeplot(ax=axes[1,3], data = ab_p_val_list) axes[1,3].set_title('AB: p-values distribution') axes[1,3].axvline(x=alpha, linestyle = '--', color = 'red', label = 'alpha') axes[1,3].axvline(x=np.quantile(ab_p_val_list, 0.8), linestyle = '--', color = 'blue', label = '80% quantile for p-value') axes[1,3].legend(loc='lower right') # принтуем ключевые метрики print('Median means lift for AA simulation = ', np.median(aa_means_diffs_list)) print('Alpha(FPR) = ', np.sum(np.array(aa_p_val_list) < alpha) / n_iter) print('Alpha 95% CI:', alpha_ci) print('Median means lift for AB simulation = ', np.median(ab_means_diffs_list)) print('Power(TPR) = ', np.sum(np.array(ab_p_val_list) < alpha) / n_iter) print('Beta 95% CI:', beta_ci)
Editor is loading...