T-тест в R програмирането: Един пример и сдвоен пример

⚡ Умно обобщение

T-тестът в R сравнява средни стойности, използвайки функцията t.test(), обхващайки една извадка спрямо фиксирана цел, две независими групи и сдвоени повтарящи се измервания. Това ръководство изпълнява всеки вариант, отчита правилно p-стойността и проверява основните предположения.

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

T-тест в R Една сдвоена проба

Какво е статистическо заключение?

Статистическият извод е изкуството да се генерират заключения относно разпределението на данните. Специалистът по данни често се сблъсква с въпроси, на които може да се отговори само научно. Следователно, статистическият извод е стратегия за проверка дали дадена хипотеза е вярна, т.е. дали е потвърдена от данните.

Често срещана стратегия за оценка на хипотеза е t-тестът, който показва дали две средни стойности са равни. Той е известен още като Студентски тест. T-тест може да се изчисли за:

  1. Единичен вектор спрямо фиксирана стойност (t-тест за една извадка)
  2. Два вектора от две отделни групи (независим двуизборков t-тест)
  3. Два вектора, измерени върху едни и същи субекти (сдвоен t-тест)

Всеки t-тест приема, че данните са произволно избрани и че стойностите (или, за сдвоен тест, разликите) идват от приблизително нормално разпределена популация. Независимата версия с две извадки допълнително приема, че двете групи са независими една от друга, а класическата форма приема, че техните дисперсии са равни.

Какво е T-тест в R програмирането?

Основната идея зад T-теста е да се използва статистика за оценка на две противоположни хипотези:

  • H0: нулевата хипотеза, че средната стойност на генералната съвкупност е равна на тестваната стойност
  • H1алтернативната хипотеза, че средната стойност на популацията се различава от тази стойност

T-тестът е предназначен за малки размери на извадките, където нормалното приближение е ненадеждно. Той изисква данните да са приблизително нормално разпределени.

Синтаксис на 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 = стойност)
Независима двупробна (Welch) Две отделни групи, евентуално неравномерни вариации t.test(x, y)
Независими две извадки (обединени) Две отделни групи с еднаква дисперсия t.test(x, y, var.equal = TRUE)
В комбина Същите субекти са измерени два пъти t.test(x, y, сдвоени = TRUE)
Едностранен Интересува те само разликата в едната посока t.test(x, mu = стойност, алтернатива = „по-голяма“)

След три групи, t-тестът вече не е подходящ. Преминете към ANOVA тест, което поддържа общия процент на грешки на 5 процента, вместо да го завишава при многократни двойни сравнения.

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

T-тестът за една извадка или тестът на Стюдънт сравнява средната стойност на вектор с теоретична средна стойност, Един примерен T-тест в R. Формулата, използвана за изчисляване на t-теста, е:

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

Тук

  • Един примерен T-тест в R се отнася до средната стойност
  • Един примерен T-тест в R до теоретичната средна
  • s е стандартното отклонение
  • n броя на наблюденията.

За да оцените статистическата значимост на t-теста, трябва да изчислите р-стойност, Най- р-стойност варира от 0 до 1 и се интерпретира, както следва:

  • p-стойност по-ниска от 0.05 означава, че можете да отхвърлите нулевата хипотеза. Обърнете внимание, че отхвърлянето на H0 не е същото като доказването на H1, а само означава, че данните са малко вероятни при H0.
  • P-стойност по-висока от 0.05 показва, че нямате достатъчно доказателства, за да отхвърлите нулевата хипотеза.

Можете да конструирате p-стойността, като разгледате съответната абсолютна стойност на t-теста в разпределението на Стюдънт със степен на свобода, равна на Един примерен T-тест в R

Например, с 5 наблюдения сравнявате вашата t-стойност с разпределението на Стюдънт с 4 степени на свобода при 95% ниво на доверие. За да се отхвърли нулевата хипотеза в двустранен тест, абсолютната t-стойност трябва да надвишава 2.776.

Вижте таблицата по-долу:

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

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

Да предположим, че сте компания, произвеждаща бисквитки. Всяка бисквитка трябва да съдържа 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, освен ако не сте тествали и потвърдили равни дисперсии. Корекцията на Уелч не струва почти нищо в мощност, когато дисперсиите съвпадат, и ви защитава, когато не съвпадат.

Сдвоен T-тест в R

Сдвоеният t-тест, наричан още t-тест за зависима извадка, се прилага, когато една и съща група се измерва два пъти. Типични приложения са:

  • A / B Тестване: Сравнете два варианта
  • Проучвания случай-контролапреди и след лечение на същите теми

Пример за сдвоен 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, така че отхвърляте H0 и заключавате, че двете средни стойности се различават значително. Програмата за отстъпки изглежда е увеличила продажбите.

⚠️ Важно: горното извикване сравнява двата вектора като независим проби. Тъй като и двете серии са измервания в един и същ цех, статистически коректното извикване добавя сдвоени = TRUE:

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-тестът за зависима извадка се прилага, когато една и съща група се измерва два пъти.

Таблицата по-долу обобщава всеки от гореспоменатите тестове:

тест Хипотеза за проверка р-стойност Code Незадължителен аргумент
t-тест за една проба Средната стойност на вектор е различна от теоретичната средна стойност 0.05
t.test(x, mu = mean)
t-тест на сдвоена проба Средната стойност А е различна от средната стойност B за едни и същи субекти 0.05
t.test(A, B, paired = TRUE)
var.equal = TRUE

Ако сте склонни да приемете равни дисперсии в независим тест с две извадки, задайте var.equal = TRUE. Оставете го на подразбиращата се стойност FALSE, за да изпълните по-безопасната корекция на Уелч.

Въпроси и Отговори

Сдвоеният тест анализира вътрешно-субектните разлики, когато едни и същи субекти се измерват два пъти. Независимият тест сравнява две отделни групи. Използването на независимия тест върху сдвоени данни изхвърля информация и намалява статистическата мощност.

Използвайте Welch винаги, когато не сте потвърдили равни дисперсии, поради което R го прилага по подразбиране. Той почти не изразходва енергия, когато дисперсиите съвпадат, и предпазва от грешки, когато не съвпадат.

За малки извадки, превключете към теста на Уилкоксън за рангова сума или теста за знаков ранг с wilcox.test(). За по-големи извадки централната гранична теорема поддържа t-теста надежден въпреки умерените отклонения от нормалността.

Екипите използват сдвоени t-тестове, за да сравнят два модела с идентични гънки за кръстосана валидация и да преценят дали резултатът от A/B експеримент е реален. Сдвоеният дизайн премахва вариациите от гънка до гънка от сравнението.

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

Обобщете тази публикация с: