В этом руководстве мы узнаем о «Python Scipy Ttest_ind» для оценки средних значений одной или нескольких совокупностей посредством проверки гипотез и о том, как его реализовать с помощью Python Scipy.
- Что такое Т-тест в статистике
- Как вычислить
- Метод ttest_ind()
- Параметр nan_policy
- Вывод
- Параметр оси
- Параметр qual_var
- Статистика
- Степени свободы
Что такое Т-тест в статистике
При сравнении средних значений двух групп и их отношений t-критерий представляет собой статистический вывод, используемый для оценки наличия значительной разницы. Когда наборы данных имеют нормальное распределение и неизвестные дисперсии, используются t-тесты.
При оценке гипотезы t-тест использует t-статистику, значения t-распределения и степени свободы для оценки статистической значимости. T-тест математически устанавливает постановку задачи, беря выборку из каждого из двух наборов. Равенство двух средних принимается за нулевую гипотезу.
Для расчета t-критерия необходимы три основных значения данных. Они состоят из средней разницы, стандартного отклонения каждой группы и общего количества значений данных для каждой группы, а также разницы между средними значениями из каждого набора данных.
Влияние разницы на случайность и то, находится ли она за пределами этого диапазона вероятности, определяется этим сравнением. С помощью t-теста выясняется, является ли разница между группами реальной разницей в исследовании или просто случайной разницей.
Как вычислить
В Python Scipy есть метод ttest_ind() в модуле scipy.stats. Это проверка нулевой гипотезы о том, что средние значения двух независимых выборок одинаковы.
Этот тест предполагает, что дисперсии популяций идентичны.
Синтаксис:
scipy.stats.ttest_ind(a, b, axis=0, nan_policy='propagate', equal_var=False, permutations=None, random_state=None, trim=0, alternative='two-sided')
Где параметры:
- a,b (array_data): массивы должны быть идентичными по форме, за исключением измерения, соответствующего оси.
- axis (int): ось, по которой вычисляется тест. Вычислите, используя целые массивы a и b, если нет.
- nan_policy: объясняет, что делать, если входные данные содержат nan. Доступны следующие варианты(«распространение» — значение по умолчанию):
- «distribution»: возвращается nan.
- «raise»: выдает ошибку
- «omit»: вычисления выполняются без учета значений nan.
- Equal_var (boolean): выполнить типичный независимый тест с двумя выборками с одинаковыми дисперсиями генеральной совокупности, если значение True (по умолчанию). Если значение ложно, выполните t-критерий Уэлча, который не требует равной дисперсии среди генеральной совокупности.
- permutations: вычисление p-значений с использованием t-распределения, если выбрано 0 или None (по умолчанию). В противном случае количество случайных перестановок, которые будут использоваться для расчета p-значений для теста перестановок, называется перестановками. Вместо него проводится точный тест, если количество перестановок равно или превышает количество различных разделов объединенных данных.
- random_state (int, генератор numpy): numpy.random используется, если начальное значение равно None (или np.random). Он использует синглтон RandomState. Если начальное число является целым числом, создается новый экземпляр RandomState и заполняется этим начальным значением. Экземпляр Generator или RandomState используется, если начальное число уже имеет его. Состояние генератора псевдослучайных чисел, используемого для создания перестановок.
- Trim (float): выполняет усеченный (Юэнь) t-критерий, если результат не равен нулю. указывает, сколько элементов с обоих концов входных выборок следует удалить. Если 0 (по умолчанию), обрезка компонентов с обеих сторон выполняться не будет. Пол обрезки, умноженный на количество деталей, — это количество обрезанных элементов с каждого хвоста. Допустимый диапазон: [0, 5].
- alternative: описывает альтернативную гипотезу. Доступны следующие варианты (по умолчанию — «двусторонний»):
- «Двусторонний» означает, что средние значения распределений, из которых взяты выборки, не равны.
- Среднее значение основного распределения первой выборки ниже среднего значения основного распределения второй выборки, которое выражается как «меньше».
- «Больше» означает, что среднее значение распределения для первой выборки выше, чем среднее значение распределения второй выборки.
Метод ttest_ind() возвращает статистику и значение pvalue массива типа float.
Давайте возьмем пример и рассчитаем Т-критерий независимых выборок, выполнив следующие шаги:
- Импортируйте необходимые библиотеки, используя приведенный ниже код Python.
import numpy as np from scipy.stats import norm, ttest_ind
- Определите генератор случайных чисел, используя np.random.default_rng(), и сгенерируйте две выборки из нормального распределения теми же средствами, используя методnormal.rvs().
rnd_num_gen = np.random.default_rng() samp1 = norm.rvs(loc=3, scale=7, size=250, random_state=rnd_num_gen) samp2 = norm.rvs(loc=3, scale=7, size=250, random_state=rnd_num_gen)
- Теперь выполните Т-тест на образцах теми же средствами, используя приведенный ниже код.
ttest_ind(samp1,samp2)
Здесь ttest_ind возвращает два значения: статистику = 0,295 и pvalue = 0,76.
Метод ttest_ind()
Альтернативный параметр метода ttest_ind() используется для описания альтернативной гипотезы.
Альтернативный параметр принимает следующие параметры.
- «двусторонний»: означает, что средние значения распределений, из которых взяты выборки, не равны.
- «меньше»: среднее значение основного распределения первой выборки ниже, чем среднее значение основного распределения второй выборки, которое выражается как «меньше».
- «больше»: означает, что среднее значение распределения для первой выборки выше, чем среднее значение распределения второй выборки.
Давайте на примере разберемся, как выполнить Т-тест с альтернативной гипотезой, выполнив следующие шаги:
- Импортируйте необходимые библиотеки или методы, используя приведенный ниже код Python.
from scipy.stats import ttest_ind
- Создайте образец, используя приведенный ниже код.
samp_1 = [[1.2,2.1,5.6,1.3],[3.4,2.1,1.6,4.8]] samp_2 = [[2.4,1.1,3.6,5.8],[0.2,4.1,2.6,6.3]]
- Примените Т-тест с альтернативной гипотезой, равной двусторонней.
ttest_ind(samp_1,samp_2,axis =1,alternative='two-sided')
Снова примените Т-тест с альтернативной гипотезой, равной меньшему.
Теперь снова проведите Т-тест с альтернативной гипотезой, равной большей.
Вот как использовать альтернативную гипотезу с помощью Python SciPy ttest_ind.
Читайте: Собственные значения Python Scipy.
Параметр nan_policy
Метод ttest_ind() принимает параметр nan_policy для обработки значений nan в массивах или выборках.
- nan_policy: объясняет, что делать, если входные данные содержат nan. Доступны следующие варианты(«распространение» — значение по умолчанию):
- «distribution»: возвращается nan.
- «raise»: выдает ошибку
- «omit»: вычисления выполняются без учета значений nan.
Давайте посмотрим на примерах, как обрабатывать значения nan в массивах или выборках при выполнении T-теста:
- Импортируйте необходимые методы или библиотеки, используя приведенный ниже код Python.
from scipy.stats import ttest_ind import numpy as np
- Сгенерируйте данные со значениями nan, используя приведенный ниже код.
data1 = np.random.randn(30) data2 = np.random.randn(30) mask_nan = np.random.choice([1, 0], data1.shape, p=[.1, .9]).astype(bool) data1[mask_nan] = np.nan data2[mask_nan] = np.nan
- Выполните T-тест для данных с nan_policy, равным подъему, используя приведенный ниже код.
ttest_ind(data1,data2, nan_policy='raise')
Снова выполните T-тест с nan_policy, равным опущению, используя приведенный ниже код.
ttest_ind(data1,data2, nan_policy='omit')
Наконец, выполните T-тест с nan_policy, равным распространению, используя приведенный ниже код.
ttest_ind(data1,data2, nan_policy='propagate')
Вывод
Метод ttest_ind() Python Scipy возвращает или выводит два значения после выполнения T-теста на образце. Первое значение — это статистика, а второе — значение pvalue.
Используя эти два значения, мы определяем значимость средних двух выборок.
Давайте посмотрим на примере и вычислим Т-тест, выполнив следующие шаги:
- Импортируйте необходимые библиотеки или методы, используя приведенный ниже код Python.
from scipy.stats import ttest_ind
- Сгенерируйте два образца данных, используя приведенный ниже код.
sample_1 = [2.4,5.1,2.6,1.8] sample_2 = [1.4,2.1,5.6,3.8]
- Выполните Т-тест, чтобы получить два значения, которые мы обсуждали выше.
ttest_ind(sample_1,sample_2)
Параметр оси
Параметр оси метода ttest_ind() Python Scipy позволяет нам вычислить T-тест вдоль указанной оси данного массива или образца.
Предоставленный двумерный массив имеет две оси: одна проходит вертикально по строкам — ось 1, а другая — горизонтально по столбцам — ось 0.
Здесь мы увидим пример того, как вычислить Т-тест вдоль указанной оси данных, выполнив следующие шаги:
- Импортируйте необходимые библиотеки или методы, используя приведенный ниже код Python.
from scipy.stats import ttest_ind
- Сгенерируйте образец данных, используя приведенный ниже код.
samp_1 = [[1.2,2.1,5.6,1.3],[2.4,1.1,3.6,5.8]] samp_2 = [[2.4,1.1,3.6,5.8],[1.2,2.1,5.6,1.3]]
- Выполните T-тест для всего массива, который используется по умолчанию.
ttest_ind(samp_1,samp_2)
- Теперь вычислите T-тест по указанной оси данных, используя приведенный ниже код.
ttest_ind(samp_1,samp_2,axis =1)
Параметр qual_var
Если у нас есть выборки данных с равными дисперсиями, то что мы будем делать в этом случае? Мы будем использовать параметр qual_var метода ttest_ind() логического типа Python Scipy.
Когда в каждой группе одинаковое количество образцов или когда дисперсия двух наборов данных сопоставима, используется одинаковый дисперсионный t-критерий, независимый t-критерий.
Параметры принимают два значения True или False. Давайте посмотрим на примере, выполнив следующие шаги:
- Импортируйте необходимые библиотеки или методы, используя приведенный ниже код.
import numpy as np from scipy.stats import norm, ttest_ind
- Сгенерируйте данные с равной дисперсией, используя приведенный ниже код.
rnd_num_gen = np.random.default_rng() samp1 = norm.rvs(loc=4, scale=5, size=100, random_state=rnd_num_gen) samp2 = norm.rvs(loc=4, scale=5, size=200, random_state=rnd_num_gen)
- Вычислите Т-тест для приведенного выше образца с равными дисперсиями, используя приведенный ниже код.
ttest_ind(samp1,samp2)
Статистика
Метод ttest_ind() Python Scipy возвращает значение t-статистики.
Т-статистика измеряет, насколько оценочное значение параметра отклоняется от его предполагаемого значения относительно его стандартной ошибки.
Давайте рассмотрим пример, выполнив следующие шаги:
- Импортируйте необходимые библиотеки или методы, используя приведенный ниже код Python.
from scipy.stats import ttest_ind
- Сгенерируйте образец данных, используя приведенный ниже код.
samp_data1 = [[0.2,5.1,1.6,1.3],[2.4,1.1,3.6,5.8]] samp_data2 = [[1.4,2.1,5.6,3.8],[2.2,5.1,1.6,5.3]]
- Вычислите T-тест и получите значение t-статистики, используя приведенный ниже код.
ttest_ind(samp_data1,samp_data2)
Степени свободы
Во-первых, мы узнаем о том: «Что такое степени свободы?». Количество независимых точек данных, используемых для расчета оценки, называется степенью свободы оценки.
Это не то же самое, что размер выборки. Мы должны вычесть 1 из общего количества элементов, чтобы получить степени свободы для оценки.
Представьте, что мы ищем среднюю потерю веса для диеты. Один из вариантов — использовать 50 человек с df = 49 или 10 человек с 9 степенями свободы(10 – 1 = 9).
Количество значений в коллекции данных, которые можно свободно изменять, — это еще один способ подумать о степенях свободы. «Свобода перемен» – что это значит? Среднее значение(среднее) используется в следующем примере:
Выберите группу чисел со средним значением 10, как мы могли бы выбрать из следующих наборов чисел: 7, 9, 11, 2, 10, 9 или 4, 8, 12.
Третье число в наборе фиксируется после того, как мы выбрали первые два. Другими словами, мы не можем выбрать третий кусок из группы. Первые два числа — единственные, которые могут меняться. Мы можем выбрать 7 + 9 или 2 + 10, но как только мы сделали свой выбор, мы должны выбрать конкретное число, которое даст желаемое среднее значение. Следовательно, набор из трех чисел имеет ДВЕ степени свободы.