Проблемы:Сообщите двухвыборочную K-S статистика из двух предварительно вычисленных гистограмм
Здесь я сюжет 2 наборов данных, хранящихся в текстовых файлах (в списке dataset
) каждый из которых содержит 21,8 млрд точек данных. Это делает данные слишком большими для хранения в памяти как массива. Я все еще могу нарисовать их как гистограммы, но я не уверен, как рассчитать их разницу через 2 sample KS test. Это связано с тем, что я не могу понять, как получить доступ к каждой гистограмме в объекте plt.
Пример:
Вот код, чтобы генерировать фиктивные данные:
mu = [100, 120]
sigma = 30
dataset = ['gsl_test_1.txt', 'gsl_test_2.txt']
for idx, file in enumerate(dataset):
dist = np.random.normal(mu[idx], sigma, 10000)
with open(file, 'w') as g:
for s in dist:
g.write('{}\t{}\t{}\n'.format('stuff', 'stuff', str(s)))
Это генерирует два моих гистограмм (стало возможным here):
chunksize = 1000
dataset = ['gsl_test_1.txt', 'gsl_test_2.txt']
for fh in dataset:
# find the min, max, line qty, for bins
low = np.inf
high = -np.inf
loop = 0
for chunk in pd.read_table(fh, header=None, chunksize=chunksize, delimiter='\t'):
low = np.minimum(chunk.iloc[:, 2].min(), low)
high = np.maximum(chunk.iloc[:, 2].max(), high)
loop += 1
lines = loop*chunksize
nbins = math.ceil(math.sqrt(lines))
bin_edges = np.linspace(low, high, nbins + 1)
total = np.zeros(nbins, np.int64) # np.ndarray filled with np.uint32 zeros, CHANGED TO int64
for chunk in pd.read_table(fh, header=None, chunksize=chunksize, delimiter='\t'):
# compute bin counts over the 3rd column
subtotal, e = np.histogram(chunk.iloc[:, 2], bins=bin_edges) # np.ndarray filled with np.int64
# accumulate bin counts over chunks
total += subtotal
plt.hist(bin_edges[:-1], bins=bin_edges, weights=total)
plt.savefig('gsl_test_hist.svg')
Вопрос:
Большинство examples for KS-statistics используют два массива необработанных данных/наблюдений/точек/и т. Д., Но у меня недостаточно памяти для использования этого подхода. За приведенном выше примере, как я могу получить доступ к этим предвычисленными бункеров (от 'gsl_test_1.txt'
и 'gsl_test_2.txt'
вычислить статистику KS между двумя распределениями
Bonus карму:?! Запись статистики KS и p-значение на графике