Frekvenciák és kereszttáblák
Ez a szakasz a kategorikus változókból gyakorisági és kontingenciatáblák létrehozását írja le, valamint a függetlenségi teszteket, az asszociációs mértékeket és az eredmények grafikus megjelenítésének módszereit.
Frekvenciatáblázatok készítése
A R számos módszert biztosít gyakorisági és kontingenciatáblázatok készítéséhez. Az alábbiakban három módszert ismertetünk. A következő példákban tegyük fel, hogy A, B és C kategorikus változókat jelentenek.
table
A table( ) függvénnyel gyakorisági táblázatokat, a prop.table( ) függvénnyel aránytáblákat, a margin.table( ) függvénnyel pedig marginális gyakorisági táblázatokat készíthet.
# 2-Way Frequency Table
attach(mydata)
mytable <- table(A,B) # A will be rows, B will be columns
mytable # print table
margin.table(mytable, 1) # A frequencies (summed over B)
margin.table(mytable, 2) # B frequencies (summed over A)
prop.table(mytable) # cell percentages
prop.table(mytable, 1) # row percentages
prop.table(mytable, 2) # column percentages
table( ) függvénnyel többdimenziós táblázatokat is készíthet 3 vagy több kategorikus változó alapján. Ebben az esetben az ftable( ) függvényt használja az eredmények vonzóbb kiírásához.
# 3-Way Frequency Table
mytable <- table(A, B, C)
ftable(mytable)
A táblázat figyelmen kívül hagyja a hiányzó értékeket. Ahhoz, hogy a NA kategóriaként szerepeljen a számlálásokban, vegye fel a táblázat exclude=NULL opcióját, ha a változó egy vektor. Ha a változó egy faktor, akkor egy új faktort kell létrehozni a newfactor <- factor(oldfactor, exclude=NULL) használatával.
xtabs
Az xtabs( ) függvény lehetővé teszi kereszttáblázatok létrehozását képlet stílusú bemenet segítségével.
# 3-Way Frequency Table
mytable <- xtabs(~A+B+c, data=mydata)
ftable(mytable) # print table
summary(mytable) # chi-square test of indepedence
Ha a képlet bal oldalán szerepel egy változó, akkor azt gyakorisági vektornak kell feltételezni (hasznos, ha az adatokat már táblázatba foglaltuk).
Crosstable
A gmodels csomagban található CrossTable( ) függvény a SAS-ban a PROC FREQ vagy az SPSS-ben a CROSSTABS után modellezett kereszttáblázatokat készít. Rengeteg beállítási lehetőséggel rendelkezik.
# 2-Way Cross Tabulation
library(gmodels)
CrossTable(mydata$myrowvar, mydata$mycolvar)
Ezek között lehetőség van százalékos értékek (sor, oszlop, cella) jelentésére, tizedesjegyek megadására, a függetlenség Chi-négyzet, Fisher és McNemar tesztek előállítására, várható és reziduális értékek (pearson, standardizált, korrigált standardizált) jelentésére, hiányzó értékek érvényesnek tekintésére, sor- és oszlopcímekkel való megjegyzésre, valamint SAS vagy SPSS stílusú kimenetként való formázásra!
A részletekért lásd a help(CrossTable) parancsot.
Függetlenségvizsgálatok
Chi-négyzet teszt
Kétoldalú táblázatok esetén a chisq.test(mytable) segítségével tesztelheti a sor- és oszlopváltozó függetlenségét. Alapértelmezés szerint a p-értéket a tesztstatisztika aszimptotikus chi-négyzeteloszlásából számítja ki. Opcionálisan a p-érték Monte Carlo szimultációval is levezethető.
Fisher egzakt teszt
fisher.test(x) a függetlenség egzakt tesztjét biztosítja. x egy kétdimenziós kontingenciatábla mátrix formában.
Mantel-Haenszel teszt
A mantelhaen.test(x) függvény segítségével elvégezhetjük a Cochran-Mantel-Haenszel chi-négyzet tesztet arra a nullhipotézisre, hogy két nominális változó feltételesen független az egyes rétegekben, feltételezve, hogy nincs háromirányú kölcsönhatás. x egy háromdimenziós kontingencia táblázat, ahol az utolsó dimenzió a rétegekre utal.
Loglineáris modellek
A MASS csomag loglm( ) függvényével log-lineáris modelleket állíthat elő. Tegyük fel például, hogy van egy 3-utas kontingenciatáblánk, amely A, B és C változókon alapul.
library(MASS)
mytable <- xtabs(~A+B+C, data=mydata)
A következő teszteket végezhetjük el:
Mutatós függetlenség: A, B és C páronként függetlenek. loglm(~A+B+C, mytable)
Parciális függetlenség: A részben független B-től és C-től (azaz A független a BC összetett változótól). loglin(~A+B+C+B*C, mytable)
Feltételes függetlenség: A független B-től, adott esetben C-től. loglm(~A+B+C+A*C+B*C, mytable)
No Three-Way Interaction loglm(~A+B+C+A*B+A*C+B*C, mytable)
Martin Theus és Stephan Lauer írtak egy kiváló cikket a loglineáris modellek vizualizálásáról mozaikos ábrák segítségével.
Measures of Association
A vcd csomag assocstats(mytable) függvénye kiszámítja a phi együtthatót, a kontingencia együtthatót és a Cramer’s V-t egy rxc táblázathoz. A vcd csomag kappa(mytable) függvénye kiszámítja a Cohen kappát és a súlyozott kappát egy konfúziós mátrixra. E statisztikák kiváló áttekintését lásd Richard Darlington: Measures of Association in Crosstab Tables című cikkében.
Eredmények vizualizálása
A gyakoriságok egy dimenzióban való megjelenítéséhez használjon oszlop- és kördiagramokat.
A vcd csomagot használja a kategorikus adatok közötti kapcsolatok vizualizálására (pl. mozaik- és asszociációs ábrák).
A ca csomagot használja a korreszpondenciaelemzéshez (kontingenciatáblák sorai és oszlopai közötti kapcsolatok vizuális feltárása).
Az ilyen ábrák készítésének gyakorlásához próbálja ki a DataCamp adatvizualizációs tanfolyamát.
A gyakorisági táblázatok átalakítása “eredeti” sík fájlba
Végül előfordulhat, hogy a gyakorisági táblázat helyett az eredeti “sík fájl” adatkeretre lesz szüksége. Marc Schwartz az Rhelp levelezési listán kódot adott a táblázat visszaalakításához adatkeretbe.
Leave a Reply