Kontingenčná tabuľka je tabuľka, ktorá sa používa na prehľadné zhrnutie vzájomného vzťahu dvoch kategoriálnych štatistických znakov.

Ukažeme si tri spôsoby načítania údajov, z ktorých chceme vytvoriť kontingenčnú tabuľku. Premenna udajeA má tri obmeny: 0,1,2. Premenná udajeB má 4 obmeny: 1,2,3,4. Ďalej ukážeme ako pomenovať riadky a stĺpce kontingencnej tabuľky (nie je nutné).

Vytvorenie kontngenčnej tabuľky

I. Načítanie údajov priamo.

udajeA=c(1,1,1,2,2,2,0,0,0,1,1,1,1,2,2,2,1,2,1,2,0,1,1,1)   # Načítanie údajov premennej udajeA
udajeB=c(1,2,4,3,1,1,2,3,3,3,4,1,2,3,4,2,4,1,2,1,1,1,2,4)   # Načítanie údajov premennej udajeB

TabulkaI = table(udajeA,udajeB)      # Vytvorenie kontingenčnej tabuľky

rownames(TabulkaI)=c("A0", "A1", "A2")         # Pomenovanie riadkov
colnames(TabulkaI)=c("B1", "B2","B3", "B4")   # Pomenovanie stĺpcov

TabulkaI  # Vypísanie kontingenčnej tabuľky TabulkaI
##       udajeB
## udajeA B1 B2 B3 B4
##     A0  1  1  2  0
##     A1  3  4  1  4
##     A2  4  1  2  1
  1. Načítanie údajov z excelovskeho suboru nacitat.xlsx, ktorý je v adresári bs na disku d na prvom harku.

Tabuľka. Obsah excelovskeho suboru nacitat.xlsx

library(xlsx)   # Načítanie knižnice xlsx
## Warning: package 'xlsx' was built under R version 4.1.3
udaje = read.xlsx("d:/bs/nacitat.xlsx",1)  # Načítanie údajov
attach(udaje)
## The following objects are masked _by_ .GlobalEnv:
## 
##     udajeA, udajeB
TabulkaII = table(udaje$udajeA,udaje$udajeB)   # Vytvorenie kontingenčnej tabuľky TabulkaII

rownames(TabulkaII)=c("A0", "A1", "A2")         # Pomenovanie riadkov
colnames(TabulkaII)=c("B1", "B2","B3", "B4")   # Pomenovanie stĺpcov

TabulkaII # Vypísanie kontingenčnej tabuľky TabulkaII
##     
##      B1 B2 B3 B4
##   A0  1  1  2  0
##   A1  3  4  1  4
##   A2  4  1  2  1
  1. Načítanie kontingenčnej tabuľky priamo ako maticu
TabulkaIII= matrix(c(1,1,2,0,3,4,1,4,4,1,2,1), nrow = 3, ncol = 4, byrow = T)   # Načítanie kontingenčnej tabuľky po riadkoch

rownames(TabulkaIII)=c("A0", "A1", "A2")       # Pomenovanie riadkov
colnames(TabulkaIII)=c("B1", "B2","B3", "B4") # Pomenovanie stĺpcov

TabulkaIII   # Vypísanie kontingenčnej tabuľky TabulkaIII
##    B1 B2 B3 B4
## A0  1  1  2  0
## A1  3  4  1  4
## A2  4  1  2  1

Ďalšie príkazy uvedieme len pre kontingenčnú tabuľku, ktorá je pomenovaná TabulkaI .Pre ostatné sú príkazy rovnaké, len namiesto TabulkaI, by sme písali TabulkaII, resp. TabulkaIII.

Niekedy je užitočné poznať podiely, riadkové a stĺpcové podiely. Ukážeme, ako ich vypočítať.

prop.table(TabulkaI)             #  podiely v tabuľke
##       udajeB
## udajeA         B1         B2         B3         B4
##     A0 0.04166667 0.04166667 0.08333333 0.00000000
##     A1 0.12500000 0.16666667 0.04166667 0.16666667
##     A2 0.16666667 0.04166667 0.08333333 0.04166667
prop.table(TabulkaI) * 100       #  podiely v percentách
##       udajeB
## udajeA        B1        B2        B3        B4
##     A0  4.166667  4.166667  8.333333  0.000000
##     A1 12.500000 16.666667  4.166667 16.666667
##     A2 16.666667  4.166667  8.333333  4.166667
prop.table(TabulkaI, margin=1)   # riadkové podiely
##       udajeB
## udajeA         B1         B2         B3         B4
##     A0 0.25000000 0.25000000 0.50000000 0.00000000
##     A1 0.25000000 0.33333333 0.08333333 0.33333333
##     A2 0.50000000 0.12500000 0.25000000 0.12500000
prop.table(TabulkaI, margin=2)   # stĺpcové podiely
##       udajeB
## udajeA        B1        B2        B3        B4
##     A0 0.1250000 0.1666667 0.4000000 0.0000000
##     A1 0.3750000 0.6666667 0.2000000 0.8000000
##     A2 0.5000000 0.1666667 0.4000000 0.2000000

B. CHÍ-KVADRÁT TEST NEZÁVISLOSTI

Testujme nulovú hypotézu H0, že sú skúmané kategoriálne znaky nezávislé oproti alternatívnej hypotéze H1, že sú závislé. Jednou možnosťou je použitie testu Chí kvadrát test nezávislosti. Testovacia štatistika Chí kvadrát testu nezávislosti má približne chí kvadrát rozdelenie. Čím viac pozorovaní máme, tým lepšia je aproximácia.

chisq.test uvádza varovanie “Warning in chisq.test(TabulkaI): Chi-squared approximation may be incorrect” vždy, keď je sú niektoré očakávané početnosti menšie ako 5.

X2=chisq.test(TabulkaI)   # Výpočet Chí kvadrát testu
## Warning in chisq.test(TabulkaI): Chi-squared approximation may be incorrect
X2    # Výpis pre Chí kvadrát test
## 
##  Pearson's Chi-squared test
## 
## data:  TabulkaI
## X-squared = 6.4333, df = 6, p-value = 0.3764

Z výstupu vidíme, že hodnota testovacej štatistiky je 6,4333. Testovacia štatistika má približne chí kvadrát rozdelenie so 6 stupňami voľnosti. P hodnota je 0,3764. Je väčšia ako 0,05 (hladina významnosti), preto nulovú hypotézu o nezávislosti nemôžeme zamietnúť.

Pomocou nasledujúceho príkazu vieme vypočítať očakávané početnosti.

X2$expected # Výpis očakávaných početností
##       udajeB
## udajeA       B1 B2        B3        B4
##     A0 1.333333  1 0.8333333 0.8333333
##     A1 4.000000  3 2.5000000 2.5000000
##     A2 2.666667  2 1.6666667 1.6666667

Fisherov exaktný test je alternatívou k testu chí-kvadrát, ktorý sa používa hlavne vtedy, keď aproximácia chí-kvadrát nie je uspokojivá. Pre velke tabulky je výpočet časovo náročný.

fisher.test(TabulkaI)   # Výpočet Fisherovho testu
## 
##  Fisher's Exact Test for Count Data
## 
## data:  TabulkaI
## p-value = 0.4581
## alternative hypothesis: two.sided

P hodnota Fisherovho testu je 0,4581, čo je viac, ako 0,05 (hladina významnosti), teda nulovvú hypotézu o nezávislosti nemôžeme zamietnúť.

Poznamenajme, že nezamietnutie nulovej hypotézy H0 neznamená, že H0 je pravdivá (t.j. nepreukážeme nezávislosť tým, že ju nezamietneme). Len viete, že akákoľvek závislosť, ktorá tam mohla byť, je príliž slabá (v našej vzorke), aby ste ju odlíšili od nezávislosti a náhodných odchýlok. Treba mať tiež na zreteli, že všetky rozdiely sú významné na ľubovoľnej úrovni pri dostatočne veľkej veľkosti výberovej vzorky.

V kontingenčných tabuľkách 2x2 môže byť Chí-kvadrát test vylepšený Yatesovou korekciou na spojitosť.

Mozaikový graf je vizuálna reprezentácia asociácie medzi dvoma nominálnymi premennými. Plocha obdĺžnikov je proporcionálna početnostiam v kontingenčnej tabuľke.

library(vcd)  # Načítanie knižnice vcd
## Warning: package 'vcd' was built under R version 4.1.3
## Loading required package: grid
mosaic(TabulkaI, main = "Mozaikový graf ", shade = TRUE, legend = TRUE)   # vykreslenie mozaikového grafu

Na výstupe vidíme tiež p hodnotu Chí kvadrát testu. Keďže H0 nemôžeme zamietnúť, všetky obdĺžniky sú sivé.

V prípade, že je p hodnota je menšia ako hladina významnosti, z mozaikového grafu vieme vyčítať, či je rozdiel medzi pozorovanými počtami (O) a očakávanými počtami (E) v bunkách v kontingenčnej tabuľke kladný (modrá farba) alebo záporný (červená farba). Presnejšie, sú to tzv. Pearsonove rezíduá ((O-E)/sqrt(E)).

Ďalej budeme pracovať s kontingenčnou tabuľkou TabulkaIV, aby sme ukázali postup, ako máme pokračovať, keď nulovú hypotézu o nezávislosti zamietame. V prípade, že ju nemôžeme zamietnuť, naše výpočty končia.

TabulkaIV= matrix(c(100, 12, 50 , 45, 20, 75), nrow = 2, ncol = 3, byrow = T)   # Načítanie kontingenčnej tabuľky po riadkoch
TabulkaIV  # Výpis kontingenčnej tabuľky TabulkaIV
##      [,1] [,2] [,3]
## [1,]  100   12   50
## [2,]   45   20   75
X2=chisq.test(TabulkaIV) # Výpočet Chí kvadrát testu
X2 # Výpis výsledkov Chí kvadrát testu
## 
##  Pearson's Chi-squared test
## 
## data:  TabulkaIV
## X-squared = 26.4, df = 2, p-value = 1.851e-06
X2$expected # Výpis očakávaných početností
##          [,1]     [,2]     [,3]
## [1,] 77.78146 17.16556 67.05298
## [2,] 67.21854 14.83444 57.94702
mosaic(TabulkaIV, main = "Mozaikový graf ", shade = TRUE, legend = TRUE)   # vykreslenie mozaikového grafu

Hodnota testovacej štatistiky je 26,4. P hodnota 0,000001851 je menšia ako hladina významnosti 0,05, teda nulovú hypotézu o nezávislosti zamietame. Všimnime si, že farba políčka (2,1) je červená, lebo (45-67,21854)/sqrt(67,21854) < 0; farba políčka (2,3) je modrá lebo (75-57,94702)/sqrt(57,94702) >0. Na grafe je vľavo farebná stupnica pre hodnoty Pearsonových rezíduí.

C. MERANIE VEĽKOSTI EFEKTU

Veľkosť efektu môžeme všeobecne definovať ako akúkoľvek štatistiku, ktorá kvantifikuje mieru, do akej sa výsledky vzorky líšia od očakávaní špecifikovaných v nulovej hypotéze. Veľkosť efektu je definovaná ako objektívna a štandardizovaná miera veľkosti pozorovaného účinku (Field, 2009, s.56).

Keď hypotézu o nezávislosti zamietame, je na mieste merať silu tejto závislosti.Najčastejšie sa používa Cramerovo V. Cramérovo V meria, ako silne súvisia dve kategoriálne premenné a slúži na meranie veľkosti účinku pre test nezávislosti chí-kvadrát.

Cramerovo V nadobúda hodnotu z intervalu <0, 1>. Čím je jeho hodnota vyššia, tým je asociácia silnejšia. Cramérovo V môže byť silne vychýleným odhadom (Bergsma, 2013) a má tendenciu preceňovať silu asociácie. Korekciu dosiahneme pomocou nastavenia bias.correct = TRUE.

Ukážeme si aj výpočet intervalov spoľahlivosti pre Cramerovo V pomocou bootstrapingu. Z veľkosti intervalov spoľahlivosti vieme posúdiť presnosť bodového odhadu. Vieme tiež posúdiť, zhodu naších výsledkov s inými štúdiami (pripomeňme si, že ak majú dva intervaly spoľahlivosti,pre rovnakú hladinu významnosti,neprázdny prienik, potom sa hodnoty Cramerovho V štatisticky signifikantne nelíšia).

Pre úplnosť, keďže používame kategoriálne premenné, môžeme posúdiť silu asociácie, ale nie smer. Okrem toho existuje celý rad ďalších mier závislosti pre kontingenčné tabuľky.

library(rcompanion) # Načítanie knižnice rcompanion
## Warning: package 'rcompanion' was built under R version 4.1.3
X2 =cramerV(TabulkaIV)  # Výpočet hodnoty Cramerovho V
X2 # Výpis pre Chí kvadrát test
## Cramer V 
##   0.2957
cramerV(
  TabulkaIV,
  y = NULL,
  ci = TRUE,   #  Interval spolahlivosti pre V ziskané pomocou bootstrapingu
  conf = 0.95,  #  1-alfa 
  type = "perc",  #  
  R = 1000,       #  počet replikácií, ktoré sa majú použiť pre bootstraping
  histogram = TRUE,   #  histogram bootstraped hodnôt
  digits = 4,  #  počet desatinných miest pre zobrazenie výsledkov
  bias.correct = TRUE,  # korekcia, keď je nastravenie TRUE. V prípade, že bias.correct = FALSE, korekcia sa nepočíta.
    )

##   Cramer.V lower.ci upper.ci
## 1   0.2847   0.1767   0.4076



Hodnota Cramerovho V je 0,2957. Korigovaná hodnota je o niečo nižšia 0,2847. 95 percentný interval spoľahlivosti je (0,1691; 0,3943).

0brázok. Hodnotenie veľkosti efektu podľa Cohena

Zdroj:Nominal vs. Nominal. https://peterstatistics.com/CrashCourse/3-TwoVarUnpair/NomNom/NomNom3c.html

Poznámka: df* = min (počet riadkov, počet stĺpcov) -1

Príklad.

Tabuľka ukazuje výsledky prieskumu, v ktorom každý subjekt na vzorke 282 dospelých bol požiadaný, aby uviedol, ktorú z troch zásad preferuje v súvislosti s fajčením na verejných priestranstvách (príklad z knihy Chap (2003, s.26) )

Tabuľka.

TabulkaV= matrix(c(15,40,10,15,10,30,5,44,23), nrow = 3, ncol = 3, byrow = T)   # Načítanie kontingenčnej tabuľky po riadkoch
X2=chisq.test(TabulkaV) # Výpočet Chí kvadrát testu
X2                      # Výpis výsledkov Chí kvadrát testu
## 
##  Pearson's Chi-squared test
## 
## data:  TabulkaV
## X-squared = 37.2, df = 4, p-value = 1.639e-07
X2$expected             # Výpis očakávaných početností
##          [,1]     [,2]     [,3]
## [1,] 11.84896 31.82292 21.32812
## [2,] 10.02604 26.92708 18.04688
## [3,] 13.12500 35.25000 23.62500
cramerV(
  TabulkaV,
  y = NULL,
  ci = TRUE,   #  Interval spolahlivosti pre V ziskané pomocou bootstrapingu
  conf = 0.95,  #  1-alfa 
  type = "perc",  #  
  R = 1000,       #  počet replikácií, ktoré sa majú použiť pre bootstraping
  histogram = FALSE,   #  histogram bootstrapped hodnôt
  digits = 4,  #  počet desatinných miest pre zobrazenie výsledkov
  bias.correct = TRUE,  # korekcia, keď je nastravenie TRUE. V prípade, že bias.correct = FALSE, korekcia sa nepočíta.
    )
##   Cramer.V lower.ci upper.ci
## 1   0.2955   0.2194     0.39
mosaic(TabulkaV, main = "Mozaikový graf", shade = TRUE, legend = TRUE)   # vykreslenie mozaikového grafu

Výsledky (p hodnota pre test Chí kvadrát nezávislosti je 0,0000001639) poukazujú na to, že pozorované údaje by boli vysoko nepravdepodobné, ak by skutočne neexistoval žiadny vzťah medzi vzdelaním a preferovaním druhu politiky fajčenia na verejných priestranstvách a preto by sme mali zamietnuť nulovú hypotézu nezávislosti. Vypočítajme hodnotu df= min(3,3) -1 = 3-1 =2. Z tabuľky pre kvantifikáciu veľkosti efektu v riadku pre df= 2 vyčítame, že 0,2955 (hodnota Cramerovho koeficientu) je z intervalu (0,21; 0,35), t.j.veľkosť efektu je stredne vysoká. Štatisticky významný vzťah medzi našimi premennými je pri skúmaní uvedenej tabuľky veľkosti účinku stredne silný. 95 percentný interval spoľahlivosti pre Cramerovo V je (0,2226; 0;3929).

Záver.

Rozsah výberového súboru je 282. Hodnota testovacej štatistiky je 37,2 (počet stupňov voľnosti je 4). Výsledky výpočtov naznačujú signifikantný vzťah medzi vzdelaním a preferovaním druhu politiky fajčenia na verejných priestranstvách (p hodnota testovacej štatistiky je 0,0000001639). Veľkosť efektu je stredne vysoká (0,2955).

Počet pozorovaných hodnôt (30) pre kombináciu stredoškolského vzdelania a zákazu fajčenia je signifikantne vyšší ako očakávané hodnoty (18,04688). K závislosti prispievajú aj signifikantné záporné rozdiely pre kombináciu základné vzdelanie a zákaz fajčenia (empirická početnosť 10, očakávaná 21,32812); stredoškolského vzdelania a povolené fajčenie na vyhradených miestach (empirická početnosť 100 a očakávaná 26,92708); vysokoškolské vzdelanie a žiadne reštrikcie (empirická početnosť 5, teoretická početnosť 13,12500).

Literatúra

Achim Zeileis, David Meyer, and Kurt Hornik (2007). Residual-based Shadings for Visualizing (Conditional) Independence. Journal of Computational and Graphical Statistics, 16(3), 507-525.

Bergsma, W. (2013). A bias-correction for Cramér’s V and Tschuprow’s T. Journal of the Korean Statistical Society, 42(3), 323-328.)

Chap, T. L. (2003). Introductory biostatistics. Wiley.

Cohen, J. (1988). Statistical Power Analysis for the Behavioral Sciences (2nd ed.). Hillsdale, NJ: Lawrence Erlbaum Associates, Publishers.

David Meyer, Achim Zeileis, and Kurt Hornik (2006). The Strucplot Framework: Visualizing Multi-Way Contingency Tables with vcd. Journal of Statistical Software, 17(3), 1-48. DOI 10.18637/jss.v017.i03

Field, A. P. (2009). Discovering statistics using SPSS: (and sex and drugs and rock “n” roll) (3rd ed.). Los Angeles, CA: Sage

Markechová, D., Stehlíková, B., & Tirpáková, A. (2011). Štatistické metódy a ich aplikácie. UKF: Nitra, Slovakia, 534 s.

Nominal vs. Nominal. https://peterstatistics.com/CrashCourse/3-TwoVarUnpair/NomNom/NomNom3c.html

R Core Team (2021). R: A language and environment for statistical computing. R Foundation for Statistical Computing, Vienna, Austria. URL https://www.R-project.org/.

Salvatore Mangiafico (2022). rcompanion: Functions to Support Extension Education Program Evaluation. R package version 2.4.15. https://CRAN.R-project.org/package=rcompanion

Stehlíková, B., Tirpáková, A., Poměnková, J., & Markechová, D. (2009). Metodologie výzkumu a statistická inference. FOLIA UNIVERSITATIS AGRICULTURAE ET SILVICULRURAE MENDELIANAE BRUNENSIS. Brno: Mendelova zemědělská a lesnická univerzita, 2009.

Ak Vám boli užitočné tieto informácie, citujte:

Stehlíková, B. (2022) Chí kvadrát test nezávislosti pre kontingenčné tabuľky. RPubs. Dostupné na https://rpubs.com/BeaSte