T-test i R-programmering: Ett eksempel og paret eksempel
โก Smart oppsummering
T-testen i R sammenligner gjennomsnitt ved hjelp av t.test()-funksjonen, som dekker ett utvalg mot et fast mรฅl, to uavhengige grupper og parvise gjentatte mรฅlinger. Denne gjennomgangen kjรธrer hver variant, leser p-verdien riktig og verifiserer de underliggende antagelsene.

Hva er statistisk slutning?
Statistisk inferens er kunsten รฅ generere konklusjoner om fordelingen av data. En dataforsker stรฅr ofte overfor spรธrsmรฅl som bare kan besvares vitenskapelig. Derfor er statistisk inferens en strategi for รฅ teste om en hypotese er sann, dvs. validert av dataene.
En vanlig strategi for รฅ vurdere en hypotese er t-testen, som forteller deg om to gjennomsnitt er like. Den er ogsรฅ kjent som StudenttestEn t-test kan beregnes for:
- En enkelt vektor mot en fast verdi (t-test med ett utvalg)
- To vektorer fra to separate grupper (uavhengig t-test med to utvalg)
- To vektorer mรฅlt pรฅ de samme forsรธkspersonene (paret t-test)
Hver t-test antar at dataene er tilfeldig utvalgt og at verdiene (eller, for en paret test, forskjellene) kommer fra en tilnรฆrmet normalfordelt populasjon. Den uavhengige versjonen med to utvalg antar i tillegg at de to gruppene er uavhengige av hverandre, og den klassiske formen antar at variansen deres er like.
Hva er T-Test i R-programmering?
Den grunnleggende ideen bak en T-Test er รฅ bruke statistikk for รฅ evaluere to motsatte hypoteser:
- H0nullhypotesen, at populasjonsgjennomsnittet er lik verdien som testes
- H1: den alternative hypotesen, at populasjonsgjennomsnittet er forskjellig fra den verdien
T-testen er utformet for smรฅ utvalgsstรธrrelser, der normaltilnรฆrmingen er upรฅlitelig. Den krever at dataene er tilnรฆrmet normalfordelte.
T-testsyntaks i R
Den grunnleggende syntaksen for t.test() i R er:
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
Fรธr du kjรธrer noe som helst, mรฅ du matche dataoppsettet med riktig variant av testen.
Typer T-test i R
ร velge feil variant er den vanligste t-testfeilen, sรฅ begynn med รฅ matche dataoppsettet ditt med riktig kall.
| typen | Bruk den nรฅr | R-samtale |
|---|---|---|
| รn prรธve | รn gruppe sammenlignet med en kjent mรฅlverdi | t.test(x, mu = verdi) |
| Uavhengig to-utvalg (Welch) | To separate grupper, varianser muligens ulik | t.test(x, y) |
| Uavhengig to-utvalg (samlet) | To separate grupper med lik varians | t.test(x, y, var.equal = TRUE) |
| Sammenkoblet | De samme forsรธkspersonene ble mรฅlt to ganger | t.test(x, y, paret = SANN) |
| Ensidig | Du bryr deg bare om en forskjell i รฉn retning | t.test(x, mu = verdi, alternativ = "stรธrre") |
Utover tre grupper er en t-test ikke lenger passende. Bytt til ANOVA test, som holder den totale feilraten pรฅ 5 prosent i stedet for รฅ blรฅse den opp pรฅ tvers av gjentatte parvise sammenligninger.
รn prรธve T-test i R
One Sample t-testen, eller elevens test, sammenligner gjennomsnittet av en vektor mot et teoretisk gjennomsnitt, . Formelen som brukes for รฅ beregne t-testen er:
Her
refererer til gjennomsnittet
til det teoretiske middelet
- s er standardavviket
- n antall observasjoner.
For รฅ evaluere den statistiske signifikansen til t-testen, mรฅ du beregne p-verdien. De p-verdien varierer fra 0 til 1, og tolkes som fรธlger:
- En p-verdi lavere enn 0.05 betyr at du kan forkaste nullhypotesen. Merk at det รฅ forkaste H0 ikke er det samme som รฅ bevise at H1 er sann, det betyr bare at dataene er usannsynlige under H0.
- En p-verdi hรธyere enn 0.05 indikerer at du ikke har nok bevis til รฅ forkaste nullhypotesen.
Du kan konstruere p-verdien ved รฅ se pรฅ den tilsvarende absolutte verdien til t-testen i Studentfordelingen med en frihetsgrader lik
For eksempel, med 5 observasjoner sammenligner du t-verdien din mot Student-fordelingen med 4 frihetsgrader ved et konfidensnivรฅ pรฅ 95 prosent. For รฅ forkaste nullhypotesen i en tosidig test, mรฅ den absolutte t-verdien overstige 2.776.
Se tabellen nedenfor:
Ett eksempel pรฅ T-test i R
Anta at du er et selskap som produserer informasjonskapsler. Hver informasjonskapsel skal inneholde 10 gram sukker. Kakene produseres av en maskin som tilsetter sukkeret i en bolle fรธr alt blandes. Du mener at maskinen ikke tilsetter 10 gram sukker for hver informasjonskapsel. Hvis antagelsen din er sann, mรฅ maskinen fikses. Du lagret sukkernivรฅet til tretti informasjonskapsler.
Merknader: Du kan lage en randomisert vektor med funksjonen rnorm(). Denne funksjonen genererer normalfordelte verdier. Den grunnleggende syntaksen er:
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 lage en fordeling med 30 observasjoner med et gjennomsnitt pรฅ 9.99 og et standardavvik pรฅ 0.04.
set.seed(123) sugar_cookie <- rnorm(30, mean = 9.99, sd = 0.04) head(sugar_cookie)
Utgang:
## [1] 9.967581 9.980793 10.052348 9.992820 9.995172 10.058603
Du kan bruke en en-prรธve t-test for รฅ sjekke om nivรฅet av sukker er annerledes enn oppskriften. Du kan tegne en hypotesetest:
- H0: Gjennomsnittlig sukkernivรฅ er lik 10
- H1: Gjennomsnittlig sukkernivรฅ er annerledes enn 10
Du bruker et signifikansnivรฅ pรฅ 0.05.
# H0 : mu = 10 t.test(sugar_cookie, mu = 10)
Her er utgangen:
P-verdien til t-testen med ett utvalg er 0.1079, over terskelen pรฅ 0.05. 95-prosents konfidensintervallet for gjennomsnittet gรฅr fra 9.973 til 10.002 gram, og det inneholder mรฅlverdien pรฅ 10. Du kan derfor ikke forkaste H0: det er ikke nok bevis for at maskinen avviker fra oppskriften.
Uavhengig to-utvalgs T-test i R
Den uavhengige t-testen med to utvalg er den mest brukte varianten, og den gjelder nรฅr de to settene med mรฅlinger kommer fra forskjellige forsรธkspersoner: to verksteder, to maskiner, to behandlingsarmer.
Anta at en fabrikk kjรธrer to produksjonslinjer, og du vil vite om de fyller glass med samme vekt.
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)
Les resultatet i fire trinn.
- t er den standardiserte stรธrrelsen pรฅ gapet mellom de to gjennomsnittene. Fortegnet gjenspeiler bare rekkefรธlgen du sendte vektorene i.
- df er frihetsgradene. Welch produserer en brรธkverdi; den samlede testen gir et helt tall lik n1 + n2 โ 2.
- p-verdien er sannsynligheten for รฅ se et sรฅ stort gap hvis de sanne gjennomsnittene var identiske.
- Konfidensintervall begrenser den sanne differansen. Nรฅr den inneholder null, er ikke differansen signifikant pรฅ det nivรฅet.
Hvis dataene dine ligger i en enkelt dataramme med รฉn kolonne med verdier og รฉn faktorkolonne, bruk formelgrensesnittet i stedet, som er enklere รฅ lese og unngรฅr รฅ dele dataene manuelt:
t.test(weight ~ line, data = jars)
Hvilken versjon som skal brukes. La var.equal stรฅ pรฅ standardverdien FALSE med mindre du har testet og bekreftet like varianser. Welchs korreksjon koster nesten ingenting i kraft nรฅr variansene tilfeldigvis samsvarer, og den beskytter deg nรฅr de ikke gjรธr det.
Paret T-test i R
Den parede t-testen, ogsรฅ kalt den avhengige utvalgs-t-testen, gjelder nรฅr den samme gruppen mรฅles to ganger. Typiske bruksomrรฅder er:
- A / B-testing: Sammenlign to varianter
- Case-kontrollstudierfรธr og etter en behandling av de samme forsรธkspersonene
Paret T-testeksempel i R
Et drikkevareselskap er interessert i รฅ vite ytelsen til et rabattprogram pรฅ salget. Selskapet bestemte seg for รฅ fรธlge det daglige salget til en av butikkene der programmet promoteres. Pรฅ slutten av programmet รธnsker bedriften รฅ vite om det er en statistisk forskjell mellom gjennomsnittlig salg av butikken fรธr og etter programmet.
- Selskapet tracsjekket salget hver dag fรธr programmet startet. Dette er vรฅr fรธrste vektor.
- Programmet promoteres i en uke og salget registreres hver dag. Dette er vรฅr andre vektor.
- Du vil utfรธre t-testen for รฅ bedรธmme effektiviteten til programmet. Dette kalles en paret t-test fordi verdiene til begge vektorene kommer fra samme fordeling (dvs. samme butikk).
Hypotesetestingen er:
- H0: Ingen forskjell i gjennomsnitt
- H1: De to virkemidlene er forskjellige
Husk at den klassiske t-testen antar en ukjent, men lik varians i begge gruppene. Reelle data tilfredsstiller sjelden dette nรธyaktig, og รฅ ignorere forskjellen kan forvrenge resultatet.
Lรธsningen er Welchs t-test, som lรธsner opp forutsetningen om lik varians. R bruker den som standard fordi var.equal er USANN med mindre du spesifiserer noe annet. I dette datasettet ble begge vektorene generert med samme standardavvik, sรฅ du kan trygt sette var.equal = SANN.
Du lager to tilfeldige vektorer fra en gaussisk fordeling med et hรธyere gjennomsnitt for salget etter 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-verdien er 0.04606, rett under terskelen pรฅ 0.05, sรฅ du forkaster H0 og konkluderer med at de to gjennomsnittene er betydelig forskjellige. Rabattprogrammet ser ut til รฅ ha รธkt salget.
โ ๏ธ Viktig: kallet ovenfor sammenligner de to vektorene som uavhengig prรธver. Fordi begge seriene er mรฅlinger pรฅ samme verksted, legger det statistisk korrekte kallet til paret = SANN:
t.test(sales_before, sales_after, paired = TRUE)
Den parede formen tester gjennomsnittet av dag-for-dag-forskjellene i stedet for forskjellen mellom to gjennomsnitt. Den fjerner variasjonen pรฅ verkstednivรฅ som deles av begge vektorene og har derfor mer statistisk styrke.
Slik sjekker du T-testforutsetninger i R
En t-test p-verdi er bare meningsfull nรฅr forutsetningene holder. Hver av dem har en direkte kontroll.
1. Normalitet. En-utvalgs- og to-utvalgstestene antar at verdiene er tilnรฆrmet normale; den parede testen antar at forskjeller er. Inspiser et QQ-plott og bekreft med Shapiro-Wilk-testen:
qqnorm(sugar_cookie); qqline(sugar_cookie)
shapiro.test(sugar_cookie)
# for a paired design, test the differences
shapiro.test(sales_after - sales_before)
En Shapiro-Wilk p-verdi over 0.05 betyr at normaliteten ikke kan forkastes. Med mer enn omtrent 30 observasjoner per gruppe gjรธr den sentrale grensesetningen t-testen robust til moderat skjevhet uansett.
2. Lik varians. Bare den samlede testen med to utvalg trenger dette. Test den med en F-test:
var.test(line_a, line_b)
En p-verdi over 0.05 stรธtter like varianser, noe som rettferdiggjรธr at var.equal = TRUE.
3. Uavhengighet. Dette fรธlger av studiedesignet og kan ikke testes i etterkant. Hvis samme forsรธksperson bidrar til begge vektorene, er den uavhengige testen rett og slett feil verktรธy, og du trenger paret = SANN.
Nรฅr en antagelse slรฅr feil. For tydelig ikke-normale data med smรฅ utvalg, bruk de rangbaserte alternativene: wilcox.test(x, y) erstatter t-testen med to utvalg og wilcox.test(x, y, paret = TRUE) erstatter den parede versjonen. Ingen av dem krever normalitet, selv om begge utveksler litt kraft nรฅr dataene faktisk er normale.
T-test i R: Viktige poenger og testreferanser
- Statistisk slutning er kunsten รฅ generere konklusjoner om fordelingen av dataene.
- T-testen tilhรธrer familien av konklusjonsstatistikk. Det brukes ofte for รฅ finne ut om det er en statistisk forskjell mellom gjennomsnittene for to grupper.
- En-utvalgs t-testen, eller Students test, sammenligner gjennomsnittet av en vektor med et teoretisk gjennomsnitt.
- Den parede t-testen, eller avhengige utvalgs-t-testen, gjelder nรฅr den samme gruppen mรฅles to ganger.
Tabellen nedenfor oppsummerer hver test som er dekket ovenfor:
| Test | Hypotese รฅ teste | p-verdien | Code | Valgfritt argument |
|---|---|---|---|---|
| en-prรธve t-test | Gjennomsnittet av en vektor er forskjellig fra det teoretiske gjennomsnittet | 0.05 |
t.test(x, mu = mean)
|
|
| paret prรธve t-test | Gjennomsnitt A er forskjellig fra gjennomsnitt B for de samme forsรธkspersonene | 0.05 |
t.test(A, B, paired = TRUE) |
var.equal = TRUE
|
Hvis du er villig til รฅ anta like varianser i en uavhengig test med to utvalg, sett var.equal = TRUE. La den stรฅ pรฅ standardverdien FALSE for รฅ kjรธre den sikrere Welch-korreksjonen.




