T-test v programování v R: Jeden vzorek a párový příklad
⚡ Chytré shrnutí
T-test v jazyce R porovnává průměry pomocí funkce t.test(), přičemž pokrývá jeden vzorek s pevným cílem, dvě nezávislé skupiny a párová opakovaná měření. Tento návod spouští každou variantu, správně přečte p-hodnotu a ověří základní předpoklady.

Co je statistická inference?
Statistická inference je umění generování závěrů o rozdělení dat. Datový vědec se často potýká s otázkami, na které lze odpovědět pouze vědecky. Statistická inference je proto strategie k testování, zda je hypotéza pravdivá, tj. zda je potvrzena daty.
Běžnou strategií pro posouzení hypotézy je t-test, který říká, zda jsou dva průměry stejné. Je také známý jako Studentský testT-test lze vypočítat pro:
- Jeden vektor proti pevné hodnotě (jednovýběrový t-test)
- Dva vektory ze dvou oddělených skupin (nezávislý dvouvýběrový t-test)
- Dva vektory měřené na stejných subjektech (párový t-test)
Každý t-test předpokládá, že data jsou náhodně vzorkována a že hodnoty (nebo v případě párového testu rozdíly) pocházejí z přibližně normálně rozdělené populace. Nezávislá verze se dvěma výběry navíc předpokládá, že obě skupiny jsou na sobě nezávislé, a klasická verze předpokládá, že jejich rozptyly jsou stejné.
Co je T-test v programování R?
Základní myšlenkou T-testu je použít statistiku k vyhodnocení dvou opačných hypotéz:
- H0nulová hypotéza, že průměr populace se rovná testované hodnotě
- H1alternativní hypotéza, že průměr populace se liší od této hodnoty
T-test je navržen pro malé velikosti vzorků, kde je normální aproximace nespolehlivá. Vyžaduje, aby data měla přibližně normální rozdělení.
Syntaxe T-testu v R
Základní syntaxe pro t.test() v R je:
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
Než cokoli spustíte, přizpůsobte rozvržení dat správné variantě testu.
Typy T-testů v R
Výběr nesprávné varianty je nejčastější chybou t-testu, proto začněte tím, že rozvržení dat porovnáte se správným voláním.
| Typ | Použijte to, když | Volání R |
|---|---|---|
| Jeden vzorek | Jedna skupina ve srovnání se známou cílovou hodnotou | t.test(x, mu = hodnota) |
| Nezávislý dvouvýběrový (Welch) | Dvě oddělené skupiny, odchylky mohou být nestejné | t.test(x, y) |
| Nezávislý dvouvýběr (sdružený) | Dvě oddělené skupiny se stejnou variancí | t.test(x, y, proměnná.rovná se = PRAVDA) |
| Spárováno | Stejné subjekty byly měřeny dvakrát | t.test(x, y, párové = PRAVDA) |
| Jednostranná | Zajímá tě jen rozdíl v jednom směru | t.test(x, mu = hodnota, alternativa = „větší“) |
Za hranicí tří skupin již t-test není vhodný. Přejděte na Test ANOVA, což udržuje celkovou míru chyb na 5 procentech, místo aby ji nafukovalo při opakovaných párových porovnáních.
Jeden vzorový T-test v R
Jednovzorkový t-test neboli studentův test porovnává průměr vektoru s teoretickým průměrem, . Vzorec použitý pro výpočet t-testu je:
Zde,
odkazuje na průměr
k teoretickému průměru
- s je standardní odchylka
- n počet pozorování.
Chcete-li vyhodnotit statistickou významnost t-testu, musíte vypočítat p-hodnota, p-hodnota se pohybuje od 0 do 1 a je interpretován následovně:
- Hodnota p nižší než 0.05 znamená, že můžete odmítnout nulovou hypotézu. Všimněte si, že odmítnutí H0 není totéž jako prokázání pravdivosti H1, znamená to pouze, že data jsou za H0 nepravděpodobná.
- Hodnota p vyšší než 0.05 naznačuje, že nemáte dostatek důkazů k odmítnutí nulové hypotézy.
P-hodnotu můžete sestrojit tak, že se podíváte na odpovídající absolutní hodnotu t-testu ve Studentově rozdělení se stupni volnosti rovnými
Například s 5 pozorováními porovnáváte t-hodnotu se Studentovým rozdělením se 4 stupni volnosti na 95% hladině spolehlivosti. Aby byla nulová hypotéza v oboustranném testu zamítnuta, musí absolutní t-hodnota překročit 2.776.
Cf tabulka níže:
Jeden vzorový příklad T-testu v R
Předpokládejme, že jste společnost vyrábějící soubory cookie. Každá sušenka má obsahovat 10 gramů cukru. Sušenky vyrábí stroj, který před smícháním všeho přidá cukr do misky. Domníváte se, že stroj nepřidává 10 gramů cukru na každou sušenku. Pokud je váš předpoklad pravdivý, je potřeba stroj opravit. Uložili jste hladinu cukru třiceti sušenek.
Hodnocení: Pomocí funkce rnorm() můžete vytvořit náhodný vektor. Tato funkce generuje normálně rozložené hodnoty. Základní syntaxe je:
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
Můžete vytvořit rozdělení s 30 pozorováními s průměrem 9.99 a standardní odchylkou 0.04.
set.seed(123) sugar_cookie <- rnorm(30, mean = 9.99, sd = 0.04) head(sugar_cookie)
Výstup:
## [1] 9.967581 9.980793 10.052348 9.992820 9.995172 10.058603
Jednovzorkovým t-testem můžete zkontrolovat, zda se hladina cukru liší od receptury. Můžete nakreslit test hypotézy:
- H0: Průměrná hladina cukru se rovná 10
- H1: Průměrná hladina cukru je jiná než 10
Používáte hladinu významnosti 0.05.
# H0 : mu = 10 t.test(sugar_cookie, mu = 10)
Zde je výstup:
P-hodnota jednovýběrového t-testu je 0.1079, což je nad prahovou hodnotou 0.05. 95% interval spolehlivosti pro průměr se pohybuje od 9.973 do 10.002 gramů a obsahuje cílovou hodnotu 10. Proto nelze H0 odmítnout: neexistuje dostatek důkazů o tom, že se stroj odchyluje od receptury.
Nezávislý dvouvýběrový t-test v R
Nezávislý dvouvýběrový t-test je nejčastěji používanou variantou a používá se vždy, když dvě sady měření pocházejí z různých subjektů: dvě dílny, dva stroje, dvě léčebná ramena.
Předpokládejme, že továrna provozuje dvě výrobní linky a vy chcete vědět, zda plní sklenice stejnou hmotností.
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)
Výstup si přečtěte ve čtyřech krocích.
- t je standardizovaná velikost mezery mezi dvěma průměry. Jeho znaménko odráží pouze pořadí, ve kterém jste vektory předali.
- df je počet stupňů volnosti. Welch vygeneruje zlomkovou hodnotu; sdružený test dává celé číslo rovné n1 + n2 – 2.
- p-hodnota je pravděpodobnost, že by se objevila tak velká mezera, pokud by skutečné průměry byly shodné.
- Interval spolehlivosti ohraničuje skutečný rozdíl. Pokud obsahuje nulu, rozdíl na dané úrovni není významný.
Pokud se vaše data nacházejí v jednom datovém rámci s jedním sloupcem hodnot a jedním sloupcem faktorů, použijte místo toho rozhraní vzorců, které se snáze čte a zabraňuje ručnímu rozdělení dat:
t.test(weight ~ line, data = jars)
Kterou verzi použít. Pokud jste neotestovali a nepotvrdili stejné rozptyly, ponechte var.equal na výchozí hodnotě FALSE. Welchova korekce vás nestojí téměř nic na síle, když se rozptyly shodují, a chrání vás, když se neshodují.
Spárovaný T-test v R
Párový t-test, nazývaný také t-test závislého vzorku, se používá, když je stejná skupina měřena dvakrát. Typické aplikace jsou:
- A/B testování : Porovnejte dvě varianty
- Případové kontrolní studiepřed a po ošetření stejných subjektů
Příklad párového T-testu v R
Nápojová společnost má zájem znát výkon slevového programu na tržby. Společnost se rozhodla sledovat denní tržby jednoho ze svých obchodů, kde program propaguje. Na konci programu chce společnost vědět, zda existuje statistický rozdíl mezi průměrnými tržbami obchodu před a po programu.
- Společnost tracPřed zahájením programu jsme každý den sledovali prodej. Toto je náš první vektor.
- Program je propagován po dobu jednoho týdne a tržby jsou zaznamenávány každý den. Toto je náš druhý vektor.
- Provedete t-test, abyste posoudili efektivitu programu. Toto se nazývá párový t-test, protože hodnoty obou vektorů pocházejí ze stejné distribuce (tj. ze stejného obchodu).
Testování hypotézy je:
- H0: Žádný rozdíl v průměru
- H1: Tyto dva prostředky jsou různé
Nezapomeňte, že klasický t-test předpokládá neznámý, ale stejný rozptyl v obou skupinách. Reálná data tento předpoklad zřídka přesně splňují a ignorování rozdílu může výsledek zkreslit.
Řešením je Welchův t-test, který zmírňuje předpoklad stejné rozptylu. R jej aplikuje standardně, protože var.equal je NEPRAVDA, pokud neurčíte jinak. V této datové sadě byly oba vektory generovány se stejnou směrodatnou odchylkou, takže můžete bezpečně nastavit var.equal = TRUE.
Vytvoříte dva náhodné vektory z Gaussova rozdělení s vyšším průměrem pro tržby po programu.
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)
Hodnota p je 0.04606, těsně pod prahovou hodnotou 0.05, takže H0 zamítnete a dojdete k závěru, že se tyto dva průměry významně liší. Zdá se, že slevový program zvýšil tržby.
⚠️ Důležité: výše uvedené volání porovnává dva vektory jako nezávislý vzorků. Protože obě série jsou měřeními ve stejné dílně, statisticky správné volání přidává párovaný = PRAVDA:
t.test(sales_before, sales_after, paired = TRUE)
Párový model testuje průměr denních rozdílů namísto rozdílu dvou průměrů. Odstraňuje variabilitu na úrovni obchodu sdílenou oběma vektory, a proto má větší statistickou sílu.
Jak ověřit předpoklady T-testu v R
P-hodnota t-testu má smysl pouze tehdy, když platí její předpoklady. Každý z nich lze přímo ověřit.
1. Normálnost. Jednovýběrové a dvouvýběrové testy předpokládají, že hodnoty jsou přibližně normální; párový test předpokládá, že Rozdíly jsou. Prohlédněte si QQ graf a potvrďte Shapiro-Wilkovým testem:
qqnorm(sugar_cookie); qqline(sugar_cookie)
shapiro.test(sugar_cookie)
# for a paired design, test the differences
shapiro.test(sales_after - sales_before)
Shapiro-Wilkova p-hodnota nad 0.05 znamená, že normalitu nelze odmítnout. Při více než přibližně 30 pozorováních na skupinu centrální limitní věta v každém případě činí t-test robustním až mírně zešikmeným.
2. Stejný rozptyl. Toto potřebuje pouze sdružený dvouvýběrový test. Otestujte to pomocí F-testu:
var.test(line_a, line_b)
Hodnota p nad 0.05 podporuje stejné rozptyly, což ospravedlňuje platnost var.equal = TRUE.
3. Nezávislost. To vyplývá z designu studie a nelze to testovat dodatečně. Pokud stejný subjekt přispívá k oběma vektorům, je nezávislý test jednoduše špatným nástrojem a potřebujete párové = PRAVDA.
Když předpoklad selže. Pro zjevně nenormální data s malými vzorky použijte alternativy založené na pořadí: wilcox.test(x, y) nahrazuje dvouvýběrový t-test a wilcox.test(x, y, paired = TRUE) nahrazuje párovou verzi. Ani jeden z nich nevyžaduje normalitu, i když oba vyměňují trochu síly, když jsou data skutečně normální.
T-test v R: Klíčové poznatky a referenční informace o testech
- Statistická inference je umění generování závěrů o distribuci dat.
- T-test patří do rodiny inferenčních statistik. Běžně se používá ke zjištění, zda existuje statistický rozdíl mezi průměry dvou skupin.
- Jednovýběrový t-test neboli Studentův test porovnává průměr vektoru s teoretickým průměrem.
- Párový t-test nebo t-test závislého vzorku se používá, když je stejná skupina měřena dvakrát.
Níže uvedená tabulka shrnuje všechny výše uvedené testy:
| test | Hypotéza k testování | p-hodnota | Code | Volitelný argument |
|---|---|---|---|---|
| jednovýběrový t-test | Průměr vektoru se liší od teoretického průměru | 0.05 |
t.test(x, mu = mean)
|
|
| t-test párového vzorku | Průměr A se u stejných subjektů liší od průměru B | 0.05 |
t.test(A, B, paired = TRUE) |
var.equal = TRUE
|
Pokud jste ochotni předpokládat stejné rozptyly v nezávislém dvouvýběrovém testu, nastavte var.equal = TRUE. Ponechte ji na výchozí hodnotě FALSE pro spuštění bezpečnější Welchovy korekce.




