Häufigkeiten und Kreuztabellen
Dieser Abschnitt beschreibt die Erstellung von Häufigkeits- und Kontingenztabellen aus kategorialen Variablen, sowie Unabhängigkeitstests, Assoziationsmaße und Methoden zur grafischen Darstellung von Ergebnissen.
Erstellen von Häufigkeitstabellen
R bietet viele Methoden zur Erstellung von Häufigkeits- und Kontingenztabellen. Drei davon werden im Folgenden beschrieben. In den folgenden Beispielen wird angenommen, dass A, B und C kategorische Variablen darstellen.
Tabelle
Mit der Funktion table( ) können Sie Häufigkeitstabellen, mit der Funktion prop.table( ) Proportionstabellen und mit margin.table( ) Randhäufigkeiten erzeugen.
# 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( ) kann auch multidimensionale Tabellen auf der Basis von 3 oder mehr kategorialen Variablen erzeugen. Verwenden Sie in diesem Fall die Funktion ftable( ), um die Ergebnisse ansprechender auszugeben.
# 3-Way Frequency Table
mytable <- table(A, B, C)
ftable(mytable)
Tabelle ignoriert fehlende Werte. Um NA als Kategorie in die Zählungen aufzunehmen, fügen Sie die Tabellenoption exclude=NULL ein, wenn die Variable ein Vektor ist. Wenn die Variable ein Faktor ist, müssen Sie einen neuen Faktor mit newfactor <- factor(oldfactor, exclude=NULL) erstellen.
xtabs
Die Funktion xtabs( ) ermöglicht die Erstellung von Kreuztabellen unter Verwendung von formelartigen Eingaben.
# 3-Way Frequency Table
mytable <- xtabs(~A+B+c, data=mydata)
ftable(mytable) # print table
summary(mytable) # chi-square test of indepedence
Wenn eine Variable auf der linken Seite der Formel enthalten ist, wird angenommen, dass es sich um einen Vektor von Häufigkeiten handelt (nützlich, wenn die Daten bereits tabelliert wurden).
Crosstable
Die Funktion CrossTable( ) im Paket gmodels erstellt Kreuztabellen nach dem Vorbild von PROC FREQ in SAS oder CROSSTABS in SPSS. Sie verfügt über eine Fülle von Optionen.
# 2-Way Cross Tabulation
library(gmodels)
CrossTable(mydata$myrowvar, mydata$mycolvar)
Es gibt Optionen, um Prozentsätze (Zeile, Spalte, Zelle) auszugeben, Dezimalstellen anzugeben, Chi-Quadrat-, Fisher- und McNemar-Unabhängigkeitstests zu erstellen, erwartete und Restwerte (Pearson, standardisiert, angepasst standardisiert) auszugeben, fehlende Werte als gültig einzuschließen, mit Zeilen- und Spaltentiteln zu versehen und die Ausgabe im Stil von SAS oder SPSS zu formatieren!
Siehe help(CrossTable) für Details.
Unabhängigkeitstests
Chi-Square-Test
Für 2-Wege-Tabellen können Sie chisq.test(mytable) verwenden, um die Unabhängigkeit der Zeilen- und Spaltenvariablen zu testen. Standardmäßig wird der p-Wert anhand der asymptotischen Chi-Quadrat-Verteilung der Teststatistik berechnet. Optional kann der p-Wert durch Monte-Carlo-Simultation abgeleitet werden.
Fisher Exact Test
fisher.test(x) liefert einen exakten Test auf Unabhängigkeit. x ist eine zweidimensionale Kontingenztabelle in Matrixform.
Mantel-Haenszel-Test
Mit der Funktion mantelhaen.test(x) kann ein Cochran-Mantel-Haenszel-Chi-Quadrat-Test der Nullhypothese durchgeführt werden, dass zwei nominale Variablen in jeder Schicht bedingt unabhängig sind, wobei davon ausgegangen wird, dass keine dreifache Wechselwirkung besteht. x ist eine dreidimensionale Kontingenztabelle, wobei die letzte Dimension die Schichten bezeichnet.
Loglineare Modelle
Mit der Funktion loglm( ) im MASS-Paket können Sie loglineare Modelle erstellen. Nehmen wir zum Beispiel an, wir haben eine 3-fache Kontingenztabelle mit den Variablen A, B und C.
library(MASS)
mytable <- xtabs(~A+B+C, data=mydata)
Wir können die folgenden Tests durchführen:
Gegenseitige Unabhängigkeit: A, B, und C sind paarweise unabhängig. loglm(~A+B+C, mytable)
Teilweise Unabhängigkeit: A ist teilweise unabhängig von B und C (d. h., A ist unabhängig von der zusammengesetzten Variable BC). loglin(~A+B+C+B*C, mytable)
Bedingte Unabhängigkeit: A ist unabhängig von B, wenn C gegeben ist. loglm(~A+B+C+A*C+B*C, mytable)
Keine Drei-Wege-Interaktion loglm(~A+B+C+A*B+A*C+B*C, mytable)
Martin Theus und Stephan Lauer haben einen ausgezeichneten Artikel über die Visualisierung loglinearer Modelle unter Verwendung von Mosaikdiagrammen verfasst.
Assoziationsmaße
Die Funktion assocstats(mytable) im Paket vcd berechnet den phi-Koeffizienten, den Kontingenzkoeffizienten und Cramer’s V für eine rxc-Tabelle. Die Funktion kappa(mytable) im vcd-Paket berechnet Cohens Kappa und gewichtetes Kappa für eine Konfusionsmatrix. Siehe Richard Darlingtons Artikel über Assoziationsmaße in Kreuztabellen für eine ausgezeichnete Übersicht über diese Statistiken.
Visualisierung von Ergebnissen
Verwenden Sie Balken- und Kreisdiagramme zur Visualisierung von Häufigkeiten in einer Dimension.
Verwenden Sie das vcd-Paket zur Visualisierung von Beziehungen zwischen kategorialen Daten (z. B. Mosaik- und Assoziationsdiagramme).
Verwenden Sie das ca-Paket für die Korrespondenzanalyse (visuelle Untersuchung von Beziehungen zwischen Zeilen und Spalten in Kontingenztabellen).
Um die Erstellung dieser Diagramme zu üben, probieren Sie den Datenvisualisierungskurs auf DataCamp.
Konvertieren von Häufigkeitstabellen in eine „originale“ flache Datei
Schließlich kann es vorkommen, dass Sie statt der Häufigkeitstabelle den ursprünglichen „flachen“ Datenrahmen benötigen. Marc Schwartz hat auf der Rhelp-Mailingliste einen Code zur Verfügung gestellt, mit dem man eine Tabelle zurück in einen Datenrahmen konvertieren kann.
Leave a Reply