############################################################################# # KREIS-/TORTENDIAGRAMM, STAB-, SÄULEN-, BALKEN-, und STAMM-BLATT-DIAGRAMM ## ############################################################################# ### Sonntagsfrage (Zahlen von Emnid vom 20.11.2011) vorhersage <- c(33, 30, 16, 3, 8, 7, 3) names(vorhersage) <- c("CDU/CSU", "SPD", "GRÜNE", "FDP", "LINKE", "PIR", "Sonstige") vorhersage ###> vorhersage ### CDU/CSU SPD GRÜNE FDP LINKE PIR Sonstige ### 33 30 16 3 8 7 3 ### Wahlergebnis vom 27.09.2009 Wahl2009 <- c(33.8, 23.0, 10.7, 14.6, 11.9, 2.0, 4.0) names(Wahl2009) <- names(vorhersage) sum(Wahl2009) ### [1] 100 ### Stabdiagramm plot(as.table(Wahl2009)) plot(Wahl2009) ### keine ordentliche Beschriftung, nur Punkte statt Stäbe ### Säulendiagramme barplot(Wahl2009) barplot(Wahl2009, col=c("black", "red", "green", "yellow", "magenta", "orange", "gray")) wahlcol <- c("black", "red", "green", "yellow", "magenta", "orange", "gray") ### Kreisdiagramme par(mfrow=c(1,2)) ### 2 Bildchen nebeneinander pie(Wahl2009, col=wahlcol) pie(Wahl2009[c(1,4,7,6,5,3,2)], col=wahlcol[c(1,4,7,6,5,3,2)]) ### Gewinne und Verluste barplot(Wahl2009, col=wahlcol, main="Wahl 2009") barplot(vorhersage - Wahl2009, col=wahlcol, main="vorhergesagte Gewinne und Verluste") ### Balkendiagramme entsprechend durch horiz=TRUE barplot(Wahl2009, col=wahlcol, main="Wahl 2009", horiz=TRUE) barplot(vorhersage - Wahl2009, col=wahlcol, main="vorhergesagte Gewinne und Verluste", horiz=TRUE) ### Stamm-Blatt-Diagramm mit Nettomieten-Bespiel aus Kapitel 2 nettomieten = c(127,172,194,217,226,228,238,248,272,337,347,349,349, 373,375,378,383,394,426,443,466,467,533,539,560,676) stem(nettomieten) ############################################################################# ######################## EMPIRISCHE VERTEILUNGSFUNKTION ##################### ############################################################################# ### Befehl ecdf (empirical cumulative distribution function) par(mfrow=c(1,1)) ### Umstellung: Wieder nur ein Bildchen im Zeichenfenster incomeUSD1 = round(rnorm(10,3000,500),2) ### Simulation von 10 Einkommensdaten ### mit theoretischem Mittel 3000 ### und Standardabweichung 500 incomeUSD1 plot(ecdf(incomeUSD1), main="Empirische Verteilungsfunktion [Einkommen in USD]") incomeUSD2 = round(rnorm(100,3000,500),2) plot(ecdf(incomeUSD2), main="Empirische Verteilungsfunktion [Einkommen in USD]") incomeUSD3 = round(rnorm(1000,3000,500),2) plot(ecdf(incomeUSD3), main="Empirische Verteilungsfunktion [Einkommen in USD]") incomeUSD3 = round(rnorm(10000,3000,500),2) plot(ecdf(incomeUSD3), main="Empirische Verteilungsfunktion [Einkommen in USD]") ### Weiterverwendung der empirischen Verteilungsfunktion: Fn = ecdf(incomeUSD3) Fn(3000) 1-Fn(3900) median(incomeUSD3) Fn(median(incomeUSD3)) Fn1 = ecdf(incomeUSD1) median(incomeUSD1) Fn1(median(incomeUSD1)) ############################################################################# ############################ STATISTISCHE KENNZAHLEN ######################## ############################################################################# x = incomeUSD3 mean(x) ### arithmetisches Mittel sum(x)/length(x) ### zum Vergleich n = length(x) y = c(1.02,1.03,1.07) exp(mean(log(y))) ### geometrisches Mittel z = c(120,180) 1/mean(1/z) ### harmonisches Mittel var(x) ### Varianz (sum((x-mean(x))^2))/n (sum((x-mean(x))^2))/(n-1) ### d.h. var berechnet s^2, nicht s-schlange^2 sd(x) ### Standardabweichung sqrt(var(x)) ### zum Vergleich: Wurzel aus der Varianz median(x) ### Median median(c(2,3,4)) median(c(2,2,3,3)) quantile(x) ### wichtige Quantile IQR(x) ### Inter-Quartils-Abstand max(x) ### Maximum min(x) ### Minimum range(x) ### Range (gibt Min. und Max. aus) diff(range(x)) ### Spannweite mad(x,constant=1) ### MAD mad(x) ### entspricht mad(x,constant=1.4826) mad(x,constant=1.4826) sd(x) ### zum Vergleich: etwa dieselbe Größenordnung HIER mad(c(1,2,2,2,3),constant=1) mad(c(0,0,1,1,2,2,2,2,3,12),constant=1) sqrt((n-1)/n)*sd(x)/mean(x) ### Variationskoeffizient (aus s-schlange) sd(x)/mean(x) ### Variationskoeffizient (aus s) ### für große Datensätze quasi kein Unterschied ############################################################################# #### zwei Beispiele zum getrimmten Mittel: newdata = c(incomeUSD3[1:9999],100000000) mean(x) mean(newdata) mean(newdata,trim=0.01) w1 = 1:10 w2 = c(1:9,10000) w1 w2 mean(w1) mean(w2) mean(w2,trim=0.05) ### reicht bei nur 10 Zahlen nicht (5% ist "halbe Zahl") mean(w2,trim=0.0999) ### reicht auch noch nicht mean(w2,trim=0.10) ### jetzt wird die kleinste und die größte Zahl entfernt ############################################################################# #################################### BOXPLOT ################################ ############################################################################# par(mfrow=c(1,1)) erg1 = boxplot(x) erg1$stats ### Kennzahlen zum Zeichnen der Box und der Zäune erg1$out ### Werte von potentiellen Ausreißern sort(Wahl2009) erg2 = boxplot(Wahl2009) erg2$stats IQR(Wahl2009) Wahl2030 = c(2.0,4.0,10.7,11.9,13.0,14.6,43.8) ### bereits sortiert IQR(Wahl2030) erg2a = boxplot(Wahl2030) ### boxplot malt Zaun am letzten tatsächlich ### vorkommenden Datenwert innerhalb ### von x_0.75 + 1.5 IQR erg2a$stats 1.5*IQR(Wahl2030) ### theoretischer Abstand der Zäune zu x_0.25 und x_0.75 #### Rumspielen mit dem Argument 'range' par(mfrow=c(2,2)) boxplot(x,main="ohne Angabe") erg3 = boxplot(x,range=1.5,main="range=1.5") boxplot(x,range=2.0,main="range=2.0") erg4 = boxplot(x,range=10.0,main="range=10.0") ### dies hat hier dieselbe Wirkung wie range=0 (Zäune am Min. und Max.): ### erg5 = boxplot(x,range=0, plot=F) erg3$stats erg4$stats min(x) max(x) erg5$stats