T-тест в языке программирования R: пример для одной выборки и парный пример.
⚡ Умное резюме
В R t-тест сравнивает средние значения с помощью функции t.test(), охватывая одну выборку по отношению к фиксированной целевой переменной, две независимые группы и парные повторные измерения. В этом пошаговом руководстве запускаются все варианты, корректно считывается p-значение и проверяются лежащие в основе предположения.

Что такое статистический вывод?
Статистический вывод — это искусство формулирования заключений о распределении данных. Специалист по анализу данных часто сталкивается с вопросами, на которые можно ответить только научным методом. Поэтому статистический вывод — это стратегия проверки истинности гипотезы, то есть её подтверждения данными.
Распространенной стратегией для проверки гипотезы является t-критерий, который показывает, равны ли два средних значения. Он также известен как Тест для учащихсяДля следующих случаев можно провести t-тест:
- Сравнение одного вектора с фиксированным значением (одновыборочный t-тест)
- Два вектора из двух отдельных групп (независимый двухвыборочный t-тест)
- Два вектора, измеренные на одних и тех же испытуемых (парный t-тест)
Любой t-тест предполагает, что данные выбраны случайным образом и что значения (или, в случае парного теста, разности) получены из приблизительно нормально распределенной популяции. Независимая версия для двух выборок дополнительно предполагает независимость двух групп друг от друга, а классическая форма предполагает равенство их дисперсий.
Что такое T-тест в программировании на R?
Основная идея Т-теста заключается в использовании статистики для оценки двух противоположных гипотез:
- H0: нулевая гипотеза, согласно которой среднее значение генеральной совокупности равно проверяемому значению.
- H1: альтернативная гипотеза, согласно которой среднее значение генеральной совокупности отличается от этого значения.
Т-тест предназначен для небольших выборок, где нормальное приближение ненадежно. Он требует, чтобы данные были приблизительно нормально распределены.
Синтаксис T-теста в R
Основной синтаксис t.test() в R:
t.test(x, y = NULL, mu = 0, var.equal = FALSE) arguments: - x : A vector to compute the one-sample t-test - y: A second vector to compute the two sample t-test - mu: Mean of the population under the null hypothesis - var.equal: Specify whether the variances of the two vectors are equal. By default, set to `FALSE` - paired: Set to `TRUE` when the two vectors are repeated measures on the same subjects
Перед запуском любого теста сопоставьте структуру ваших данных с соответствующим вариантом теста.
Типы T-тестов в R
Наиболее распространенная ошибка при проведении t-теста — выбор неправильного варианта, поэтому начните с сопоставления структуры ваших данных с правильным вариантом.
| Тип | Используйте это, когда | R-звонок |
|---|---|---|
| Одновыборочный | Одна группа сравнивалась с известным целевым значением | t.test(x, mu = value) |
| Независимый двухвыборочный тест (Уэлча) | Две отдельные группы, дисперсии могут быть неравными. | t.test(x, y) |
| Независимая выборка из двух человек (объединенная). | Две отдельные группы с равной дисперсией | t.test(x, y, var.equal = TRUE) |
| Соединенный | Измерения проводились на одних и тех же испытуемых дважды. | t.test(x, y, paired = TRUE) |
| Однобокий | Вас волнует только разница в одном направлении. | t.test(x, mu = value, alternative = “greater”) |
При наличии более трех групп t-тест уже не подходит. Переключитесь на ANOVA-тестЭто позволяет поддерживать общий уровень ошибок на уровне 5 процентов, вместо того чтобы завышать его при повторных попарных сравнениях.
Один выборочный Т-тест в R
t-критерий одной выборки, или критерий Стьюдента, сравнивает среднее значение вектора с теоретическим средним значением. . Формула, используемая для расчета t-критерия:
Здесь,
относится к среднему
к теоретическому среднему значению
- s — стандартное отклонение
- n количество наблюдений.
Чтобы оценить статистическую значимость t-критерия, вам необходимо вычислить р-значение, р-значение находится в диапазоне от 0 до 1 и интерпретируется следующим образом:
- Значение p меньше 0.05 означает, что нулевую гипотезу можно отклонить. Обратите внимание, что отклонение H0 не равнозначно доказательству истинности H1, это лишь означает, что данные маловероятны при H0.
- Значение p, превышающее 0.05, указывает на то, что у вас недостаточно доказательств для отклонения нулевой гипотезы.
Вы можете построить значение p, взглянув на соответствующее абсолютное значение t-критерия в распределении Стьюдента со степенями свободы, равными
Например, имея 5 наблюдений, вы сравниваете значение t с распределением Стьюдента с 4 степенями свободы при 95-процентном доверительном уровне. Для отклонения нулевой гипотезы в двустороннем тесте абсолютное значение t должно превышать 2.776.
См. таблицу ниже:
Один пример примера T-теста в R
Предположим, вы — компания, производящая файлы cookie. В каждом печенье должно быть 10 граммов сахара. Печенье производится машиной, которая добавляет сахар в миску перед тем, как все перемешать. Вы считаете, что машина не добавляет 10 граммов сахара на каждое печенье. Если ваше предположение верно, машину необходимо починить. Вы сохранили уровень сахара в тридцати печеньях.
Внимание: Вы можете создать рандомизированный вектор с помощью функции rnorm(). Эта функция генерирует нормально распределенные значения. Основной синтаксис:
rnorm(n, mean, sd) arguments - n: Number of observations to generate - mean: The mean of the distribution. Optional - sd: The standard deviation of the distribution. Optional
Вы можете создать распределение из 30 наблюдений со средним значением 9.99 и стандартным отклонением 0.04.
set.seed(123) sugar_cookie <- rnorm(30, mean = 9.99, sd = 0.04) head(sugar_cookie)
Выход:
## [1] 9.967581 9.980793 10.052348 9.992820 9.995172 10.058603
Вы можете использовать t-тест для одного образца, чтобы проверить, отличается ли уровень сахара от рецепта. Вы можете провести проверку гипотезы:
- H0: Средний уровень сахара равен 10.
- H1: Средний уровень сахара отличается от 10.
Вы используете уровень значимости 0.05.
# H0 : mu = 10 t.test(sugar_cookie, mu = 10)
Вот результат:
Значение p-критерия для одновыборочного t-теста составляет 0.1079, что выше порогового значения 0.05. 95-процентный доверительный интервал для среднего значения находится в диапазоне от 9.973 до 10.002 грамма и содержит целевое значение 10. Следовательно, нельзя отклонить нулевую гипотезу H0: недостаточно доказательств того, что машина отклоняется от рецепта.
Независимый двухвыборочный t-тест в R
Наиболее часто используемым вариантом является независимый двухвыборочный t-тест, который применяется в тех случаях, когда два набора измерений получены от разных субъектов: двух магазинов, двух станков, двух групп лечения.
Предположим, на заводе работают две производственные линии, и вы хотите узнать, наполняют ли они банки одинаковым количеством наполнителя.
set.seed(123) line_a <- rnorm(25, mean = 500, sd = 8) line_b <- rnorm(25, mean = 505, sd = 8) # Welch test, the safe default t.test(line_a, line_b) # Pooled test, only when the variances are equal t.test(line_a, line_b, var.equal = TRUE)
Прочтите результат в четыре этапа.
- t — это стандартизированный размер разницы между двумя средними значениями. Его знак отражает только порядок передачи векторов.
- df — это число степеней свободы. Тест Уэлча дает дробное значение; объединенный тест дает целое число, равное n1 + n2 – 2.
- р-значение Это вероятность увидеть такой большой разрыв, если бы истинные средние значения были одинаковыми.
- Доверительный интервал ограничивает истинную разницу. Если она содержит ноль, разница на этом уровне не является существенной.
Если ваши данные находятся в одном фрейме данных с одним столбцом значений и одним столбцом факторов, используйте вместо этого интерфейс формул, который проще для чтения и позволяет избежать ручного разделения данных:
t.test(weight ~ line, data = jars)
Какую версию использовать? Оставьте значение параметра var.equal по умолчанию равным FALSE, если вы не проверили и не подтвердили равенство дисперсий. Коррекция Уэлча практически не потребляет ресурсов, когда дисперсии совпадают, и защищает вас, когда они не совпадают.
Парный Т-тест в R
Парный t-тест, также называемый t-тестом для зависимых выборок, применяется, когда одна и та же группа измеряется дважды. Типичные примеры применения:
- А / Б Тестирование: Сравните два варианта
- исследования «случай-контроль»: до и после лечения одних и тех же пациентов
Пример парного T-теста в R
Компания по производству напитков заинтересована в том, чтобы узнать эффективность программы скидок при продажах. Компания решила следить за ежедневными продажами одного из своих магазинов, где продвигается программа. В конце программы компания хочет знать, существует ли статистическая разница между средними продажами магазина до и после программы.
- Компании tracМы ежедневно отслеживали продажи до начала программы. Это наш первый вектор.
- Программа продвигается в течение одной недели, продажи фиксируются каждый день. Это наш второй вектор.
- Вы проведете t-тест, чтобы оценить эффективность программы. Это называется парным t-тестом, поскольку значения обоих векторов происходят из одного и того же распределения (т. е. из одного и того же магазина).
Проверка гипотезы – это:
- H0: Нет разницы в среднем
- H1: Эти два средства разные
Следует помнить, что классический t-тест предполагает неизвестную, но равную дисперсию в обеих группах. Реальные данные редко точно удовлетворяют этому условию, и игнорирование разницы может исказить результат.
Решение заключается в использовании t-критерия Уэлча, который ослабляет предположение о равенстве дисперсий. R применяет его по умолчанию, поскольку var.equal имеет значение FALSE, если не указано иное. В этом наборе данных оба вектора были сгенерированы с одинаковым стандартным отклонением, поэтому вы можете смело установить var.equal = TRUE.
Вы создаете два случайных вектора из распределения Гаусса с более высоким средним значением продаж после программы.
set.seed(123) # sales before the program sales_before <- rnorm(7, mean = 50000, sd = 50) # sales after the program.This has higher mean sales_after <- rnorm(7, mean = 50075, sd = 50) # draw the distribution t.test(sales_before, sales_after,var.equal = TRUE)
Значение p равно 0.04606, что чуть ниже порогового значения 0.05, поэтому вы отклоняете нулевую гипотезу и делаете вывод о существенном различии двух средних значений. Программа скидок, по-видимому, привела к увеличению продаж.
⚠️ Важно: Приведённый выше вызов сравнивает два вектора следующим образом: независимые образцы. Поскольку обе серии представляют собой измерения, проведенные в одном и том же магазине, статистически корректный вызов суммируется. парный = ИСТИНА:
t.test(sales_before, sales_after, paired = TRUE)
Парный тест проверяет среднее значение разностей по дням, а не разницу двух средних значений. Он исключает вариативность на уровне магазинов, общую для обоих векторов, и, следовательно, обладает большей статистической мощностью.
Как проверить предположения t-критерия в R
Значение p-критерия t-теста имеет смысл только тогда, когда выполняются его предположения. Каждое из них проверяется напрямую.
1. Нормальность. Одновыборочный и двухвыборочный тесты предполагают приблизительно нормальное распределение значений; парный тест предполагает... Различия являются. Изучите QQ-график и подтвердите результаты с помощью теста Шапиро-Уилка:
qqnorm(sugar_cookie); qqline(sugar_cookie)
shapiro.test(sugar_cookie)
# for a paired design, test the differences
shapiro.test(sales_after - sales_before)
Значение p-критерия Шапиро-Уилка выше 0.05 означает, что гипотеза о нормальном распределении не может быть отклонена. При наличии более 30 наблюдений в каждой группе центральная предельная теорема в любом случае делает t-критерий устойчивым к умеренной асимметрии.
2. Равная дисперсия. Это необходимо только для объединенного двухвыборочного теста. Проверьте это с помощью F-теста:
var.test(line_a, line_b)
Значение p выше 0.05 подтверждает равенство дисперсий, что оправдывает условие var.equal = TRUE.
3. Независимость. Это следует из плана исследования и не может быть проверено постфактум. Если один и тот же субъект вносит вклад в оба вектора, независимый тест просто не подходит, и необходимо установить парное значение равным TRUE.
Когда предположение не выполняется. Для данных с явно ненормальным распределением и малыми выборками используйте альтернативные методы, основанные на рангах: wilcox.test(x, y) заменяет двухвыборочный t-тест, а wilcox.test(x, y, paired = TRUE) заменяет парный вариант. Ни один из них не требует нормального распределения, хотя оба немного снижают мощность, когда данные на самом деле имеют нормальное распределение.
T-тест в R: основные выводы и справочник по тесту.
- Статистический вывод — это искусство делать выводы о распределении данных.
- T-тест принадлежит к семейству статистических выводов. Его обычно используют, чтобы выяснить, существует ли статистическая разница между средними значениями двух групп.
- Одновыборочный t-тест, или тест Стьюдента, сравнивает среднее значение вектора с теоретическим средним.
- Парный t-тест, или t-тест для зависимых выборок, применяется, когда одна и та же группа измеряется дважды.
В таблице ниже приведена сводная информация по каждому из рассмотренных выше тестов:
| Тест | Гипотеза для проверки | р-значение | Code | Необязательный аргумент |
|---|---|---|---|---|
| однократный t-критерий | Среднее значение вектора отличается от теоретического среднего значения | 0.05 |
t.test(x, mu = mean)
|
|
| парный выборочный t-критерий | Среднее значение A отличается от среднего значения B для одних и тех же испытуемых. | 0.05 |
t.test(A, B, paired = TRUE) |
var.equal = TRUE
|
Если вы готовы предположить равенство дисперсий в независимом двухвыборочном тесте, установите var.equal = TRUE. Оставьте значение по умолчанию FALSE, чтобы применить более безопасную поправку Велча.




