T-тест в языке программирования R: пример для одной выборки и парный пример.

⚡ Умное резюме

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

  • 📐 Основная статистика: Значение t-критерия рассчитывается как отношение наблюдаемой разницы средних значений к ее стандартной ошибке, поэтому большие значения свидетельствуют против нулевой гипотезы.
  • 🧪 Одновыборочный тест: Функция t.test(x, mu = 10) проверяет отдельный вектор на соответствие теоретическому значению, например, заданному в рецепте.
  • 👥 Двухвыборочный тест: Функция t.test(x, y) сравнивает две независимые группы и по умолчанию использует поправку Уэлча для неравных дисперсий.
  • 🔗 Парный тест: Добавление параметра paired = TRUE проверяет среднее значение внутрисубъектных различий и устраняет общую вариативность.
  • Предположительные проверки: Перед тем как сообщать значения p, используйте shapiro.test() для проверки нормальности распределения и var.test() для проверки равенства дисперсий.
  • 📊 Правило принятия решения: Значение p < 0.05 отвергает нулевую гипотезу, но никогда не доказывает истинность альтернативной гипотезы.

Т-тест в R для одной парной выборки

Что такое статистический вывод?

Статистический вывод — это искусство формулирования заключений о распределении данных. Специалист по анализу данных часто сталкивается с вопросами, на которые можно ответить только научным методом. Поэтому статистический вывод — это стратегия проверки истинности гипотезы, то есть её подтверждения данными.

Распространенной стратегией для проверки гипотезы является t-критерий, который показывает, равны ли два средних значения. Он также известен как Тест для учащихсяДля следующих случаев можно провести t-тест:

  1. Сравнение одного вектора с фиксированным значением (одновыборочный t-тест)
  2. Два вектора из двух отдельных групп (независимый двухвыборочный t-тест)
  3. Два вектора, измеренные на одних и тех же испытуемых (парный 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-критерий одной выборки, или критерий Стьюдента, сравнивает среднее значение вектора с теоретическим средним значением. Один выборочный Т-тест в R. Формула, используемая для расчета t-критерия:

Один выборочный Т-тест в R

Здесь,

  • Один выборочный Т-тест в R относится к среднему
  • Один выборочный Т-тест в R к теоретическому среднему значению
  • s — стандартное отклонение
  • n количество наблюдений.

Чтобы оценить статистическую значимость t-критерия, вам необходимо вычислить р-значение, р-значение находится в диапазоне от 0 до 1 и интерпретируется следующим образом:

  • Значение p меньше 0.05 означает, что нулевую гипотезу можно отклонить. Обратите внимание, что отклонение H0 не равнозначно доказательству истинности H1, это лишь означает, что данные маловероятны при H0.
  • Значение p, превышающее 0.05, указывает на то, что у вас недостаточно доказательств для отклонения нулевой гипотезы.

Вы можете построить значение p, взглянув на соответствующее абсолютное значение t-критерия в распределении Стьюдента со степенями свободы, равными Один выборочный Т-тест в R

Например, имея 5 наблюдений, вы сравниваете значение t с распределением Стьюдента с 4 степенями свободы при 95-процентном доверительном уровне. Для отклонения нулевой гипотезы в двустороннем тесте абсолютное значение t должно превышать 2.776.

См. таблицу ниже:

Один выборочный Т-тест в R

Один пример примера 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)

Вот результат:

Один пример примера T-теста в R

Значение 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)

Прочтите результат в четыре этапа.

  1. t — это стандартизированный размер разницы между двумя средними значениями. Его знак отражает только порядок передачи векторов.
  2. df — это число степеней свободы. Тест Уэлча дает дробное значение; объединенный тест дает целое число, равное n1 + n2 – 2.
  3. р-значение Это вероятность увидеть такой большой разрыв, если бы истинные средние значения были одинаковыми.
  4. Доверительный интервал ограничивает истинную разницу. Если она содержит ноль, разница на этом уровне не является существенной.

Если ваши данные находятся в одном фрейме данных с одним столбцом значений и одним столбцом факторов, используйте вместо этого интерфейс формул, который проще для чтения и позволяет избежать ручного разделения данных:

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)

Пример парного T-теста в R

Значение 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, чтобы применить более безопасную поправку Велча.

Часто задаваемые вопросы (FAQ)

Парный тест анализирует внутригрупповые различия, когда одни и те же испытуемые измеряются дважды. Независимый тест сравнивает две отдельные группы. Использование независимого теста на парных данных приводит к потере информации и снижению статистической мощности.

Используйте критерий Уэлча, если вы не подтвердили равенство дисперсий, поэтому R применяет его по умолчанию. Он практически не потребляет ресурсов, когда дисперсии совпадают, и защищает от ошибок, когда они не совпадают.

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

Команды используют парные t-тесты для сравнения двух моделей в идентичных группах перекрестной валидации и для оценки достоверности результатов A/B-эксперимента. Парный дизайн исключает вариативность между группами из сравнения.

Да. Искусственный интеллект может объяснять степени свободы, переводить доверительные интервалы на простой язык и предупреждать о выборе неправильного варианта. Подтверждайте каждое показание собственными результатами shapiro.test() и var.test().

Подведем итог этой публикации следующим образом: