6 Datenbeschreibung: Mehrere Variablen in:

Andreas Behr, Ulrich Pötter

Einführung in die Statistik mit R, page 83 - 98

2. Edition 2010, ISBN print: 978-3-8006-3599-3, ISBN online: 978-3-8006-4878-8, https://doi.org/10.15358/9783800648788_83

Series: Vahlens Kurzlehrbücher

Bibliographic information
D : M V Häufig interessiert in erster Linie der Zusammenhang zwischen mehreren Variablen. Ansätze der Darstellung des Zusammenhangs zwischen statistischen Variablen beginnen ebenfalls mit dem Konzept der Verteilungsfunktion. Analog werden Dichten und entsprechende Maßzahlen benutzt. Allerdings erhält man so nur für zwei oder drei Variable einen Überblick. Für die Beschreibung des Zusammenhangs zwischen mehr Variablen wird das zentrale Konzept bedingter Verteilungen benutzt. Wir stellen die wichtigsten beschreibenden Verfahren und deren Umsetzung in R vor. 6.1 Mehrdimensionale relativeHäufigkeiten 6.2 Tabellen 6.2.1 table und ftable 6.2.2 margin.table und xtabs 6.2.3 addmargins 6.2.4 Graphische Darstellungen 6.3 Dichteschätzer 6.4 Kovarianzen und Korrelationen 6.5 Bedingte Verteilungen 6.5.1 Bedingte Verteilungen und Simpsons Paradox 6.5.2 Bedingte Dichten 6.6 Übungsaufgaben . Mehrdimensionale relative Häufigkeiten Bisher haben wir uns nur mit einer einzelnen Variablen beschäftigt. I.d.R. interessieren aber gerade Zusammenhänge zwischen mehreren Variablen und dafür stellen wir nun einige erste Methoden zusammen. Datenbeschreibung: Mehrere Variablen Wenn die Variablen nur relativ wenige Ausprägungen haben, dann kann eine erste Darstellung der Verteilungen durch dieHäufigkeiten oder relativen Häufigkeiten erfolgen. Sind z.B. (X, Y , Z) Variable, d.h. Abbildungen (X, Y , Z) : dann ist für jede Merkmalskombination (x, y, z) ihre relative Häufigkeit durch P(X = x, Y = y, Z = z) := n u (X, Y , Z)(u) = (x, y, z) gegeben. Kennt man die relativen Häufigkeiten, dann kennt man die „Ordnungsstatistik“, denn die relativenHäufigkeiten ändern sich nicht, wenn man die Elemente der Urliste umordnet. Allerdings kann diese „Ordnungsstatistik“ nicht mehr einfach mit den der Größe nach geordneten Werten der Urliste identifiziert werden. Denn selbst wenn alle betrachteten Variablen geordnet sind, gibt es keine eindeutige Ordnung des Merkmalsraums . Aber nicht nur der Verlust einer eindeutigen Ordnung macht das Arbeiten mit mehrdimensionalen Verteilungen schwierig.Hinzu kommt, dass die Anzahl der Elemente gemeinsamer Merkmalsräume sehr schnell wächst. Ein erster Ansatz der Beschreibung der gemeinsamen Verteilung mehrerer Variablen beschränkt sich daher auf den Fall von wenigen Variablenmit möglichst kleinen Merkmalsräumen. . Tabellen Hat man es mit nur wenigen Variablen zu tun, und ist die Anzahl ihrer Ausprägungen recht klein, dann ist dieDarstellung der relativenHäufigkeiten oft schon ausreichend. Und selbst wenn die Darstellung der relativen Häufigkeiten unübersichtlich wird, dann bleiben die relativen Häufigkeiten die Grundlage vieler komplexerer Verfahren. Wir beginnen daher mit einer Untersuchung der Möglichkeiten, die R zum Umgang mit relativen Häufigkeiten mehrerer Variablen bietet. Dazu verschaffen wir uns zunächst drei Variablen: > X < rep(1:4,times=3) > Y < rep(c(0,1),6) > Z < rep(c( 1,2,3),3:5) . . table und ftable Die absoluten Häufigkeiten erhält man wie im eindimensionalen Fall mit dem table() Befehl. So ergeben sich die gemeinsamen absoluten Häufigkeiten für die Variablen X,Z > table(X,Z) Z X 1 2 3 . Tabellen 1 1 1 1 2 1 1 1 3 1 1 1 4 0 1 2 Die gemeinsamenHäufigkeiten aller Variablen erhält man durch > tab < table(X,Y,Z) Mit den Ergebnissen des table() Befehls kann man nun weiter rechnen. Insbesondere ist tab ein Feld der Dimension und gehört zur Klasse table > class(tab) [1] "table" > is.array(tab) [1] TRUE > dim(tab) [1] 4 2 3 Die (gekürzte) Druckdarstellung der Tabelle ist > tab , , Z= 1 Y X 0 1 1 1 0 2 0 1 .... , , Z=2 Y X 0 1 1 1 0 2 0 1 .... Man erhält also drei zweidimensionaleHäufigkeitsverteilungen, jeweils eine für die drei Werte 1, 2, 3 der Variablen Z. Mit vier Variablen erhielte man zweidimensionale Verteilungen für alle Werte der beiden letzten Variablen etc. Eine etwas andere zweidimensionale Darstellungsform dieser Tabelle liefert der Befehl ftable() (flat contingency table): > ftab < ftable(tab) > ftab Z 1 2 3 X Y 1 0 1 1 1 Alle hier behandelten Tabellenbefehle dienen nicht dazu, druckreife Datenzusammenfassungen zu produzieren. Sie sind vielmehr Hilfsmittel zur Berechnung und sind so gestaltet, dass sie als Ausgangspunkt für weitere Berechnungen dienen können. Druckreife Tabellen können mit den Befehlen der Pakete xtable bzw. R2HTML erzeugt werden. Datenbeschreibung: Mehrere Variablen 1 0 0 0 2 0 0 0 0 1 1 1 1 .... Hier werden in jeder Zeile für Merkmalskombinationen der ersten beiden Variablen X,Y die Häufigkeiten der Ausprägungen der Variablen Z angegeben. Das Ergebnis von ftable() ist immer eineMatrix und kann auch wie eineMatrix bearbeitet werden. Aus einer „flachen“ Tabelle erhält man eine Tabelle (ein mehrdimensionales Feld) durch as.table(ftab) zurück. Natürlich kann man auch auswählen, welche der Variablen die Zeilen einer „flachen“ Tabelle bilden sollen: > ftable(tab,row.vars=c("Z","Y")) X 1 2 3 4 Z Y 1 0 1 0 1 0 1 0 1 0 0 2 0 1 0 1 0 1 0 1 0 1 .... Insbesondere kann man alle Variablen zur Zeilenbildung verwenden. Dann entsteht eineMatrix mit = Zeilen und einer Spalte mit denHäufigkeiten. Das kann auch durch as.data.frame(tab) bzw. as.data.frame(ftab) erreicht werden. Ist nämlich das Argument von as.data.frame() entweder ein Objekt der Klasse table oder der Klasse ftable, dann wird ein data.frame erzeugt, der zusätzlich zu den Spalten mit den Wertekombinationen der Variablen noch eine Spalte mit derenHäufigkeiten enthält. > as.data.frame(ftab) X Y Z Freq 1 1 0 1 1 2 2 0 1 0 ..... . . margin.table und xtabs Gemeinsame absoluteHäufigkeiten in Form einer Tabelle (genauer: einem Objekt der Klasse table) lassen sich durch eine Reihe von weiteren Befehlen bearbeiten. Etwas interessanter als unser bisheriges Beispiel ist es natürlich, die Möglichkeiten mit einem realen Datensatz zu illustrieren. Wir verwenden die berühmten Zulassungsdaten der Graduate School der University of California in Berkeley von . Sie werden (zusammen mit anderen Datensätzen) im Paket datasets von R bereitgestellt, das zu jeder R Installation gehört. Sie können mit dem Befehl data(UCBAdmissions) geladen werden und sind dann unter diesem Namen ansprechbar: . Tabellen > data(UCBAdmissions) > class(UCBAdmissions) [1] "table" Es handelt sich um eine dreidimensionale Tabelle mit den Variablen Zulassung (Admit mit den Ausprägungen Admitted und Rejected), Geschlecht (Gender mit den Ausprägungen Male und Female) und Fakultät (Dept mit den Ausprägungen A F, die sechs größten Fakultäten). Um die Randhäufigkeiten der drei Variablen zu berechnen, könnten wir den apply() Befehl benutzen. Etwas übersichtlicher ist aber der Befehl margin.table(), Um nur die gemeinsamen Häufigkeiten von Admit und Gender zu berechnen, kann man schreiben: > margin.table(UCBAdmissions,c(1,2)) Gender Admit Male Female Admitted 1198 557 Rejected 1493 1278 Die gemeinsamenHäufigkeiten von Gender und Dept sind > margin.table(UCBAdmissions,c(2,3)) Dept Gender A B C D E F Male 825 560 325 417 191 373 Female 108 25 593 375 393 341 Dies sind zwei der insgesamt drei möglichen zweidimensionalenmarginalen Verteilungen der dreidimensionalen Verteilung der Zulassungsdaten. Eine weitere Möglichkeit, marginale Verteilungen zu berechnen, stellt der xtabs() Befehl bereit. Die Ausgangsdaten sind dabei in Form eines Dataframes gegeben, entweder eines Dataframes, der mit as.data.frame aus einer Tabelle gebildet wurde, oder einer Urliste von Daten, deren Variable als Faktoren interpretiert werden. Die Beschreibung der gewünschten Randverteilungen erfolgt symbolisch mit einer Formel, die die ausgewählten Variablen beschreibt: > Utab < as.data.frame(UCBAdmissions) > xtabs(Freq ~ Gender + Admit, Utab) Admit Gender Admitted Rejected Male 1198 1493 Female 557 1278 Die symbolische Form der Darstellung der gewünschten Randverteilung enthält auf der linken Seite des ~ Zeichens die Häufigkeiten (wenn man eine Urliste als data.frame benutzt, kann die linke Seite leer gelassen werden). Auf der rechten Seite stehen die durch + getrennten interessierenden Variablen. Datenbeschreibung: Mehrere Variablen . . addmargins Wie kann man nun Randsummen (die eindimensionalen marginalen Verteilungen) bilden? Man könnte natürlich z.B. margin.table(UCBAdmissions,2) benutzen, um die Zahl der Männer und Frauen zu berechnen. Aber wie kann man das auch in die Tabelle integrieren?Hier hilft der Befehl addmargins(). Ohne weitere Optionen erhält man > addmargins(margin.table(UCBAdmissions,c(2,3))) Dept Gender A B C D E F Sum Male 825 560 325 417 191 373 2691 Female 108 25 593 375 393 341 1835 Sum 933 585 918 792 584 714 4526 Die Voreinstellung ist also, die Randsummen von allen Dimensionen zu erzeugen und sie als neue Zeilen bzw. Spalten an die Tabelle anzufügen. Man kann aber auch angeben, für welche Dimension Randsummen gebildet werden. Und man kann anstelle der Randsummen auch eine beliebige Funktion (oder auch mehrere Funktionen) angeben: > addmargins(margin.table(UCBAdmissions,c(2,3)), + FUN=list(sum,list(mean,median))) Margins computed over dimensions in the following order: 1: Gender 2: Dept Dept Gender A B C D E F mean median Male 825 560 325 417 191 373 448.5000 395 Female 108 25 593 375 393 341 305.8333 358 sum 933 585 918 792 584 714 754.3333 753 (die Funktionen werden als eine Liste angegeben, wobei die Elemente der Liste wieder Listen sein können) und > addmargins(margin.table(UCBAdmissions,c(2,3)), margin=1) Dept Gender A B C D E F Male 825 560 325 417 191 373 Female 108 25 593 375 393 341 Sum 933 585 918 792 584 714 . . Graphische Darstellungen Gemeinsame Häufigkeiten lassen sich recht einfach graphisch darstellen, solange sowohl die Anzahl der Ausprägungen und die Anzahl der Variablen recht klein sind. Eine Möglichkeit bieten Mosaikplots, in denen die Häufigkeiten von . Dichteschätzer Ausprägungen durch die Größe entsprechender Rechtecke angedeutet werden. Im Fall der Zulassungsdaten liefertmosaicplot(UCBAdmissions,color=T) das nebenstehende Bild. Abbildung 6.1: Mosaikplot. Der große Block in der oberen linken Ecke deutet die Anzahl der zugelassenen männlichen Studenten an, die dann noch einmal nach den Fakultäten unterteilt sind. Der kleinere Block rechts davon deutet an, dass die Anzahl der zugelassenen Frauen deutlich kleiner ist (der Block ist deutlich enger). Außerdem ist die Zahl der abgewiesenen Studenten (dieHöhe der unteren Blöcke) größer als die Zahl der zugelassenen. Zudem ist klar, dass der Anteil abgewiesener Studentinnen größer ist als der entsprechende Anteil der Männer (die relative Breite der Blöcke „zugelassen“ gegenüber „abgelehnt“ für die Geschlechter). . Dichteschätzer Haben alle Variablen relativ viele Ausprägungen und sind geordnet, dann werden die bisherigen graphischen Darstellungen schnell unübersichtlich und damit unbrauchbar. Man kann aber versuchen, die Idee von Dichteschätzern zu verallgemeinern. Die Wahl von Kernen und die Wahl von Bandbreiten ist aber in zwei- oder mehr Dimensionen deutlich schwieriger als im eindimensionalen Fall. Denn nun kann die Bandbreite nicht mehr allein durch einen Parameter angegeben werden, denn man kann einen gegebenen Kern in verschiedene Richtungen stauchen bzw. strecken. Und der Symmetriebegriff, mit dem die Wahl der Kerne im eindimensionalen Fall beschränkt wurde, kann auf viele verschiedene Weisen erweitert werden. In der Praxis allerdings werden fast ausschließlich Kerne mit elliptischen Konturlinien verwandt. Dann kann die Bandbreite durch die Streckung bzw. Stauchung in die beiden Richtungen der Hauptachsen der Ellipsen (im zweidimensionalen Fall) zusammen mit der Richtung der Hauptachse beschrieben werden. Legt man die Richtung ebenfalls fest, etwa indem man die Achsen par- Nicht ganz, denn wir haben für eine bessere Kontrolle der Beschriftung den Befehl mosaic() des Pakets vcd (Visualizing Categorical Data) verwandt. Das Paket stellt auch noch viele weitere interessante graphische Darstellungen für Tabellen zur Verfügung. Der einfachere mosaicplot()-Befehl ordnet die Variablen aber in anderer Reihenfolge als der mosaic()-Befehl. Datenbeschreibung: Mehrere Variablen allel zu den Achsen der Variablen wählt, dann reichen im zweidimensionalen Fall zwei Parameter (vgl. Abbildung . ). Abbildung 6.2: Elliptische Kerne. Als Beispiel soll die gemeinsame Verteilung von Wohnungsgröße und Miete im Mikrozensus dienen. Dazu wählen wir zunächst jeweils die erste Person einesHaushalts aus den Daten aus: > hh < dat$ef3∗100+dat$ef4 > oo < !duplicated(hh) ef3 ist die Nummer des Mikrozensusauswahlbezirkes, ef4 die laufende Haushaltsnummer im Auswahlbezirk. Der logische Vektor oo enthält nun einen Index für die erste Angabe jedes Haushalts. Nun wählen wir die vollständigen Angaben zur Miethöhe (ef462) und zur Wohnungsgröße (ef453) aus: > Wohn < cbind(dat[oo,"ef462"],dat[oo,"ef453"]) > o < complete.cases(Wohn) > Wohn < Wohn[o,] Zuletzt wird noch der Wertebereich eingeschränkt, weil bei höheren Angaben die Werte erheblich gerundet wurden: > Wohn < subset(Wohn,Wohn[,1]>0&Wohn[,1]<=1800& + Wohn[,2]>=10&Wohn[,2]<300) Es bleiben Angaben übrig. Das sind aber immer noch zu viele, um die aufwendigen Berechnungen auf üblichen PCs bewältigen zu können. Wir benutzen daher nur eine Zufallsauswahl von Fällen: > Wohn2 < Wohn[sample(nrow(Wohn),1000),] Nun können wir einen Kerndichteschätzer berechnen. Wir benutzen das Paket ks und berechnen zunächst die optimale Bandbreite, ohne die Richtung des Gauss-Kerns vorzugeben. > library(ks) > band < Hpi(Wohn2,Hstart=diag(c(1100,30))) Das ist der rechenintensivste Schritt. Der Dichteschätzer selbst wird nun mit > bild1 < kde(Wohn2,H=band,gridsize=c(20,20)) berechnet. Das erste Argument gibt die zweidimensionalen Daten an, das Argument H die Bandbreite, und gridsize gibt an, an wie vielen Punkten die Werte des Dichteschätzers ausgerechnet werden sollen, hier also auf einem Gitter von x Punkten. Die Behandlung fehlender Werte wird ausführlicher in Abschnitt . . behandelt. Den Befehl sample() besprechen wir im nächsten Kapitel. . Kovarianzen und Korrelationen Das Ergebnis lässt sich auf zwei Weisen darstellen, als Konturplot, der nur die Höhenlinien der Dichte angibt und als Perspektivplot. Beide Varianten sind in Abbildung . wiedergegeben. Die beiden Bilder wurden durch die Befehle > plot(bild1,main="",bty="l",cont=c(5,30,50,70,95), + ylab="qm",xlab="Euro", + xlim=c(100,1000),ylim=c(20,150)) bzw. > plot(bild1,display="persp",main="",zlab="",phi=20,theta=210, + ylab="qm",xlab="Euro",r=1.2) erzeugt. Dem Perspektivplot lässt sich nur die allgemeine Form der Dichte (a) (b) Abbildung 6.3: Kerndichteschätzer: Wohnungsgröße und Miete im Mikrozensus . a) Konturplot, b) Perspektivplot. entnehmen. Zudem hängt die Information von der Perspektive ab, von der aus die Dichte dargestellt wird. Nur dem Konturplot lassen sich auch numerische Informationen entnehmen. In Abbildung . geben die Werte an den Höhenlinien den Anteil der Daten innerhalb der entsprechenden Gebiete an. Mit mehr als zwei Variablen lassen sich zwar immer noch Kerndichteschätzer berechnen. Das Paket ks erlaubt die Schätzung von bis zu -dimensionalen Dichten. Sie lassen sich aber nicht mehr graphisch darstellen. . Kovarianzen und Korrelationen Die bisher vorgestellten Verfahren zum Umgang mit mehrdimensionalen Verteilungen ermöglichen zwar eine effiziente numerische Behandlung der Verteilungen, sie erlauben aber keine übersichtliche Zusammenfassung der Abhängigkeiten zwischen den Variablen, zumindest wenn die Anzahl der Variablen oder die Anzahl ihrer Ausprägungen auch nur mäßig groß wird: Mosaikplots werden bei drei, spätestens bei vier Variablen sehr unübersichtlich. Dichteschätzer erlauben graphische Darstellungen für zwei Variablen, Datenbeschreibung: Mehrere Variablen mit interaktiven Graphiken lassen sich auch noch drei Variablen darstellen, mehr aber ist nicht möglich. Dagegen unterliegen Maßzahlen des Zusammenhangs weder Restriktionen bezüglich der Anzahl der betrachteten Variablen noch bezüglich der Anzahl der Ausprägungen. Das wohl meist verwandte Zusammenhangsmaß ist die Kovarianz. Sie ist für zwei Variablen X und Y durch cov(X, Y) := n u (X(u) M(X))(Y(u) M(Y)) = M X M(X) Y M(Y) definiert (die beiden Variablen müssen sich also auf eine einzige Gesamtheit beziehen, sonst ist die Kovarianz nicht definiert). Man nennt die Kovarianz aus offensichtlichen Gründen ein gemischtes zentriertes Moment. Intuitiv ist cov(X, Y) positiv und groß, wenn X(u) und Y(u) gleichzeitig entweder große oder kleine Werte annehmen. Zum anderen sollte cov(X, Y) nah bei liegen, wenn die Größe von X(u) nicht hilft, etwas über die Größe von Y(u) zu sagen. Und cov(X, Y) sollte negativ sein, wenn im Durchschnitt X(u) groß ist, während Y(u) klein ist und anders herum. Die Kovarianz kann also in der Tat als ein Maß des Zusammenhangs von zwei Variablen behandelt werden. In R wird die Kovarianz durch cov(x,y) berechnet. Dabei wird als Nenner (wie bei der Varianz) nicht n sondern n benutzt. Die Funktion ist recht flexibel, bei verschiedenen Eingaben erhält man alle berechenbaren Kovarianzen zurück. > cov(Wohn[,1],Wohn[,2]) [1] 2693.232 > cov(Wohn) [,1] [,2] [1,] 26941.801 2693.2323 [2,] 2693.232 627.9194 Sind die Argumente zwei Vektoren, erhält man die Kovarianz, ist das Argument eine Matrix (wie im zweiten Befehl oben) oder ein Dataframe, dann erhält man eine Kovarianzmatrix, die die Kovarianzen für alle Kombinationen von Variablen (Matrixspalten) in Matrixform anordnet. In der Diagonalen stehen dann die Varianzen der Variablen. Benutzt man zwei Matrizen oder Dataframes als Argumente, dann erhält man alle Kovarianzen aller Kombinationen von Spalten des ersten und zweiten Arguments. Der Befehl var() verhält sich ganz ähnlich: Ist das Argument ein Vektor oder eine Variable eines Dataframes, dann erhält man die Varianz, ist das Argument ein Dataframe oder eine Matrix, ergibt sich die Kovarianzmatrix. Es gibt aber einen wesentlichen Unterschied zwischen den Befehlen var() und cov(). Er betrifft die Behandlung fehlender Werte: Der Befehl var() hat eine Option na.rm mit der Voreinstellung F. Hat man also fehlende Werte in einem . Bedingte Verteilungen Argument, dann liefert der Aufruf von var() ebenfalls den Wert NA. Mit der Option na.rm=T werden zunächst alle fehlenden Werte entfernt (bei Matrizen oder Dataframes werden alle Zeilen entfernt, die mindestens einen fehlenden Wert enthalten) und dann die Varianz oder die Varianz-Kovarianzmatrix berechnet. Der Befehl cov() benutzt statt der generellen Option na.rm die Option use. Die Voreinstellung ist "everything", in diesem Fall werden alle Beobachtungen benutzt. Enthält eine Variable (oder Spalte einer Matrix) den Wert NA, ist das Ergebnis ebenfalls NA. Wählt man use="complete.obs" werden zunächst alle Zeilen mit fehlenden Werten ausgeschlossen und dann die Kovarianzen berechnet. Die Korrelation ist eine normierte Version der Kovarianz, die nur Werte zwischen - und annimmt. Es ist die Kovarianz geteilt durch das Produkt der Standardabweichungen der zwei Variablen. Für die Korrelation lautet der Befehl cor(x,y). Die Konvention des Aufrufs ebenso wie die Behandlung fehlender Werte entspricht der Funktion cov(). Hatman die Kovarianzen schon berechnet, dann transformiert der Befehl cov2cor() sehr effizient eine Kovarianzmatrix in eine Korrelationsmatrix, ohne erneut auf die Ausgangsdaten zurückzugreifen. Die angekündigte Möglichkeit, mit Abhängigkeiten zwischen mehr als zwei Variablen zu arbeiten, kann in vielen Fällen schon durch die Analyse der entsprechenden Kovarianzmatrix erreicht werden. Reicht das nicht aus, benutzt man heute fast ausschließlich bedingte Versionen der Kovarianz zwischen zwei Variablen, also der Kovarianz bei gegebenen Werten anderer Variablen. Einige Varianten werden im nächsten Abschnitt besprochen. . Bedingte Verteilungen Betrachten wir noch einmal die Zulassungsdaten der University of California at Berkeley. Mit der table() Funktion lassen sich auch die relativen Häufigkeiten berechnen, etwa mit table(UCBAdmissions)/sum(UCBAdmissions). Das ist aber häufig gar nicht das Hauptinteresse. Man möchte vielmehr z.B. wissen, Es gibt noch die Optionen pairwise.complete.obs, die alle nicht-fehlenden Werte getrennt für jedes Element der Kovarianzmatrix benutzt. Diese Version kann nur empfohlen werden, wenn man sich allein für die Kovarianzen interessiert. Benutzt man die Kovarianzmatrix weiter, etwa für Regressionen, Faktorenanalysen etc. dann kann diese Option zu inkonsistenten Ergebnissen oder sogar zu nicht positiv-definiten Kovarianzmatrizen und anderen Problemen führen. Die anderen möglichen Optionen ermöglichen noch eine Unterscheidung zwischen den Ergebniswerten NA oder einer Fehlermeldung. Bleiben etwa bei zeilenweisem Ausschluss fehlender Werte mit der Option complete.obs keine Fälle übrig, wird ein Fehler signalisiert. Benutzt man dagegen na.or.complete, dann wird in diesem Fall NA zurückgegeben. Diese Optionen sind hauptsächlich für die Verwendung in Programmen hilfreich, die nicht einfach wegen unzureichender Daten abbrechen sollten. Die gemischten Momente mehrerer Variablen kann man in R zwar leicht berechnen, aber es mangelt sowohl an entsprechender statistischerTheorie wie an Programmiermöglichkeiten in R (wie in jedem anderen Statistikpaket), um mit diesen Maßzahlen zu arbeiten. Einige Pakete wie tensorA erleichtern zumindest den Umgang mit Feldern höherer Dimension. Datenbeschreibung: Mehrere Variablen wie viel Prozent aller Frauen zugelassen wurden. Und man möchte das mit der Prozentzahl der zugelassenen Männer vergleichen. Man muss also die relativeHäufigkeit der Zulassungen getrennt für die Geschlechter berechnen. Das ist die Grundidee der bedingten Verteilungen. Wenn wir die Variablen der Zulassungsdaten mit A (für Admit), G (für Gender) und D (für Dept) abkürzen, dann schreibt man: P(A = Admitted G = Male) := P(A = Admitted,G = Male) P(G = Male) für den Anteil der Zugelassenen unter den Männern. . . Bedingte Verteilungen und Simpsons Paradox Der Befehl prop.table() berechnet bedingte relative Häufigkeiten, wobei das erste Argument eine Tabelle sein muss und das zweite Argument angibt, auf welche Variablen zu bedingen ist. > prop.table(margin.table(UCBAdmissions,1:2),2) Gender Admit Male Female Admitted 0.4451877 0.3035422 Rejected 0.5548123 0.6964578 Also: % der Männer wurden zugelassen, aber nur % der Frauen. Diskriminierung? Die Universität ist in der Tat verklagt worden. Nun sind sowohl die Zulassungsanteile wie die Geschlechterverhältnisse zwischen den Fakultäten sehr verschieden. Betrachten wir Fakultät A: prop.table(UCBAdmissions[,,"A"],2) Gender Admit Male Female Admitted 0.6206061 0.8240741 Rejected 0.3793939 0.1759259 Hier wurden % der Männer zugelassen, aber gut % der Frauen, also genau andersherum wie beim Gesamtdurchschnitt. Allerdings war auch der Anteil an Frauen, die sich an dieser Fakultät beworben haben, sehr klein: > prop.table(margin.table(UCBAdmissions[,,"A"],2)) Gender Male Female 0.8842444 0.1157556 Wie sieht es bei den anderen Fakultäten aus? Wir betrachten nur den Anteil der Zugelassenen getrennt nach Geschlecht und Fakultät: > prop.table(UCBAdmissions,2:3)[1,,] Dept Gender A B C D E F Male 0.6206 0.6304 0.3692 0.3309 0.2775 0.05898 Female 0.8240 0.6800 0.3406 0.3493 0.2392 0.07038 . Bedingte Verteilungen Also: Bis auf die Fakultäten C und E ist in allen Fakultäten der Zulassungsanteil der Frauen größer als der der Männer. Wir haben also: P(A = A G = F) < P(A = A G = M) aber P(A = A G = F,D = A) > P(A = A G = M,D = A) P(A = A G = F,D = B) > P(A = A G = M,D = B) etc. Diese Umkehrung von relativen Anteilen im Vergleich von zwei Gruppen nennt man oft Simpsons Paradox. In der Tat kann man sich Beispiele ausdenken, in denen die Anteile für eine Gruppe (hier etwa die Frauen) insgesamt kleiner als für eine andere Gruppe sind, aber für alle Untergruppen (Fakultäten) gleichzeitig die entsprechenden Anteile größer sind. Es bleibt natürlich die Frage, welche der Aufteilungen man nun zur Beantwortung der Frage der Diskriminierung heranziehen soll: Die allgemeine Zulassungsrate oder die der Fakultäten? Zwar mag die Tatsache, dass die Frauen sich hauptsächlich für große Fakultäten mit relativ geringen Zulassungsquoten beworben haben, nicht dem Auswahlverfahren der Universität (oder den Fakultäten) zugerechnet werden. Das spräche für eine Unterteilung nach Fakultäten und gegen eine Diskriminierung durch das Auswahlverfahren. Auf der anderen Seite könnte die Universität auch ihre Mittel entsprechend umverteilen und so die Zulassungsquoten der Frauen erhöhen. Das spräche für den Gesamtdurchschnitt als Maßzahl und für eine Diskriminierung, wenn schon nicht durch das Auswahlverfahren, so doch durch die Struktur der Universität. spineplot Bei nur zwei Variablen lassen sich die bedingten relativen Häufigkeiten durch spineplots darstellen. Die beiden Befehle > spineplot(margin.table(UCBAdmissions,c(3,2))) > spineplot(margin.table(UCBAdmissions,c(3,1))) erzeugen die Abbildung . . Auf der x-Achse sind die Fakultäten abgetragen. Die Breite der Balken entspricht der relativen Anzahl von Bewerbern je Fakultät. Die Höhe der dunklen Balken entspricht den bedingten relativen Häufigkeiten, links P(G = M D = .), die Geschlechtsverteilung der Bewerber je Fakultät, rechts P(A = A D = .), dem Anteil an zugelassenen Bewerbern je Fakultät. . . Bedingte Dichten Wenn die abhängige Variable sehr viele Ausprägungen hat, dann liefern die bisherigen Verfahren der Darstellung bedingter Verteilungen keine übersichtlichen Zusammenfassungen. Für bedingende Variable mit nur wenigen Der klassische Artikel von C.R. Blyth: On Simpson’s paradox and the sure-thing principle, Journal of the American Statistical Association, , , – , ist immer noch eine der besten Darstellungen. Datenbeschreibung: Mehrere Variablen (a) (b) Abbildung 6.4: Spineplot von Geschlecht (a) und Zulassung (b), jeweils gegeben Fakultät. Ausprägungen kann man für jede der Ausprägungen die entsprechende bedingte Dichte mit Kerndichteschätzern aus Abschnitt . . getrennt für die Werte der unabhängigen Variablen anwenden. Die systematische Verwendung dieser Technik wäre aber aufwendig. Zudem ist unklar, wie man vorgehen soll, wenn auch die unabhängige Variable (oder die unabhängigen Variablen) viele Ausprägungen hat. In diesem Fall kann man die durchschnittliche Dichte für einen Bereich von Werten der unabhängigen Variable berechnen, zumindest dann, wenn sowohl die unabhängige und die abhängige Variable geordnete Werte haben. Wählt man auch für die unabhängige Variable einen Kern, dann kann man die bedingten Dichten an jedem Punkt t des Wertebereichs der unabhängigen Variablen berechnen, indem man alle Werte der unabhängigen Variable mit den Werten des Kerns kh(t xi) gewichtet. Als Beispiel verwenden wir wieder die Angaben zu Miethöhe und Größe der Wohnung aus dem Mikrozensus . Bedingte Dichten können mit dem Befehl cde() des Pakets hdrcde berechnet werden. Mit der Datenauswahl wie in Abschnitt . kann man sich einen Überblick über die bedingte Höhe der Mieten bei gegebener Größe der Wohnung verschaffen. Wir können nun auch alle Daten und nicht nur eine kleinere Teilmenge benutzen, weil die Berechnung weit weniger rechenintensiv ist wie die Berechnung von mehrdimensionalen Dichten. > library(hdrcde) > Wohn.cde < cde(Wohn[,2],Wohn[,1]) > plot(Wohn.cde,main="",ylab="Miete",xlab="qm",col="gray80") Das Basispaket von R stellt den Befehl cdplot() für bedingte Dichten zur Verfügung. Der Befehl cde() ist etwas flexibler. . Bedingte Verteilungen Das erste Argument des cde() Befehls gibt die unabhängige Variable an. Das zweite Argument benennt den Vektor der abhängigen Variablen. Mit weiteren optionalen Argumenten kann man die Punkte im Wertebereich der unabhängigen Variablen wählen, an denen die bedingte Dichte berechnet werden soll. Die Voreinstellung benutzt Punkte gleichen Abstands über den Bereich der unabhängigen Variablen. Das Ergebnis des plot() Befehls ist in der linken Graphik von Abbildung . dargestellt. Wie schon bei den mehrdimensionalen (a) (b) Abbildung 6.5: Bedingte Dichten von Miethöhe gegeben Wohnungsgröße. a) Perspektivplot der bedingten Dichten. b)Höchste Dichten für %, % und % der Daten gegeben Wohnungsgröße. Dichten ist die graphische Darstellung der bedingten Dichten nicht besonders übersichtlich und u.U. sogar irreführend, weil ein Teil der Dichten von anderen überdeckt wird. Eine bessere Version analog zu den Konturplots gemeinsamer Dichten ist die Darstellung von Bereichen der jeweiligen bedingten Dichten, die einen entsprechenden Anteil der Beobachtungen überdecken und gleichzeitig die höchsten Dichtewerte aufweisen. Das entspricht den Höhenlinien der Dichte mit der entsprechenden Überdeckungshäufigkeit. Sie sind in der rechten Graphik in Abbildung . dargestellt. Die Graustufen entsprechen den Anteilen von % (dunkelste Graustufe), % und %. Die Punkte geben den (geschätzten) Modus der Dichten an. Der Zusammenhang zwischen Miete und Wohnungsgröße lässt sich insbesondere in dieser Graphik weit einfacher ablesen als in Darstellungen der gemeinsamen Dichte. Allerdings geht auch eine Information verloren: Die Verteilung der unabhängigen Variablen. Die bedingten Dichten sind ohne zusätzliche Informationen über die Randverteilung der unabhängigen Variablen kaum zu interpretieren. Deshalb sollten solche Informationen in Datenbeschreibungen immer bereitgestellt werden. Es können auch mehrere unabhängige Variablen (als Matrix) angegeben werden. Dann werden für die Gewichtung nicht Kerne, sondern die nächstliegenden Punkte im mehrdimensionalen Raum der unabhängigen Variablen benutzt. Datenbeschreibung: Mehrere Variablen . Übungsaufgaben 1) Laden Sie den Datensatz Titanic mit dem Befehl data(Titanic). Es handelt sich um eine Passagier- und Crewliste der Titanic, gruppiert nach: Klasse ( ., ., . Klasse oder Crewmitglied), Geschlecht, Alter (Erwachsen oder Kind), und ob sie den Untergang überlebten oder nicht. Der Datensatz wird als vierdimensionale Tabelle zur Verfügung gestellt. a) Berechnen Sie die marginale Verteilung der Variablen Class und Survived. b) Berechnen Sie die entsprechenden Prozentwerte. c) Berechnen Sie die bedingten Häufigkeiten P(Überleben | Class=c, Sex=s) für alle Kombinationen von Klasse und Geschlecht. d) Berechnen Sie die bedingten Überlebenshäufigkeiten gegeben Klasse, Geschlecht und Altersklasse. Sind die Überlebenshäufigkeiten der Kinder in allen Klassen besser als die der Erwachsenen? Ist der Unterschied in allen Klassen ähnlich groß? Wie sollte man „ähnlich groß“ bei Anteilen definieren? 2) Betrachten Sie noch einmal die Zulassungsdaten UCBAdmissions: a) Berechnen Sie den Frauenanteil der Bewerber je Fakultät. Berechnen Sie den Anteil der Fakultäten C und E an allen weiblichen Bewerbern. b) Die Zulassungshäufigkeit der Frauen ist ein gewichteter Durchschnitt der Zulassungsraten der Frauen jeder Fakultät. Finden Sie die Gewichte. Welche Größen gehen in die Gewichte ein? Welche Gewichte werden benötigt, wenn die Zulassungshäufigkeit der Männer aus den Zulassungshäufigkeiten je Fakultät berechnet werden soll? c) Finden Sie weitere Beispiele für Simpsons Paradox (etwa über das Internet und Suchmaschinen). Kann man sich entsprechende Beispiele auch für vorgegebene Randverteilungen beliebig konstruieren? Der Artikel von R.J.M. Dawson ( ),The ‘Unusual Episode’ data revisited. Journal of Statistics Education, , http://www.amstat.org/publications/jse/v3n3/datasets. dawson.html gibt weitere Details an und ist sehr zu empfehlen. Dort finden sich auch Hinweise auf andere Quellen und eine Diskussion der Zuverlässigkeit der Angaben. 3 10 35 83 _W iS o B eh r P öt te r 2A - B g 3

Chapter Preview

References

Zusammenfassung

Vorteile

- Einführung in die statistische Analyse mit R für Wirtschafts- und Sozialwissenschaftler

- Inklusive hilfreicher Tipps wie "Ansprechende Grafiken mit R gestalten"

Zum Thema

R ist ein Statistikprogramm, das kostenlos über das Internet verbreitet wird und dessen Source Codes frei zugänglich sind.

Aufgrund dieses kostenlosen Angebots gehen immer mehr Dozenten dazu über, neben SPSS auch R zu lehren bzw. SPSS durch R zu ersetzen.

In R steht dem Nutzer die gesamte Bandbreite statistischer Verfahren zur Verfügung. Durch die eigenständige Programmierumgebung ist die Software sehr flexibel und erlaubt notwendige Modifikationen und Erweiterungen verfügbarer Prozeduren.

Zum Werk

Dieses Buch führt leicht verständlich in die statistische Analyse mit R ein. Anhand von Beispielen wird die Umsetzung der wichtigsten Methoden der Statistik, wie sie üblicherweise in den Grundkursen gelehrt werden, mit R vorgestellt.

Das Buch verfolgt entsprechend zwei Ziele:

1. Vorstellung der statistischen Methoden,

2. Benutzung des Werkzeuges R zur Analyse von Daten.

Inhalt

- Grundlagen von R

- Datenbehandlung und graphische Darstellungen mit R

- Datenbeschreibungen (deskriptive Statistik)

- Wahrscheinlichkeitsverteilungen

- Regressionsanalysen

- Optimierungsverfahren

- Simulationen mit R

Neben vielen neuen, wirtschaftsorientierten Beispielen wird nun auch in die Paneldatenanalyse und Stichprobentheorie eingeführt.

Zu den Autoren

Dr. Andreas Behr ist wissenschaftlicher Mitarbeiter am Institut für Statistik und Ökonometrie der Universität Münster.

Dr. Ulrich Pötter ist wissenschaftlicher Mitarbeiter am Institut für Statistik der Universität Bochum.

Zielgruppe

Für Studierende und Dozenten der Wirtschaftswissenschaften im Bachelor an Universitäten und Fachhochschulen.