ANOVA: testy středních hodnot více skupin

ANOVA je obdobou t-testu, ale pro větší počet skupin. H0: všechny skupiny mají stejnou střední hodnotu, H1: nemají. Výpočet probíhá pomocí rozptylů, proto poněkud „matoucí název“ (analysis of variance, analýza rozptylu).

Nezávislým (vstupním) proměnným říkáme faktory, jedná se o nominální (kategoriální) proměnné (tedy pouze názvy). Pokud máme jeden faktor, hovoříme o jednofaktorové (one-way ANOVA), např. 1 faktor pohlaví: muž, žena – celkem 2 skupiny (2 hodnoty proměnné pohlaví). Můžeme však použít kombinaci dvou faktorů (two-way ANOVA), např. faktor pohlaví: muž, žena a faktor vzdělání: bez maturity, s maturitou, vysokoškolské – kombinace obou faktorů vytváří celkem 6 skupin (2x3). Obecně může být faktorů i více, pak používáme obecnou vícefaktorovou (n-way) ANOVA.

Důležité je rozhodnout, zda skupiny obsahují nezávislá měření (klasická ANOVA) nebo závislá (korelovaná) měření (tzv. repeated measures ANOVA, též rANOVA). Význam je shodný, jako v případě t-testů.

Nejčastěji sledujeme jednu závislou (výstupní měřenou) proměnnou (numerická proměnná), např. měsíční plat. A testujeme, zda ve všech skupinách nabývá stejné střední hodnoty. Pokud je výhodné analyzovat několik závislých proměnných zároveň, používáme MANOVA (multivariate), která umožňuje objevit ještě více vztahů mezi proměnnými.

Podmínky použití klasické ANOVA

Jakmile alespoň jedna podmínka není splněna, musíme použít neparametrické varianty ANOVA, jedná se však o slabší testy (menší síla testu \(1 - \beta\), nižší šance objevit H1). Například tyto.

Poznámka: tyto názvy berte raději s rezervou, v některých programech se pod nimi mohou nalézat jiné varianty. Vždy si raději přečtěte nejdříve nápovědu.

Post-hoc (follow-up, následné) testy, tzv. multiple comparisons

Pokud ANOVA přijímá H1, je vhodné zjistit, které konkrétní skupiny se odlišují od ostatních. Slouží k tomu tzv. post-hoc testy, kde testujeme jednotlivé dvojice. Jedná se v podstatě o obdobu t-testů pro potřeby ANOVA, ale na rozdíl od t-testů nevidí tyto metody jen „slepě“ vždy konkrétní dvojici, ale berou v potaz celá data.

Interakce mezi faktory

U dvou a vícefaktoré ANOVA ukazuje většinou statistický nástroj i interakci mezi faktory. Zobrazují se p-hodnoty jak jednotlivých faktorů, tak jejich kombinací. V případě signifikantní hodnoty to znamená, že teprve kombinace hodnot obou faktorů umožňuje rozklíčovat překvapivě jiný směr, než který vyplývá z každého faktoru samostatně.

Příklad: tradičně se říká, že s vyšším vzděláním lze očekávat vyšší plat, zároveň se také stále poukazuje na problém, kdy ženy na podobné úrovni s muži mají často plat nižší. Můžeme však (v hypoteticky vymyšlené situaci) pozorovat případ, kdy muži s nejnižším vzděláním budou mít plat stejný nebo vyšší než ti s nejvyšším (zatímco u žen tuto anomálii pozorovat nebudeme). Zdůvodnění nechme jen na hypotézách (jsou to např. politici? jsou to šikovní kluci, co se vrhli na podnikání a nezdržovali se obecnými studiemi, které jim jsou na nic?). Důležité však je, že právě interakce bezi oběma faktory dokáže tuto situaci podchytit, protože teprve vzdělání v kombinaci s pohlavím zjistí, že ač obecný trend díky vzdělání je jasný, i obecný vliv pohlaví také, tak zrovna nejnižší vzdělání v kombinaci s mužským pohlavím vede na něco zcela odlišného.

Zajímavé odkazy

attach(mtcars)
gears <- factor(gear)
cyl <- factor(cyl)
interaction.plot(cyl, gear, mpg, type="b", col=c(1:3),
 leg.bty="o", leg.bg="beige", lwd=2, pch=c(18,24,22),
 xlab="Number of Cylinders",
 ylab="Mean Miles Per Gallon",
 main="Interaction Plot")

one-way: http://ww2.coastal.edu/kingw/statistics/R-tutorials/oneway.html

random: http://ww2.coastal.edu/kingw/statistics/R-tutorials/factorial.html

repeated: http://ww2.coastal.edu/kingw/statistics/R-tutorials/repeated.html

http://www.analyticsforfun.com/2014/06/performing-anova-test-in-r-results-and.html

http://statistics.ats.ucla.edu/stat/r/faq/posthoc.htm

kruskal-wallis: http://www.r-tutor.com/elementary-statistics/non-parametric-methods/kruskal-wallis-test

příklad: https://stat.ethz.ch/R-manual/R-patched/library/stats/html/kruskal.test.html

One-way:
# Kruskal Wallis Test One Way Anova by Ranks 
kruskal.test(y~A) # where y1 is numeric and A is a factor

# Randomized Block Design - Friedman Test 
friedman.test(y~A|B)
# where y are the data values, A is a grouping factor
# and B is a blocking factor

http://cran.r-project.org/web/packages/PMCMR/vignettes/PMCMR.pdf

require(stats)
data(InsectSprays)
attach(InsectSprays)
kruskal.test(count, spray)
posthoc.kruskal.nemenyi.test(count, spray)
posthoc.kruskal.nemenyi.test(count, spray, "Chisq")
detach(InsectSprays)
rm(InsectSprays)
## Formula Interface
posthoc.kruskal.nemenyi.test(count ~ spray, data = InsectSprays, dist="Tukey")

toto vypadá srozumitelně:

http://yatani.jp/teaching/doku.php?id=hcistats:kruskalwallis


© 7. 3. 2015 Tomáš Bořil, borilt@gmail.com