T-test i R-programmering: Ett exempel och ett parat exempel
โก Smart sammanfattning
T-test i R jรคmfรถr medelvรคrden med hjรคlp av funktionen t.test(), dรคr ett urval tรคcks mot ett fast mรฅl, tvรฅ oberoende grupper och parade upprepade mรคtningar. Denna genomgรฅng kรถr varje variant, lรคser p-vรคrdet korrekt och verifierar de underliggande antagandena.

Vad รคr statistisk slutledning?
Statistisk inferens รคr konsten att generera slutsatser om datafรถrdelningen. En dataforskare stรคlls ofta infรถr frรฅgor som bara kan besvaras vetenskapligt. Dรคrfรถr รคr statistisk inferens en strategi fรถr att testa om en hypotes รคr sann, dvs. validerad av data.
En vanlig strategi fรถr att bedรถma en hypotes รคr t-testet, som visar om tvรฅ medelvรคrden รคr lika. Det รคr ocksรฅ kรคnt som StudenttestEtt t-test kan berรคknas fรถr:
- En enda vektor mot ett fast vรคrde (ett-sampel t-test)
- Tvรฅ vektorer frรฅn tvรฅ separata grupper (oberoende tvรฅ-sampel t-test)
- Tvรฅ vektorer mรคtta pรฅ samma fรถrsรถkspersoner (parat t-test)
Varje t-test antar att data รคr slumpmรคssigt urvalade och att vรคrdena (eller, fรถr ett parat test, skillnaderna) kommer frรฅn en approximativt normalfรถrdelad population. Den oberoende versionen med tvรฅ urval antar dessutom att de tvรฅ grupperna รคr oberoende av varandra, och den klassiska formen antar att deras varianser รคr lika.
Vad รคr T-Test i R-programmering?
Grundidรฉn bakom ett T-test รคr att anvรคnda statistik fรถr att utvรคrdera tvรฅ motsatta hypoteser:
- H0nollhypotesen, att populationsmedelvรคrdet รคr lika med det vรคrde som testas
- H1: den alternativa hypotesen, att populationsmedelvรคrdet skiljer sig frรฅn det vรคrdet
T-testet รคr utformat fรถr smรฅ stickprovsstorlekar, dรคr normalapproximationen รคr otillfรถrlitlig. Det krรคver att data รคr approximativt normalfรถrdelade.
T-testsyntax i R
Den grundlรคggande syntaxen fรถr t.test() i R รค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
Innan du kรถr nรฅgot, matcha din datalayout med rรคtt variant av testet.
Typer av T-test i R
Att vรคlja fel variant รคr det vanligaste misstaget vid t-test, sรฅ bรถrja med att matcha din datalayout med rรคtt anrop.
| Typ | Anvรคnd den nรคr | R-samtal |
|---|---|---|
| Ett prov | En grupp jรคmfรถrdes med ett kรคnt mรฅlvรคrde | t.test(x, mu = vรคrde) |
| Oberoende tvรฅprov (Welch) | Tvรฅ separata grupper, varianser mรถjligen ojรคmna | t.test(x, y) |
| Oberoende tvรฅprov (poolat) | Tvรฅ separata grupper med lika varians | t.test(x, y, var.equal = TRUE) |
| parat | Samma fรถrsรถkspersoner mรคttes tvรฅ gรฅnger | t.test(x, y, parat = SANT) |
| Ensidig | Du bryr dig bara om skillnaden i en riktning | t.test(x, mu = vรคrde, alternativ = "stรถrre") |
Utรถver tre grupper รคr ett t-test inte lรคngre lรคmpligt. Vรคxla till ANOVA test, vilket hรฅller den totala felfrekvensen pรฅ 5 procent istรคllet fรถr att blรฅsa upp den รถver upprepade parvisa jรคmfรถrelser.
Ett prov T-test i R
One Sample t-testet, eller studenttestet, jรคmfรถr medelvรคrdet av en vektor med ett teoretiskt medelvรคrde, . Formeln som anvรคnds fรถr att berรคkna t-testet รคr:
Hรคr,
hรคnvisar till medelvรคrdet
till det teoretiska medelvรคrdet
- s รคr standardavvikelsen
- n antalet observationer.
Fรถr att utvรคrdera den statistiska signifikansen fรถr t-testet mรฅste du berรคkna p-vรคrde. De p-vรคrde strรคcker sig frรฅn 0 till 1 och tolkas enligt fรถljande:
- Ett p-vรคrde lรคgre รคn 0.05 innebรคr att du kan fรถrkasta nollhypotesen. Observera att att fรถrkasta H0 inte รคr samma sak som att bevisa att H1 รคr sann, det betyder bara att data รคr osannolika under H0.
- Ett p-vรคrde hรถgre รคn 0.05 indikerar att du inte har tillrรคckligt med bevis fรถr att fรถrkasta nollhypotesen.
Du kan konstruera p-vรคrdet genom att titta pรฅ motsvarande absoluta vรคrde fรถr t-testet i Studentfรถrdelningen med en frihetsgrader lika med
Till exempel, med 5 observationer jรคmfรถr du ditt t-vรคrde mot Studentfรถrdelningen med 4 frihetsgrader vid 95 procents konfidensnivรฅ. Fรถr att fรถrkasta nollhypotesen i ett tvรฅsidigt test mรฅste det absoluta t-vรคrdet รถverstiga 2.776.
Se tabellen nedan:
Ett exempel pรฅ T-test i R
Anta att du รคr ett fรถretag som producerar cookies. Varje kaka ska innehรฅlla 10 gram socker. Kakorna tillverkas av en maskin som tillsรคtter sockret i en skรฅl innan allt blandas. Du tror att maskinen inte tillsรคtter 10 gram socker fรถr varje kaka. Om ditt antagande รคr sant mรฅste maskinen fixas. Du lagrade sockernivรฅn fรถr trettio kakor.
Anmรคrkningar: Du kan skapa en randomiserad vektor med funktionen rnorm(). Denna funktion genererar normalfรถrdelade vรคrden. Den grundlรคggande syntaxen รคr:
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
Du kan skapa en fรถrdelning med 30 observationer med ett medelvรคrde pรฅ 9.99 och en standardavvikelse pรฅ 0.04.
set.seed(123) sugar_cookie <- rnorm(30, mean = 9.99, sd = 0.04) head(sugar_cookie)
Produktion:
## [1] 9.967581 9.980793 10.052348 9.992820 9.995172 10.058603
Du kan anvรคnda ett t-test med ett prov fรถr att kontrollera om sockernivรฅn skiljer sig frรฅn receptet. Du kan rita ett hypotestest:
- H0: Den genomsnittliga nivรฅn av socker รคr lika med 10
- H1: Den genomsnittliga nivรฅn av socker รคr annorlunda รคn 10
Du anvรคnder en signifikansnivรฅ pรฅ 0.05.
# H0 : mu = 10 t.test(sugar_cookie, mu = 10)
Hรคr รคr utgรฅngen:
P-vรคrdet fรถr t-testet med ett stickprov รคr 0.1079, vilket รคr รถver trรถskelvรคrdet pรฅ 0.05. 95-procentigt konfidensintervall fรถr medelvรคrdet gรฅr frรฅn 9.973 till 10.002 gram, och det innehรฅller mรฅlvรคrdet 10. Du kan dรคrfรถr inte fรถrkasta H0: det finns inte tillrรคckligt med bevis fรถr att maskinen avviker frรฅn receptet.
Oberoende tvรฅ-sampel T-test i R
Det oberoende t-testet med tvรฅ stickprov รคr den vanligaste varianten, och det gรคller nรคr de tvรฅ uppsรคttningarna mรคtningar kommer frรฅn olika fรถrsรถkspersoner: tvรฅ verkstรคder, tvรฅ maskiner, tvรฅ behandlingsarmar.
Anta att en fabrik har tvรฅ produktionslinjer och du vill veta om de fyller burkar till samma vikt.
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)
Lรคs utdata i fyra steg.
- t รคr den standardiserade storleken pรฅ gapet mellan de tvรฅ medelvรคrdena. Dess tecken รฅterspeglar endast den ordning i vilken du skickade vektorerna.
- df รคr frihetsgraderna. Welch producerar ett brรฅkvรคrde; det poolade testet ger ett heltal lika med n1 + n2 โ 2.
- p-vรคrde รคr sannolikheten att se ett sรฅ stort gap om de verkliga medelvรคrdena var identiska.
- Konfidensintervall begrรคnsar den sanna skillnaden. Nรคr den innehรฅller noll รคr skillnaden inte signifikant pรฅ den nivรฅn.
Om dina data finns i en enda dataram med en kolumn med vรคrden och en faktorkolumn, anvรคnd formelgrรคnssnittet istรคllet, vilket รคr lรคttare att lรคsa och undviker att dela upp data manuellt:
t.test(weight ~ line, data = jars)
Vilken version ska anvรคndas. Lรคmna var.equals standardvรคrde pรฅ FALSE om du inte har testat och bekrรคftat lika varianser. Welchs korrigering kostar nรคstan ingenting i kraft nรคr varianserna rรฅkar matcha, och den skyddar dig nรคr de inte gรถr det.
Parat T-test i R
Parat t-test, รคven kallat beroende stickprovs-t-test, anvรคnds nรคr samma grupp mรคts tvรฅ gรฅnger. Typiska tillรคmpningar รคr:
- A / B-test: Jรคmfรถr tvรฅ varianter
- Fallkontrollstudierfรถre och efter en behandling pรฅ samma fรถrsรถkspersoner
Parat T-testexempel i R
Ett dryckesfรถretag รคr intresserade av att veta resultatet av ett rabattprogram pรฅ fรถrsรคljningen. Fรถretaget bestรคmde sig fรถr att fรถlja den dagliga fรถrsรคljningen i en av sina butiker dรคr programmet marknadsfรถrs. I slutet av programmet vill fรถretaget veta om det finns en statistisk skillnad mellan den genomsnittliga fรถrsรคljningen i butiken fรถre och efter programmet.
- Fรถretaget tracKรถrde fรถrsรคljningen varje dag innan programmet startade. Detta รคr vรฅr fรถrsta vektor.
- Programmet marknadsfรถrs under en vecka och fรถrsรคljningen registreras varje dag. Detta รคr vรฅr andra vektor.
- Du kommer att utfรถra t-testet fรถr att bedรถma programmets effektivitet. Detta kallas ett parat t-test eftersom vรคrdena fรถr bรฅda vektorerna kommer frรฅn samma distribution (dvs samma butik).
Hypotestestningen รคr:
- H0: Ingen skillnad i medelvรคrde
- H1: De tvรฅ sรคtten รคr olika
Kom ihรฅg att det klassiska t-testet antar en okรคnd men lika stor varians i bรฅda grupperna. Verkliga data uppfyller sรคllan detta exakt, och att ignorera skillnaden kan fรถrvrรคnga resultatet.
Lรถsningen รคr Welchs t-test, vilket minskar antagandet om lika varians. R tillรคmpar det som standard eftersom var.equal รคr FALSE om du inte anger nรฅgot annat. I denna datauppsรคttning genererades bรฅda vektorerna med samma standardavvikelse, sรฅ du kan sรคkert sรคtta var.equal = TRUE.
Du skapar tvรฅ slumpmรคssiga vektorer frรฅn en gaussisk fรถrdelning med ett hรถgre medelvรคrde fรถr fรถrsรคljningen efter programmet.
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-vรคrdet รคr 0.04606, strax under trรถskelvรคrdet 0.05, sรฅ du fรถrkastar H0 och drar slutsatsen att de tvรฅ medelvรคrdena skiljer sig signifikant. Rabattprogrammet verkar ha รถkat fรถrsรคljningen.
โ ๏ธ Viktigt: anropet ovan jรคmfรถr de tvรฅ vektorerna som oberoende prover. Eftersom bรฅda serierna รคr mรคtningar pรฅ samma verkstad, adderar det statistiskt korrekta anropet parat = SANT:
t.test(sales_before, sales_after, paired = TRUE)
Den parade formen testar medelvรคrdet av dag-fรถr-dag-skillnaderna istรคllet fรถr skillnaden mellan tvรฅ medelvรคrden. Den tar bort variationen pรฅ verkstadsnivรฅ som delas av bรฅda vektorerna och har dรคrfรถr stรถrre statistisk styrka.
Hur man kontrollerar T-testantaganden i R
Ett t-tests p-vรคrde รคr bara meningsfullt nรคr dess antaganden gรคller. Var och en har en direkt kontroll.
1. Normalitet. En- och tvรฅ-stickprovstesterna antar att vรคrdena รคr ungefรคr normala; det parade testet antar att skillnader Inspektera ett QQ-diagram och bekrรคfta med Shapiro-Wilk-testet:
qqnorm(sugar_cookie); qqline(sugar_cookie)
shapiro.test(sugar_cookie)
# for a paired design, test the differences
shapiro.test(sales_after - sales_before)
Ett Shapiro-Wilk p-vรคrde รถver 0.05 innebรคr att normaliteten inte kan fรถrkastas. Med mer รคn cirka 30 observationer per grupp gรถr den centrala grรคnsvรคrdessatsen t-testet robust till mรฅttlig skevhet รคndรฅ.
2. Lika varians. Endast det poolade tvรฅ-stickprovstestet behรถver detta. Testa det med ett F-test:
var.test(line_a, line_b)
Ett p-vรคrde รถver 0.05 stรถder lika varianser, vilket motiverar att var.equal = TRUE.
3. Oberoende. Detta fรถljer av studiedesignen och kan inte testas i efterhand. Om samma fรถrsรถksperson bidrar till bรฅda vektorerna รคr det oberoende testet helt enkelt fel verktyg och du behรถver parat = SANT.
Nรคr ett antagande fallerar. Fรถr tydligt icke-normala data med smรฅ stickprov, anvรคnd de rangbaserade alternativen: wilcox.test(x, y) ersรคtter t-testet med tvรฅ stickprov och wilcox.test(x, y, paired = TRUE) ersรคtter den parade versionen. Ingen av dem krรคver normalitet, รคven om bรฅda utbyter lite makt nรคr data faktiskt รคr normala.
T-test i R: Viktiga slutsatser och testreferenser
- Statistisk slutledning รคr konsten att dra slutsatser om fรถrdelningen av data.
- T-testet tillhรถr familjen av slutsatsstatistik. Det anvรคnds ofta fรถr att ta reda pรฅ om det finns en statistisk skillnad mellan medelvรคrdena fรถr tvรฅ grupper.
- Ett-sample t-test, eller Students test, jรคmfรถr medelvรคrdet av en vektor med ett teoretiskt medelvรคrde.
- Det parade t-testet, eller det beroende stickprovets t-test, tillรคmpas nรคr samma grupp mรคts tvรฅ gรฅnger.
Tabellen nedan sammanfattar varje test som behandlats ovan:
| Testa | Hypotes att testa | p-vรคrde | Code | Valfritt argument |
|---|---|---|---|---|
| ett-prov t-test | Medelvรคrdet fรถr en vektor skiljer sig frรฅn det teoretiska medelvรคrdet | 0.05 |
t.test(x, mu = mean)
|
|
| parat prov t-test | Medelvรคrde A skiljer sig frรฅn medelvรคrde B fรถr samma fรถrsรถkspersoner | 0.05 |
t.test(A, B, paired = TRUE) |
var.equal = TRUE
|
Om du รคr villig att anta lika varianser i ett oberoende tvรฅprovstest, sรคtt var.equal = TRUE. Lรฅt standardvรคrdet vara FALSE fรถr att kรถra den sรคkrare Welch-korrigeringen.




