фургона с помощью SciPy точно правильно и используя scipy.stats.ttest_*
функции очень удобно.
Но я пришел на эту страницу, чтобы найти решение с чистым numpy, как указано в заголовке, чтобы избежать скудной зависимости. С этой целью позвольте мне указать приведенный здесь пример: https://docs.scipy.org/doc/numpy/reference/generated/numpy.random.standard_t.html
Основная проблема заключается в том, что numpy не имеет кумулятивных функций распределения, поэтому мой вывод состоит в том, что вы действительно должны использовать scipy. Во всяком случае, возможно использование только numpy:
Из исходного вопроса я предполагаю, что вы хотите сравнить свои наборы данных и судить с помощью t-теста, есть ли значительное отклонение? Кроме того, что образцы спарены? (См https://en.wikipedia.org/wiki/Student%27s_t-test#Unpaired_and_paired_two-sample_t-tests) В этом случае, вы можете вычислить t- и р-значение следующим образом:
import numpy as np
sample1 = np.array([55.0, 55.0, 47.0, 47.0, 55.0, 55.0, 55.0, 63.0])
sample2 = np.array([54.0, 56.0, 48.0, 46.0, 56.0, 56.0, 55.0, 62.0])
# paired sample -> the difference has mean 0
difference = sample1 - sample2
# the t-value is easily computed with numpy
t = (np.mean(difference))/(difference.std(ddof=1)/np.sqrt(len(difference)))
# unfortunately, numpy does not have a build in CDF
# here is a ridiculous work-around integrating by sampling
s = np.random.standard_t(len(difference), size=100000)
p = np.sum(s<t)/float(len(s))
# using a two-sided test
print("There is a {} % probability that the paired samples stem from distributions with the same means.".format(2 * min(p, 1 - p) * 100))
Это напечатает There is a 73.028 % probability that the paired samples stem from distributions with the same means.
Поскольку это намного выше любой здравомыслящий доверительный интервал (скажем, 5%), вы должны не заключают ничего для конкретного случая.
спасибо, что ответили. он, кажется, принимает случайную величину. Должен ли я заранее создать случайную переменную из моей выборки? – Mark
Я думаю, что вы можете просто использовать свой образец (а не «образец населения») – van
Образец, как в одном примере значения? У меня создалось впечатление, что я могу использовать образец нескольких результатов в качестве параметра, но, возможно, я был введен в заблуждение :) – Mark