ttest_ind_from_stats#
- scipy.stats.ttest_ind_from_stats(mean1, std1, nobs1, mean2, std2, nobs2, equal_var=True, альтернатива='two-sided')[источник]#
T-тест для средних двух независимых выборок по описательной статистике.
Это тест для нулевой гипотезы о том, что две независимые выборки имеют одинаковые средние (ожидаемые) значения.
- Параметры:
- mean1array_like
Среднее(ые) выборки 1.
- std1array_like
Исправленное выборочное стандартное отклонение выборки 1 (т.е.
ddof=1).- nobs1array_like
Количество наблюдений выборки 1.
- mean2array_like
Среднее(ые) выборки 2.
- std2array_like
Исправленное выборочное стандартное отклонение выборки 2 (т.е.
ddof=1).- nobs2array_like
Количество наблюдений выборки 2.
- equal_varbool, необязательно
Если True (по умолчанию), выполнить стандартный независимый двухвыборочный тест, который предполагает равные дисперсии популяций [1]. Если False, выполняется t-тест Уэлча, который не предполагает равную дисперсию генеральной совокупности [2].
- альтернатива{‘two-sided’, ‘less’, ‘greater’}, необязательный
Определяет альтернативную гипотезу. Доступны следующие варианты (по умолчанию 'two-sided'):
'two-sided': средние распределений не равны.
‘less’: среднее первого распределения меньше, чем среднее второго распределения.
‘greater’: среднее первого распределения больше среднего второго распределения.
Добавлено в версии 1.6.0.
- Возвращает:
- статистикаfloat или массив
Рассчитанные t-статистики.
- p-значениеfloat или массив
Двустороннее p-значение.
Смотрите также
Примечания
Статистика вычисляется как
(mean1 - mean2)/se, гдеseявляется стандартной ошибкой. Поэтому статистика будет положительной, когда mean1 больше, чем mean2 и отрицательный, когда mean1 меньше чем mean2.Этот метод не проверяет, являются ли какие-либо элементы std1 или std2 отрицательны. Если какие-либо элементы std1 или std2 параметры отрицательны при вызове этого метода, этот метод вернет тот же результат, как если бы ему передали
numpy.abs(std1)иnumpy.abs(std2)соответственно; никаких исключений или предупреждений выдано не будет.ttest_ind_from_statsимеет экспериментальную поддержку совместимых с Python Array API Standard бэкендов в дополнение к NumPy. Пожалуйста, рассмотрите тестирование этих функций, установив переменную окруженияSCIPY_ARRAY_API=1и предоставление массивов CuPy, PyTorch, JAX или Dask в качестве аргументов массива. Поддерживаются следующие комбинации бэкенда и устройства (или других возможностей).Библиотека
CPU
GPU
NumPy
✅
н/д
CuPy
н/д
✅
PyTorch
✅
⛔
JAX
✅
✅
Dask
✅
н/д
См. Поддержка стандарта array API для получения дополнительной информации.
Ссылки
Примеры
Предположим, у нас есть сводные данные для двух выборок, как показано ниже (где Выборочная дисперсия является исправленной выборочной дисперсией):
Sample Sample Size Mean Variance Sample 1 13 15.0 87.5 Sample 2 11 12.0 39.0
Примените t-тест к этим данным (с предположением, что дисперсии популяции равны):
>>> import numpy as np >>> from scipy.stats import ttest_ind_from_stats >>> ttest_ind_from_stats(mean1=15.0, std1=np.sqrt(87.5), nobs1=13, ... mean2=12.0, std2=np.sqrt(39.0), nobs2=11) Ttest_indResult(statistic=0.9051358093310269, pvalue=0.3751996797581487)
Для сравнения, вот данные, из которых были взяты эти сводные статистики. С этими данными мы можем вычислить тот же результат, используя
scipy.stats.ttest_ind:>>> a = np.array([1, 3, 4, 6, 11, 13, 15, 19, 22, 24, 25, 26, 26]) >>> b = np.array([2, 4, 6, 9, 11, 13, 14, 15, 18, 19, 21]) >>> from scipy.stats import ttest_ind >>> ttest_ind(a, b) TtestResult(statistic=0.905135809331027, pvalue=0.3751996797581486, df=22.0)
Предположим, у нас вместо этого есть бинарные данные, и мы хотим применить t-тест для сравнения доли единиц в двух независимых группах:
Number of Sample Sample Size ones Mean Variance Sample 1 150 30 0.2 0.161073 Sample 2 200 45 0.225 0.175251
Выборочное среднее \(\hat{p}\) — это доля единиц в выборке, а дисперсия для бинарного наблюдения оценивается как \(\hat{p}(1-\hat{p})\).
>>> ttest_ind_from_stats(mean1=0.2, std1=np.sqrt(0.161073), nobs1=150, ... mean2=0.225, std2=np.sqrt(0.175251), nobs2=200) Ttest_indResult(statistic=-0.5627187905196761, pvalue=0.5739887114209541)
Для сравнения мы могли бы вычислить t-статистику и p-значение, используя массивы из 0 и 1 и scipy.stat.ttest_ind, как указано выше.
>>> group1 = np.array([1]*30 + [0]*(150-30)) >>> group2 = np.array([1]*45 + [0]*(200-45)) >>> ttest_ind(group1, group2) TtestResult(statistic=-0.5627179589855622, pvalue=0.573989277115258, df=348.0)