A t-eloszlásról, t-próbáról, p-value-ról van egy jó fejezet a DataCamp Inference for Numerical Data in R című kurzusában (Introducing the t-distribution), illetve ugyanebben a kurzusban az Inference for difference in two parameters fejezet témája a hipotézis vizsgálat t-próbával.
Korábban már volt róla szó, hogy nem csak egyenlőséget tesztelhetünk. Egyoldali esetben a hipotéziseink így módosulnak: vagy:
Fontos, hogy ez nem fog változtatni a kiszámolt statisztika értékén, csak az elfogadási intervallum fog kibővülni az egyik irányba (az első esetben balra felé, míg a második esetben jobbra felé). Hiszen azzal, hogy az egyik irányú kilengés -hoz képest átkerül a -ba, ezek a kilengések már nem számítanak nekünk “extrémnek”, csak a másik irányba esők. Ez a -érték fenti egyoldali definícióiból is látszik.
Először azt a változatát nézzük a t-próbának, ahol két egymástól független, akár különböző nagyságú, mintánk van, és ezek várható értékeit akarjuk összehasonlítani.
A következő teszt/próba akkor használható, ha feltehetjük, hogy a két minta háttéreloszlásának a szórása azonos.
Tekintsük a következő háttéreloszlásokat és az azokból vett és elemű mintákat:
Fontos, hogy a minták egymástól is függetlenek.
Hipotézisek
Itt a próbastatisztika a két minta átlag különbségén és úgynevezett pooled (közös, összevont) variancián alapszik, lásd ezen az oldalon.
Próbastatisztika
Ez a próbastatisztika is t-eloszlású, .
Ebben az esetben nem tesszük fel, hogy az és minták szórása megegyezik. Ezt a próbát Welch-próbának is nevezik.
Ekkor a következő háttéreloszlásaink és független mintáink vannak:
A Welch-próba próbastatisztikája szintén a minta átlagok különbségén alapszik, de itt már nem használhatunk összevont varianciát:
Próbastatisztika
Ez a próbastatisztika is t-eloszlású, a szabadsági foka komplikáltabb, lásd itt, ahol lenn az f jelöli a szabadságfokot.
A kétmintás t-próba mindkét fenti változatára létezik egyoldali változat is. A próbastatisztikák értéke ismét nem fog változni, csak az elfogadási/kritikus intervallum, és ezáltal a -érték. Az iménti betegek vs. egészséges példára, először legyen: Vagyis azt tesztelnénk, hogy az egészségeseknél magasabb a koleszterinszint. Megjegyezzük, hogy nem ez a természetes feltételezés a példában, de ettől függetlenül tesztelhető.
Az összetartozó kétmintás t-próbát akkor használjuk, amikor a minták összefüggnek, azaz egy mintát/populációt kétszer tesztelünk (repeated measures), vagy amikor két mintánk van, amik összetartoznak (paired/matched). Az első esetre egy példa: amikor ugyanazoknak a betegeknek mérjük meg a koleszterinszintjüket mondjuk 2 és 4 nappal szívinfarktus után. A másodikra példa a hallgatók matematika és fizika érettségi eredményei.
Ekkor a következő háttéreloszlásunk és mintánk van:
Hipotézisek
Látjuk, hogy a hipotéziseink ugyanazok, mint a független kétmintás esetben, de könnyen látható, hogy valójában egymintás tesztet végzünk: ami a várható érték linearitása miatt: Tehát látható, hogy valójában a különbségváltozóra kell sima egymintás t-próbát végeznünk.
Megj.: Ennek a kétmintás próbának az egyoldali esete ugyanígy átírható a különbségváltozóra nézett egymintás próbára.
Megj.: Vegyük észre, hogy a szórásokra a fentiek miatt nincs és nem is kell semmilyen feltevés.
cholestr <- read.delim("./cholestr.txt")
t.test(cholestr$Day2, cholestr$Day4, paired = TRUE)
##
## Paired t-test
##
## data: cholestr$Day2 and cholestr$Day4
## t = 3.2189, df = 27, p-value = 0.003337
## alternative hypothesis: true difference in means is not equal to 0
## 95 percent confidence interval:
## 8.442836 38.128593
## sample estimates:
## mean of the differences
## 23.28571
Manuálisan elkészítve a különbségváltozót, és arra futtatva a t-próbát, láthatjuk, hogy az output a hipotézis szöveges leírásán kívül ugyanaz.
cholestr$Day2diff4 <- cholestr$Day2 - cholestr$Day4
t.test(cholestr$Day2diff4)
##
## One Sample t-test
##
## data: cholestr$Day2diff4
## t = 3.2189, df = 27, p-value = 0.003337
## alternative hypothesis: true mean is not equal to 0
## 95 percent confidence interval:
## 8.442836 38.128593
## sample estimates:
## mean of x
## 23.28571
Összetartozó mintás tesztnél a két minta elemszáma szükségszerűen megegyezik, de a legtöbb program valahogy kezeli ezt a problémát. Az R ebben az esetben annyit tesz, hogy csak azokat a párokat veszi figyelembe, ahol mindkét változóra van mérés. Ha most a 2. napi koleszterinszintet a 14. napival akarjuk most összehasonlítani, akkor csak azokat veszi figyelembe, akik visszamentek a 14. napi mérésre is, ez látható lent, ha a szabadsági fokra nézünk, de a dokumentáció is írja.
t.test(cholestr$Day2, cholestr$Day14, paired = TRUE)
##
## Paired t-test
##
## data: cholestr$Day2 and cholestr$Day14
## t = 3.2883, df = 18, p-value = 0.004085
## alternative hypothesis: true difference in means is not equal to 0
## 95 percent confidence interval:
## 13.7215 62.2785
## sample estimates:
## mean of the differences
## 38
Több kétmintás tesztnél is alapfeltevés, hogy a szórások megegyeznek. Ez is olyan feltevés, amit többnyire nem tudunk, de (elő)tesztelni lehet.
Azt teszteli, hogy két független, normális eloszlású minta ( és ) háttérváltozóinak szórása () megegyezik-e. Az eddigi jelölésekkel a hipotézisek: A próbastatisztika és annak eloszlása esetén: ahol az és szabadsági fokú F-eloszlás. Itt az -hez tartozó, míg az -hoz tartozó minta mérete.
Most végezzünk F-tesztet a betegek 2. napi és a kontrollcsoport koleszterinszintjei között a szórásokra.
cholestg<-read.delim("http://www.statsci.org/data/general/cholestg.txt")
kontrol<-subset(cholestg,group==2)
beteg2<-subset(cholestg,group==1 & day==2)
var.test(kontrol$cholest, beteg2$cholest)
##
## F test to compare two variances
##
## data: kontrol$cholest and beteg2$cholest
## F = 0.21847, num df = 29, denom df = 27, p-value = 0.0001168
## alternative hypothesis: true ratio of variances is not equal to 1
## 95 percent confidence interval:
## 0.1019903 0.4631656
## sample estimates:
## ratio of variances
## 0.2184659
A p-érték alapján 0.05, 0.01 és 0.001 szignifikancia mellett is elutasíthatjuk a -t, tehát kijelenthető, hogy a betegek (2. napi) és a kontrollcsoport koleszterinszintjének szórásai különböznek (a próba feltételeinek fennállása esetén).
Megjegyzés: Az F-statisztika ugyan függ attól, hogy melyik korrigált empirikus szórás kerül a számlálóba és melyik a nevezőbe, de ez az F-eloszlás két paraméterét is megcseréli, így a p-érték végül nem fog változni:
var.test(beteg2$cholest, kontrol$cholest)
##
## F test to compare two variances
##
## data: beteg2$cholest and kontrol$cholest
## F = 4.5774, num df = 27, denom df = 29, p-value = 0.0001168
## alternative hypothesis: true ratio of variances is not equal to 1
## 95 percent confidence interval:
## 2.159055 9.804853
## sample estimates:
## ratio of variances
## 4.577373
Megjegyzés: A legtöbb olyan hipotézistesztet, ahol a próbastatisztika eloszlása F-eloszlású egységesen F-tesztnek nevezünk, így mindig hozzátesszük, mit is tesztelünk, lásd fenn.
Az F-próba módosítható úgy, hogy a tesztelendő hipotézis ne az egyezés, hanem a a varianciák hányadosának egy konstanssal való egyezése legyen. (Az egyezés vizsgálatánál azt teszteljük, hogy ez a konstans 1-e.) Ezt itt most nem részletezzük, de az R fv. ratio
paraméterével kipróbálható, pl.:
var.test(beteg2$cholest, kontrol$cholest, ratio = 5)
##
## F test to compare two variances
##
## data: beteg2$cholest and kontrol$cholest
## F = 0.91547, num df = 27, denom df = 29, p-value = 0.8206
## alternative hypothesis: true ratio of variances is not equal to 5
## 95 percent confidence interval:
## 2.159055 9.804853
## sample estimates:
## ratio of variances
## 4.577373
Itt a p-érték alapján elfogadható az az új nullhipotézis, hogy a betegek 2. napi koleszterinjének varianciája 5-szöröse a kontrollcsoporténak.
A tesztek alapfeltevéseit sokszor nem tudjuk teljes magabiztossággal elfogadni, ezért mindig szükséges az adatok grafikus vizsgálata is valamilyen ábrával, mint a korábbi laborokon már szereplő box-plot.
datatoplot<-rbind(beteg2, kontrol)
boxplot(cholest~group, data = datatoplot)
A ggplot2
boxplot megoldása talán kicsit szebb. Megjegyzés: ez igényli, hogy a változót (beteg/kontroll), amely szerint az adott kimenetet (koleszterinszint) összehasonlítjuk, azt factor
-rá alakítsuk. Így tudja az R, hogy az adott változó diszkrét/kategorikus.
library(ggplot2)
ggplot(datatoplot, aes(x=as.factor(group), y=cholest)) +
geom_boxplot()
Ez alapján szemléletesebben is látható a fenti szignifikáns különbség a varianciában.
Ez F-próbák nagyon érzékenyek a normalitásra. Vannak más komplexebb tesztek is a szórások vizsgálatára, amelyek erre nem annyira érzékenyek, pl. a Brown–Forsythe-test
A nemparaméteres statisztika (nonparametric statistics) a statisztikának egy olyan ága, ami nem csak parametrizált eloszláscsaládokra fókuszál (például tipikus paraméterek az átlag és a szórás). A nemparaméteres statisztika olyan módszerekre támaszkodik, amik
A Mann–Whitney próba a független kétmintás -próba nemparaméteres megfelelője, amivel azt lehet vizsgálni, hogy két független minta ugyanabból az eloszlásból (vagy azonos eloszlású populációkból) származnak-e.
Feltételek
Hipotézisek
: A két minta azonos eloszlásból származik
: A két minta különböző eloszlásból származik
Többféle valid megfogalmazása/interpretációja van a nullhipotézisnek, a leggyakoribb értelmezésben azt jelenti, hogy ugyanakkora valószínűséggel (50-50%) lesz egy véletlenszerűen kiválasztott megfigyelés kisebb vagy nagyobb mint egy véletlenül kiválasztott megfigyelés, azaz:
(azaz az egyik eloszlás sztochasztikusan nagyobb mint a másik)
Megjegyzés:
Egy másik interpretációban szigorúbb feltételek mellett: folytonos eloszlás függvények, és a két eloszlás függvény a egymásnak az eltoltja (shift in location), azaz , a hipotézisek a következők: és .A próba számítása
R példa
Hasonlóan a múltkori kétmintás t-próbához, nézzük meg hogy a betegek negyedik napi koleszterinszintje különbözik-e az egészségesek koleszterinszintjétől. Ehhez használjuk megint a cholestg
adatokat (ezen a honlapon az első file).
cholestg <- read.delim("./cholestg.txt")
Kérjük le a betegek negyedik napi és az egészségesek koleszterinszintjét:
egeszsegesek = cholestg[cholestg$group == 2, "cholest"]
betegek = cholestg[cholestg$group == 1 & cholestg$day == 4, "cholest"]
A Wilcoxon-féle tesztek elvégzéséhez a wilcox.test
függvényt kell használni:
wilcox.test(egeszsegesek, betegek)
## Warning in wilcox.test.default(egeszsegesek, betegek): cannot compute exact p-value with
## ties
##
## Wilcoxon rank sum test with continuity correction
##
## data: egeszsegesek and betegek
## W = 164, p-value = 6.911e-05
## alternative hypothesis: true location shift is not equal to 0
Látjuk hogy a -érték rendkívül kicsi, ezért nagyon magas konfidencia szinten is elutasíthatjuk a nullhipotézist, azaz az egészségesek és a betegek negyedik napi koleszterin szintje nem azonos eloszlású.
Egészségesek átlagos koleszterinszintje
mean(egeszsegesek)
## [1] 193.1333
Egészségesek átlagos koleszterinszintje
mean(betegek)
## [1] 230.6429
A Wilcoxon-féle előjeles rang próba az összetartozó kétmintás -próba nemparaméteres megfelelője, amivel azt lehet vizsgálni, hogy két összefüggő minta ugyanabból az eloszlásból (vagy azonos eloszlású populációkból) származnak-e.
Feltételek
Hipotézisek
: A különbségváltozó a 0 körül szimmetrikus eloszlású
: A különbségváltozó a 0 körül nem szimmetrikus eloszlású
vagy ekvivalensen
A próba számítása
R példa
Megint nézzük meg a betegek második és negyedik napi koleszterin szintjüket:
cholestr <- read.delim("./cholestr.txt")
wilcox.test(cholestr$Day2, cholestr$Day4, paired=TRUE) # Hasonlóan a t.test-hez a paired paramétert kell TRUE-ra állítani
## Warning in wilcox.test.default(cholestr$Day2, cholestr$Day4, paired = TRUE): cannot compute
## exact p-value with ties
##
## Wilcoxon signed rank test with continuity correction
##
## data: cholestr$Day2 and cholestr$Day4
## V = 324, p-value = 0.006056
## alternative hypothesis: true location shift is not equal to 0