Skip to content

Instantly share code, notes, and snippets.

@RomanSteinberg
Created July 3, 2016 14:07
Show Gist options
  • Save RomanSteinberg/3401d333205a1b191f5e848779c28bc7 to your computer and use it in GitHub Desktop.
Save RomanSteinberg/3401d333205a1b191f5e848779c28bc7 to your computer and use it in GitHub Desktop.
import numpy as np
import pandas as pd
import scipy.stats as ss
import scipy
def get_bootstrap_samples(data, n_samples):
indices = np.random.randint(0, len(data), (n_samples, len(data)))
samples = data[indices]
return samples
def stat_intervals(stat, alpha):
boundaries = np.percentile(stat, [100 * alpha / 2., 100 * (1 - alpha / 2.)])
return boundaries
def make_bootstrap(data1, data2, n_samples, func):
stats1 = np.array(map(func, get_bootstrap_samples(data1, n_samples)))
stats2 = np.array(map(func, get_bootstrap_samples(data2, n_samples)))
return stat_intervals(stats1 - stats2, 0.05)
def save(means, squared_diff):
fout = open('data.txt', 'w')
fout.write(' '.join(means))
fout.write('\n')
fout.write(' '.join(squared_diff))
fout.write('\n')
fout.close()
data = pd.read_csv('ab_browser_test.csv', sep=',')
exp = data[data['slot'] == 'exp']
control = data[data['slot'] == 'control']
# 4
np.random.seed(0)
n_boot_samples = 500
samples = get_bootstrap_samples(control.n_clicks, n_boot_samples)
means = samples.mean(axis=1)
delta = samples - means[:, np.newaxis]
control_boot_chi_squared = np.sum(delta*delta, axis=1)
save(means, control_boot_chi_squared)
@andrhua
Copy link

andrhua commented Aug 28, 2019

списал, спасибо

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment