Frekvence a křížové tabulky

Tato část popisuje vytváření tabulek četností a kontingenčních tabulek z kategoriálních proměnných spolu s testy nezávislosti, mírami asociace a metodami grafického zobrazení výsledků.

Generování tabulek četností

R poskytuje mnoho metod pro vytváření tabulek četností a kontingenčních tabulek. Tři z nich jsou popsány níže. V následujících příkladech předpokládejte, že A, B a C představují kategoriální proměnné.

tabulka

Frekvenční tabulky můžete vytvářet pomocí funkce table( ), tabulky proporcí pomocí funkce prop.table( ) a marginální četnosti pomocí funkce margin.table( ).

# 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( ) může také generovat vícerozměrné tabulky založené na 3 nebo více kategoriálních proměnných. V takovém případě použijte funkci ftable( ) pro atraktivnější výpis výsledků.

# 3-Way Frequency Table
mytable <- table(A, B, C)
ftable(mytable)

Table ignoruje chybějící hodnoty. Chcete-li zahrnout NA jako kategorii do počtů, zahrňte do tabulky volbu exclude=NULL, pokud je proměnná vektorem. Pokud je proměnná faktorem, musíte vytvořit nový faktor pomocí newfactor <- factor(oldfactor, exclude=NULL).

xtabs

Funkce xtabs( ) umožňuje vytvářet křížové tabulky pomocí zadání ve stylu vzorců.

# 3-Way Frequency Table
mytable <- xtabs(~A+B+c, data=mydata)
ftable(mytable) # print table
summary(mytable) # chi-square test of indepedence

Pokud je proměnná obsažena na levé straně vzorce, předpokládá se, že se jedná o vektor četností (užitečné, pokud již byla data tabelována).

Křížová tabulka

Funkce CrossTable( ) v balíčku gmodels vytváří křížové tabulky po vzoru PROC FREQ v SAS nebo CROSSTABS v SPSS. Má bohaté možnosti.

# 2-Way Cross Tabulation
library(gmodels)
CrossTable(mydata$myrowvar, mydata$mycolvar)

Jsou zde možnosti vykazovat procenta (řádek, sloupec, buňka), zadávat desetinná místa, vytvářet chí-kvadrát, Fisherův a McNemarův test nezávislosti, vykazovat očekávané a reziduální hodnoty (pearsonovy, standardizované, upravené standardizované), zahrnout chybějící hodnoty jako platné, anotovat nadpisy řádků a sloupců a formátovat jako výstup ve stylu SAS nebo SPSS!
Podrobnosti viz help(CrossTable).

Testy nezávislosti

Chi-Square test

Pro dvoucestné tabulky můžete použít chisq.test(mytable) pro testování nezávislosti řádkové a sloupcové proměnné. Ve výchozím nastavení se p-hodnota vypočítá z asymptotického chí-kvadrát rozdělení testovací statistiky. Volitelně lze p-hodnotu odvodit pomocí simultánního výpočtu Monte Carlo.

Fisherův exaktní test

fisher.test(x) poskytuje exaktní test nezávislosti. x je dvourozměrná kontingenční tabulka ve formě matice.

Mantelův-Haenszelův test

Pomocí funkce mantelhaen.test(x) provedete Cochranův-Mantelův-Haenszelův chí-kvadrát test nulové hypotézy, že dvě nominální proměnné jsou v každé vrstvě podmíněně nezávislé, za předpokladu, že neexistuje trojstranná interakce. x je třírozměrná kontingenční tabulka, kde poslední rozměr se týká vrstev.

Loglineární modely

K vytvoření log-lineárních modelů můžete použít funkci loglm( ) v balíčku MASS. Předpokládejme například, že máme třícestnou kontingenční tabulku založenou na proměnných A, B a C.

library(MASS)
mytable <- xtabs(~A+B+C, data=mydata)

Můžeme provést následující testy:

Mutální nezávislost: A, B a C jsou párově nezávislé. loglm(~A+B+C, mytable)

Částečná nezávislost: A je částečně nezávislá na B a C (tj. A je nezávislá na složené proměnné BC). loglin(~A+B+C+B*C, mytable)

Podmíněná nezávislost: A je nezávislá na B za předpokladu, že je dána C. loglm(~A+B+C+A*C+B*C, mytable)

Není trojstranná interakce loglm(~A+B+C+A*B+A*C+B*C, mytable)

Martin Theus a Stephan Lauer napsali vynikající článek o vizualizaci loglineárních modelů pomocí mozaikových grafů.

Míry asociace

Funkce assocstats(mytable) v balíčku vcd vypočítá koeficient phi, kontingenční koeficient a Cramerovo V pro tabulku rxc. Funkce kappa(mytable) v balíčku vcd vypočítá Cohenovo kappa a vážené kappa pro matici záměny. Vynikající přehled těchto statistik naleznete v článku Richarda Darlingtona Measures of Association in Crosstab Tables.

Vizualizace výsledků

Použití sloupcových a koláčových grafů pro vizualizaci četností v jedné dimenzi.

Použijte balíček vcd pro vizualizaci vztahů mezi kategoriálními daty (např. mozaikové a asociační grafy).

Použijte balíček ca pro korespondenční analýzu (vizuální zkoumání vztahů mezi řádky a sloupci v kontingenčních tabulkách).

Chcete-li si procvičit tvorbu těchto grafů, vyzkoušejte kurz vizualizace dat na DataCampu.

Konverze frekvenčních tabulek do „původního“ plochého souboru

Nakonec se může stát, že budete potřebovat spíše původní datový rámec „plochého souboru“ než frekvenční tabulku. Marc Schwartz poskytl v poštovní konferenci Rhelp kód pro převod tabulky zpět na datový rámec

.

Leave a Reply