scipy.stats.

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-значение.

Смотрите также

scipy.stats.ttest_ind

Примечания

Статистика вычисляется как (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)