Statistik-Blog

R Zertifizierung: Daten importieren und aufbereiten – Fallbeispiele (DataCamp)

R Zertifizierung abgeschlossen: Daten importieren und aufbereiten – Fallbeispiele.

DataCamp: Importing Cleaning Case Studies

Hier gab es im Vergleich zu bisherigen DataCamp-Kursen nichts Wesentlich Neues – dieser Kurs ist sehr praxisorientiert. Datenbereinigung ist nicht so spektakulär wie das Entwickeln fortgeschrittener DataMining-Modelle, aber oft sehr zeitaufwändig.

R-Pakete zur Datenbereinigung und Datenaufbereitung

Neben etlichen Basisfunktionen kamen überwiegend Pakete von Hadley Wickham zum Einsatz: die R-Pakete dplyr, tidyr (das ich jetzt lieber verwende als reshape / reshape2, vor allem, um Daten für ggplot vorzubereiten: gather), lubridate (für Zeit- und Datumsfunktionen), readxl (Datenimport aus Excel, wesentlich schneller als z. B. gdata, siehe Beitrag Excel-Datensätze in R laden: Geschwindigkeits-Test verschiedener R-Pakete), ggplot2, data.table (mit schnellem Datenimport mittels fread), stringr (für Stringfunktionen bzw. Bereinigung von Textfeldern) und ein Mal sogar gdata zum Einsatz.

Sie suchen für sich oder Ihr Unternehmen R-Schulungen? Gern erstelle ich ein individuelles Angebot und schneide die Inhalte genau auf Ihre Bedürfnisse zu, gern mit Beispielen aus Ihrem Projektalltag.

R Zertifizierung: R für SAS / SPSS / Stata Anwender (DataCamp)

Weitere R-Zertifizierung abgeschlossen: R für SAS / SPSS / Stata Anwender.

DataCamp: R for SAS, SPSS and Stata Users

Im Vergleich zu anderen Kursen bei DataCamp war dieser wesentlich umfangreicher, mit insgesamt 21 statt der üblichen drei bis fünf Kapiteln. Für Neueinsteiger bei DataCamp empfehle ich, diesen Kurs früh zu absolvieren, wenn man bereits Erfahrung mit wenigstens einem der Statistik-Pakete SAS, SPSS oder Stata hat. So, nach etlichen anderen Kursen, war vieles für mich Wiederholung. Aber nicht alles. Am spannendsten fand ich das vorletzte Kapitel „High Quality Output“. Hier kamen die Pakete xtable und texreg zum Einsatz, es ging u. a. um publikationsfähige Regressionstabellen und LaTex-Einbindung.

Gastbeitrag zum EM-Fieber: Elfmeterschießen-Tool – Modellierung der Sieg-Wahrscheinlichkeit

Das angefügte Excel-Tool für ein Fußball-Elfmeterschießen ermöglicht es, anhand der Binomialverteilung die Wahrscheinlichkeiten für den Sieg im Elfmeterschießen in Abhängigkeit des Spielstandes zu quantifizieren. Hierzu sind bestimmte Annahmen zu treffen. Es soll die Annahme getroffen werden, dass für beide am Elfmeterschießen beteiligte Mannschaften eine konstante Elfmeter-Trefferwahrscheinlichkeit in Höhe von 75% aufweisen. Somit haben beide Mannschaften vor Beginn des Elfmeterschießens eine Siegwahrscheinlichkeit von 50%.

Screenshot: Elfmeter-Tool in Excel
Screenshot: Elfmeter-Tool in Excel

Mannschaft A beginnt das Elfmeterschießen. Wie hoch ist bei einem Fehlschuss des ersten eigenen Schützen von Mannschaft A beispielsweise die Wahrscheinlichkeit das Elfmeterschießen im Fußball zu gewinnen ? Unter den oben geltenden Annahmen beträgt sie für Mannschaft A 29,1 %. Ein Treffer durch den ersten Schützen von Mannschaft A erhöht die Siegwahrscheinlichkeit dahingegen auf 57,0 %. Sofern nach 2 x 5 Schützen noch kein Sieger ermittelt worden ist, geht das Elfmeterschießen in die Verlängerung. Mannschaft A und Mannschaft B schießen abwechselnd und es gewinnt diejenige Mannschaft, die einen Treffer bei einem gleichzeitigen Fehlschuss der gegnerischen Mannschaft vorweisen kann. Mannschaft A legt auch in der Verlängerung vor. Bei einem Treffer von Mannschaft A beträgt die Siegwahrscheinlichkeit 62,5 %, wohingegen sie bei einem Fehlschuss 12,5 % entspricht.

Mittels des Elfmeter-Tools in Excel können Sie ein Elfmeterschießen nachmodellieren. Die gelb markierten Zellen der Spalte B sind manipulierbar. Zelle B1 definiert die unterstellte Trefferwahrscheinlichkeit. Sie ist auf 75 % voreingestellt. Die Zellen B4- B13 stellen den Verlauf des Elfmeterschießens nach Treffern (1) und Fehlschüssen (0) dar. Die Eingabe des Trefferbildes für Mannschaft A und B wird durch das Excel-Tool in einen Verlauf der Siegwahrscheinlichkeiten transformiert. Dieser Verlauf ist grafisch in der unten angefügten Abbildung ersichtlich. Beträgt die Siegwahrscheinlichkeit weniger/ mehr als 50%, färbt sich die betreffende Zelle rot/ blau. Bei einer Siegwahrscheinlichkeit von exakt 50 % färbt sich die korrespondiere Zelle grün. Die Siegquoten geben die faire Bruttowettquote für Mannschaft A/ B bei einem bestimmten Spielstand an.

Hier gibt es das Tool zum Download.

Dank an Tim Scheffczyk für den Gastbeitrag!

Excel-Datensätze in R laden: Geschwindigkeits-Test verschiedener R-Pakete

Welche Möglichkeiten gibt es, große Excel-Datensätze schnell in R zu laden? Wir verwenden einen Beispiel-Datensatz mit 29 Variablen (Spalten) und 2.000 bzw. 10.000 Zeilen (Fällen).

Das R-Paket gdata

Als ich zum ersten Mal Exceldaten in R laden wollte, stieß ich auf das gdata-Paket. Es bietet zahlreiche Erweiterungen der R-Basisfunktionalität. Zum Import von Exceldaten wandelt es die Exceldatei zunächst per Perl-Skript in eine csv-Datei um und lädt diese dann. Dadurch ist es extrem ineffizient für den Import großer Datenmengen.

Hier ein Codeschnipsel. Zur Zeitmessung verwende ich die Funktion Sys.time(), die die aktuelle Systemzeit ausgibt. Sie wird vor und nach dem Ladevorgang erfasst, die Differenz ist der Zeitbedarf des Ladevorgangs.

require(gdata)
 Start <- Sys.time()
 gdata_xlsx <- read.xls("2008_d.xlsx")
 Ende <- Sys.time()
 Zeit_gdata <- Ende - Start
 cat("n Laufzeit gdata, 2.000 Zeilen: ", Zeit_gdata, "Sekunden") 

Die Laufzeit hängt natürlich vom System ab und kann je nach Auslastung des Rechners und Hintergrundprozessen schwanken. Für gdata komme ich auf meinem System auf Zeiten von etwas mehr als 10 Sekunden für die Datei mit 2.000 Zeilen. Für größere Excel-Dateien rate ich dringend von gdata ab!

Das R-Paket XLConnect

Wie sieht es mit XLConnect aus? Dieses Paket baut gleichsam eine Brücke zu Excel – man kann damit von R aus Excelblätter anlegen, dort Daten eintragen, Arbeitsmappen anlegen und speichern etc. Dazu greift XLConnect auf Java zurück.

require(XLConnect)

# Speicherplatz für Java erhöhen
options(java.parameters = "-Xmx1g" )

Start <- Sys.time()
wb <- loadWorkbook("2008_d.xlsx")
XLConnect_xlsx <- readWorksheet(wb, sheet = "2008")
Ende <- Sys.time()
Zeit_XLConnect <- Ende - Start
cat("n Laufzeit XLConnect, 2.000 Zeilen: ", Zeit_XLConnect, "Sekunden")

Für die Datei mit 2.000 Zeilen braucht mein System nun schon weniger als eine Sekunde – meist um die 0,4 Sekunden, manchmal bis zu 0,8 (im Video waren es 1,7). XLConnect ist ungefähr um den Faktor 6 bis 20 schneller als gdata.

Die Ladezeit für die Datei mit 10.000 Zeilen betrug um die 6 Sekunden – allerdings kommt Java bei größeren Dateien an Speichergrenzen. Typische Meldung:

Error: OutOfMemoryError (Java): Java heap space

Das R-Paket xlsx

require(xlsx)
# Wir verwenden nur die schnellere Funktion read.xlsx2, nicht read.xlsx (viel langsamer)

Start <- Sys.time()
xlsx_xlsx <- read.xlsx2("2008_c.xlsx", 1)
Ende <- Sys.time()
Zeit_xlsx <- Ende - Start
cat("n Laufzeit xlsx, 10.000 Zeilen: ", Zeit_xlsx, "Sekunden")

xlsx greift ebenfalls auf Java zurück und ermöglicht ebenfalls weitgehende Kontrolle über Excel-Dateien aus R heraus. Die Laufzeit für die Datei mit 10.000 Zeilen zwischen 3 Sekunden und 15 Sekunden. Die kleinere Datei mit 2.000 Zeilen wurde durchgängig in weniger als einer Sekunde geladen, um die 0,3 Sekunden.

Das R-Paket openxlsx

detach(package:xlsx)
require(openxlsx)

Start <- Sys.time()
openxlsx_xlsx <- read.xlsx("2008_c.xlsx")
Ende <- Sys.time()
Zeit_openxlsx <- Ende - Start
cat("n Laufzeit openxlsx, 10.000 Zeilen: ", Zeit_openxlsx, "Sekunden")

Da xlsx und openxlsx zum Teil gleiche Befehle verwenden, habe ich zuerst das xlsx-Paket deaktiviert. Das openxlsx-Paket ist mit Abstand das schnellste der bisher getesteten: Es lädt die 10.000-Zeilen-Datei konstant in weniger als einer Sekunde (bei mir zwischen 0,65 und 0,9 Sekunden).

Das readxl-Paket von Hadley Wickham

require(readxl)

Start <- Sys.time()
readxl_xlsx <- read_excel("2008_c.xlsx")
Ende <- Sys.time()
Zeit_readxl <- Ende - Start
cat("n Laufzeit readxl, 10.000 Zeilen: ", Zeit_readxl, "Sekunden")

as.numeric(Zeit_openxlsx) / as.numeric(Zeit_readxl)

readxl ist noch schneller: um 0,3 Sekunden für die größere Datei mit 10.000 Zeilen, und damit mehr als doppelt so schnell wie das zweitschnellste Paket openxlsx. Fürs Excel-Format ist Hadley Wickhams Paket das schnellste, das ich kenne.

Ich habe noch eine größere Datei mit 1 Million Zeilen (und ebenfalls 29 Variablen) vorbereitet. Diese konnte ich auch mit readxl nicht in vertretbarer Zeit laden (Abbruch nach 20 Minuten). Spätestens bei solchen Datenmengen ist es schlicht nicht ratsam, mit dem Excelformat zu arbeiten.

Große Datenmengen: Welches Paket gewinnt beim .csv-Format?

Erster Kandidat: Die Basisfunktion read.csv

Die Basisfunktion read.csv beruht auf read.table, ist aber anwenderfreundlicher, da einige Einstellungen bereits auf das .csv-Format abzielen.

Start <- Sys.time()
daten <- read.csv("2008b.csv")
Ende <- Sys.time()
Zeit_read.csv <- Ende - Start
cat("n Laufzeit read.csv, 1.000.000 Zeilen: ", Zeit_read.csv, "Sekunden")

Die Datei mit einer Million Zeilen konnte ich damit in 12 bis 13 Sekunden laden.

Hadley Wickhams readr-Paket

require(readr)
Start <- Sys.time()
daten <- read_csv("2008b.csv")
Ende <- Sys.time()
Zeit_readr <- Ende - Start
cat("n Laufzeit readr, 1.000.000 Zeilen: ", Zeit_readr, "Sekunden")

Beim readr-Paket muss man sich an den Unterstrich (read_csv) gewöhnen. Es ist ca. 5 Mal so schnell wie read.csv und schaffte die Datei mit einer Million Zeilen in etwas mehr als zwei Sekunden. Nettes Feature: Ein (wenn auch simpler) Fortschrittsbalken.

data.table von Matt Dowle und Arun Srinivasan

Das data.table-Paket erfreut sich zunehmender Beliebtheit, vor allem im Hinblick auf die Verarbeitung großer Datensätze. Um es anzuwenden, muss man gegenüber den herkömmlichen R-Funktionen etwas umdenken, da es eine andere Syntax verwendet. Mit fread verfügt das Paket auch über eine außergewöhnlich schnelle und benutzerfreundliche Ladefunktion:

require(data.table)
Start <- Sys.time()
daten <- fread("2008b.csv")
Ende <- Sys.time()
Zeit_fread <- Ende - Start
cat("n Laufzeit fread, 1.000.000 Zeilen: ", Zeit_fread, "Sekunden")

fread aus dem data.table-Paket gewinnt hier beim csv-Format vor dem readr-Paket mit Zeiten um 1,4 Sekunden.

Fazit: Laden großer Exceldateien in R

Viele Pakete sind in der Lage, Exceldaten in R zu laden. Die Ladezeiten unterscheiden sich dabei drastisch, je nachdem, wie die Schnittstelle zu Excel „unter der Haube“ programmiert wurde. readxl erwies sich beim .xlsx-Format als das schnellste Paket. Für größere Datenmengen empfehle ich jedoch den Umstieg auf andere Dateiformate. Beispielsweise werden .csv-Formate sehr viel schneller geladen. Hier gewann data.table vor readr. Außerdem kann R mit Datenbanken arbeiten, dazu gibt es viele Pakete (zum Beispiel DBI, RMySQL). Das bekannte dplyr-Paket erlaubt es beispielsweise, die gleichen R-Befehle, die auf R-interne Daten angewendet werden, auch an Datenbanken zu schicken. Man muss dazu lediglich eine Datenbankverbindung definieren und benötigt keine SQL-Befehle.

Interaktive Diagramme in R: Heatmap mit Mouseover (HTML / Javascript)

Finden Sie statische Diagramme langweilig? Die freie Statistik-Software R bietet verschiedene Möglichkeiten, Diagramme interaktiv zu gestalten. Die einfachere Variante besteht darin, HTML in Verbindung mit Javascript einzusetzen. Hier eine Heatmap, die die Leistung verschiedener Standorte im Hinblick auf diverse Prüfkriterien visualisiert. Die interaktive Version wurde auf eine separate Seite gelegt und ist per Klick erreichbar.

Heatmap blue statisch mit Link zu dynamischer Javascript-Version
Heatmap statt Mittelwertstabelle (je dunkler, desto besser); als HTML mit Javascript interaktiv (Infos durch Mouse-Over): siehe Interaktive Heatmap (HTML mit Javascript)

Die d3heatmap-Funktion aus dem gleichnamigen R-Paket bietet zusätzlich zu den auch für statistische Laien intuitiv verständlichen Farbabstufungen an den Rändern die Ergebnisse von hierarchischen Clusteranalysen, die Ähnlichkeiten zwischen den Merkmalen bzw. Standorten oder allgemeiner zwischen den Bewertungskriterien („Variablen“) und Gruppen („Fällen“) kennzeichnen.

Interaktive Diagramme: HTML und Javascript

Vorteil: Man benötigt keine R-Software, um das Diagramm zu betrachten. Nachteil: Javascript benötigt Zugriff auf die Daten, was bei nicht-öffentlichen sowie sehr großen Datensätzen problematisch ist. Zudem ist die Funktionalität auf das beschränkt, was man von R auf Javascript übertragen kann. Dazu gibt es htmlwidgets. Die „Berechnung“ der Grafik erfolgt im Browser des Betrachters.

Interaktive Diagramme: Shiny

Shiny Apps bieten hingegen ein wesentlich umfangreicheres Funktionsspektrum und können größere Datenmengen wesentlich schneller verarbeiten. Dazu muss jedoch R auf einem Server laufen, der das Ergebnis der Berechnung als (statisches) HTML an den Browser des Betrachters liefert. Es gibt eine kostenlose Basisversion, bei der man den Shiny Server von R Studio nutzt; dabei ist die Anzahl der Diagramme sowie die Anzahl der aktiven Stunden pro Monat begrenzt. Will man mehr, muss man entweder ein Abo abschließen (wobei die Daten dann ebenfalls auf einem R-Studio-Server liegen) oder einen eigenen Server betreiben. Ein weiterer Nachteil besteht darin, dass man sich in Shiny einarbeiten muss, was anspruchsvoller ist als die Arbeit mit htmlwidgets.

Sie brauchen Unterstützung bei der Visualisierung Ihrer Daten? Gern stehe ich zur Verfügung.

Säulendiagramm vs. Punktdiagramm – irreführend vs. informativ?

Balken- und Säulendiagramme werden immer noch häufig verwendet, um Mittelwertsunterschiede darzustellen – obwohl zumindest in Fachkreisen schon viel Kritik an diesem Diagrammtyp geäußert wurde. Für einen schnellen optischen Eindruck mag es passen – oder auch nicht. Der Mittelwert allein ist nur ein Aspekt einer Verteilung. Hier ein Beispiel:

require(ggplot2)
ggplot(daten) +
 aes(x = Geschlecht, y = Punkte, fill = Geschlecht) +
 stat_summary(aes(width = 0.8), geom = "bar", fun.y = "mean") +
 scale_x_discrete(name = "Geschlecht") + scale_y_continuous(name = "Punkte") + ggtitle("Mittelwerte nach Geschlecht")
Säulendiagramm: Mittelwerte
Säulendiagramm zum Vergleich zweier Mittelwerte: wenig informativ

Säulen- und Balkendiagramme für Mittelwerte: Viel Tinte, wenig Information

Erster Eindruck: Ein nur sehr geringfügiger Unterschied zwischen den beiden Geschlechtern. Vielleicht unterscheiden sich die Streuungen (vgl. den Beitrag Verteilungen vergleichen: Mittelwerte und Fallzahlen reichen (manchmal) nicht)? Nehmen wir die Standardabweichung als Streuungsmaß, so erhalten wir ein sog. Dynamite Plot – benannt nach einem Sprengstoffbehälter mit Zündschnur. (Manchmal werden Standardfehler statt der Standardabweichung dargestellt.)

ggplot(daten) +
 aes(x = Geschlecht, y = Punkte, fill = Geschlecht) +
 stat_summary(aes(width = 0.8), geom = "bar", fun.y = "mean") +
 stat_summary(fun.data = mean_sdl, fun.args = list(mult = 1), geom = "errorbar", width = 0.3) +
 scale_x_discrete(name = "Geschlecht") + scale_y_continuous(name = "Punkte") +
 ggtitle("Mittelwerte +/- SD nach Geschlecht")
 ggsave("Säule_MW-SD.png")
Säulendiagramm mit Mittelwerten und Standardabweichungen
Säulendiagramm mit Mittelwerten und Standardabweichungen („Dynamite Plot“)

Auch hier schneiden die beiden Geschlechtergruppen praktisch gleich ab. Können wir nun beruhigt die Ergebnisse publizieren?

Wesentlich informativer: Punktdiagramme

Sehen wir uns zum Vergleich ein Punktdiagramm an:

ggplot(daten) +
 aes(x = Geschlecht, y = Punkte, color = Geschlecht) +
 geom_jitter(position = position_jitter(0.4), size = 4) +
 stat_summary(fun.data = mean_sdl, fun.args = list(mult = 1), geom = "errorbar", width = 0.2,
 size = .75, color = "black") +
 stat_summary(fun.y=mean, colour="black", geom="point", shape=8, size=5) +
 scale_x_discrete(name = "Geschlecht") + scale_y_continuous(name = "Punkte") +
 annotate("text", x=1.5, y=5, size=4, label="* Mittelwert") +
 ggtitle("Punktdiagramm +/- SD nach Geschlecht")
Punktdiagramm
Punktdiagramm: wesentlich informativer als Säulen- und Balkendiagramme; hier zusätzlich mit Mittelwert und Standardabweichung

Das Punktdiagramm (Dot Plot) ist wesentlich informativer, da es nicht nur aggregierte Werte, sondern Einzeldaten darstellt. Damit die Punkte sich nicht völlig überdecken, werden sie leicht versetzt dargestellt (“jitter”). Wir erfahren hier viel mehr über die Verteilung: In beiden Geschlechtergruppen gibt es jeweils etliche Personen, die um die 15 Punkte bzw. um die 45 Punkte-Marke liegen. Zudem sehen wir, dass die beiden “Cluster” der Männer homogener sind als die der Frauen. All das haben uns die Balkendiagramme nicht verraten.

Punktdiagramme sind nach meiner Erfahrung recht selten anzutreffen. Wer Verteilungen genauer beschreiben möchte, greift häufig auf Boxplots zurück, an denen man verschiedene Kennzahlen ablesen kann: Neben dem Median auch die 25er- und 75er-Perzentile, den Interquartilabstand (IQR) sowie Ausreißer und Extremwerte. Mit R kann man auch zusätzlich den Mittelwert kennzeichnen. Wie schneidet in unserem Beispiel das Boxplot im Vergleich zum Punktdiagramm ab?

ggplot(daten) +
 aes(x = Geschlecht, y = Punkte, fill = Geschlecht) +
 geom_boxplot() +
 stat_summary(fun.y=mean, colour="black", geom="point", shape=8, size=5) +
 scale_x_discrete(name = "Geschlecht") + scale_y_continuous(name = "Punkte") +
 annotate("text", x=1.5, y=5, size=4, label="* Mittelwert") +
 ggtitle("Boxplots nach Geschlecht")
Boxplot
Boxplot: Obwohl informativer als das Säulendiagramm, ist auch hier die zweigipflige Verteilung nicht erkennbar.

Gibt uns das Boxplot einen ebenso guten Überblick über die Verteilungen wie das Punktdiagramm? Ich meine nein: die zwei “Cluster” um 15 und 45 Punkte sind hier nicht ablesbar. Wir sehen lediglich etwas längere “Whisker” (Antennen) bei den Frauen.

Weder Boxplot noch Säulendiagramm machen die zweigipflige Verteilung erkennbar. Alternativen wären noch Dichteplots (Density Plots) oder Histogramme. Hier erkennt man die zwei Gipfel gut:

ggplot(daten) +
 aes(x = Punkte, fill = Geschlecht) +
 geom_histogram(bins = 25) +
 facet_wrap(~ Geschlecht) +
 scale_y_continuous(name = "Punkte") + ggtitle("Histogramm")
Histogramm
Histogramme zeigen bei beiden Geschlechtern zwei „Gipfel“

Fazit: Punktdiagramm informativer; Verteilungen beachten!

Ich gebe gern zu, dass die Artikelüberschrift etwas provokant zugespitzt wurde. Die hier verwendeten konstruierten Daten zeigen, dass Säulen- und Balkendiagramme für Mittelwerte auch dann wesentliche Informationen verdecken, wenn man die Streuung (hier: Standardabweichung) beachtet.

Im hier betrachteten Spezialfall von zweigipfligen Verteilungen schneiden Boxplots nur unwesentlich besser ab. Es empfiehlt sich, Daten gründlich zu untersuchen, bevor man sich für eine Darstellungsweise entscheidet. Punktdiagramme stellen eine noch selten anzutreffende, sehr informative Alternative dar, die auch statistischen Laien intuitiv zugänglich ist, da Originalwerte und nicht statistische Kennzahlen abgebildet werden. Histogramme können die Zweigipfligkeit ebenfalls darstellen, sind aber durch die Zusammenfassung der Einzeldaten in Klassen nicht ganz so direkt zugänglich, zudem ergeben sich je nach gewählter Klassenbreite zum Teil recht unterschiedliche Bilder.

Die Diagramme wurden mit R und dem ggplot2-Paket erstellt.

Gern unterstütze ich Sie mit Visualisierungen statistischer Daten für Firmen- und Vereinsberichte sowie Abschlussarbeiten.

R Zertifizierung: Machine Learning (DataCamp)

Nun ist auch der Machine Learning-Kurs von DataCamp abgeschlossen.

DataCamp: Machine Learning
DataCamp Zertifikat: Machine Learning

Es ging um die drei Themenbereiche Klassifikation, Regression und Clustering. Von maschinellem Lernen wird nur gesprochen, wenn ein Algorithmus ein Modell ermittelt, das auf andere Daten (z. B. künftige Beobachtungen) angewendet werden kann. Deskriptive Statistiken (häufigste Farbe, durchschnittliche Größe) zählen somit nicht zum maschinellen Lernen.

Einige Kursinhalte:

  • Gütemaße für Machine Learning-Modelle; Konfusionsmatrix
  • Trainings- und Testdaten
  • Overfitting (Überanpassung)
  • Der Kompromiss zwischen Bias und Varianz (bias-variance tradeoff)
  • Überanpassung (Overfitting)
  • Kreuzvalidierung
  • Entscheidungsbäume
  • KNN: K nearest neighbors bzw. K nächste Nachbarn
  • ROC-Kurven
  • Regressionsmodelle
  • Clusteranalysen: k-means und hierarchisch

Wie immer bei DataCamp war es eine gute Mischung aus erklärenden Videos und praktischen Übungen mit R-Code – auch wenn die Kursgeber nicht den spannendsten Vortragsstil pflegten.

R Zertifizierung: R Markdown – DataCamp

Da ich schon mit R Markdown gearbeitet hatte, war mir in diesem Kurs nicht alles neu:

DataCamp Zertifizierung: R Markdown

 

Themen waren unter anderem:

  • Einführung in die Markup-Sprache Markdown
    (auch HTML ist eine Markup-Sprache; Markdown ist speziell für R-Anwender und wesentlich einfacher und besser lesbar)
  • Mischen von Text, R-Code, Ergebnissen von statistischen Berechnungen sowie Diagrammen
  • Einbau von LaTeX-Formeln
  • Optionen beim Einbau von R-Codeschnipseln, z. B. echo, eval, results: Ausgabe des Codes oder der Ergebnisse unterdrücken
  • Berichtserstellung: Dateiformate
    Mit R-Markdown können Dokumente in den Formaten HTML, PDF und Word erstellt werden, zudem gibt es verschiedene Optionen für Präsentationen: PDF („output: beamer_presentation„) und HTML („output: ioslides_presentation“ oder „output: slidy_presentation„)
  • Interaktive HTML-Dokumente mit Shiny
  • Installation und verwendete Software

Bei der Verwendung von R Markdown ist RStudio besonders nützlich und erleichtert die Arbeit gegenüber der Verwendung von R ohne RStudio enorm. Mit RStudio werden automatisch die R-Pakete rmarkdown, knitr und pandoc installiert. Das mächtige pandoc sorgt im Hintergrund dafür, dass Word- und PDF-Dokumente erzeugt werden können.

Sie / Ihre Firma arbeiten mit R? Gern biete ich speziell für Ihre Bedürfnisse zugeschnittene Schulungen, auf Wunsch auch gern mit Ihren (Teil-)Daten bzw. für Ihre Anwendungsfälle. Sprechen Sie mich an!

R-Zertifizierung: ggvis – DataCamp

Neuer und weniger bekannt als ggplot2 ist das R-Paket ggvis. Es basiert ebenfalls auf der grammar of graphics, d. h. die Diagramme werden in Schichten aufgebaut, die sehr flexibel anpassbar sind. ggvis verbindet die Stärken von ggplot2 mit shiny und vega. Die Verknüpfung mit shiny ermöglicht interaktive Grafiken. Auch an diesem Paket hat Hadley Wickham mitgearbeitet, zusammen mit Winston Chang.

R-Zertifizierung: ggvis

Der Kurs begann mit einer Einführung in die grammar of graphics und knüpfte somit gut an die ggplot2-Kurse an. Ausgiebig wurde der „pipe operator“ %>% verwendet, der gut lesbare Syntax begünstigt. Man kann Argumente verketten („chaining“) und damit tief geschachtelte Klammerausdrücke vermeiden. Ein Knackpunkt bei der Anwendung von ggvis ist zudem die Unterscheidung zwischen „=“ und „:=„. Im ersten Fall („mapping“) greift ggvis auf Variablen im Datensatz zu, im zweiten Fall können feste Werte übergeben werden („setting“, z. B. Farbnamen). Auch Verknüpfungen zwischen ggvis und dplyr (group_by) wurden aufgezeigt.

Am spannendsten fand ich den Teil über die interaktiven Grafiken. Man kann sie direkt in R-Studio betrachten und die Einstellungen vornehmen, oder über shiny auf Webseiten einbauen.

Schließlich ging es noch um Anpassungen bei Achsenbeschriftungen, Legenden und Skalen sowie Farbgebung.

ggvis befindet sich noch in einem recht frühen Entwicklungsstadium (aktuell beginnt die Versionszählung noch mit 0.), es sind noch zahlreiche Änderungen zu erwarten.

Sie brauchen Unterstützung bei der Visualisierung Ihres Zahlenmaterials? Gern stehe ich zur Verfügung.

R-Zertifizierung: ggplot2 (2) – DataCamp

Damit ist der Fortsetzungskurs zum ersten Teil von Hadley Wickhams ggplot2-Paket ebenfalls abgeschlossen:

DataCamp: ggplot2 (2)
DataCamp Zertifikat: ggplot2 (2)

 

Hier ging es über rein beschreibende Darstellungen hinaus, indem auch statistische Funktionen in die Plots einbezogen wurden: u. a. Mittelwerte, Standardabweichungen, Konfidenzintervalle, Quantile, Residuen von Chi-Quadrat-Tests sowie lineare Modelle mit Glättungsfunktionen (Loess-Smoother).

Ein eigenes Kapitel widmete sich „Best Practices“ speziell zu den häufigsten Diagrammtypen (Kreis- und Balkendiagramme) sowie zu Heat Maps. Im abschließenden Anwendungsbeispiel wurde eine benutzerdefinierte Funktion entwickelt, um Mosaicplots zu erstellen.

Nicht alle Beispiele haben mich voll überzeugt, dennoch war der sehr praxisorientierte Kurs sehr hilfreich.

Weitere im Kurs verwendete R-Pakete: dplyr, ggthemes, reshape2 (für „melt“).

Sie brauchen Unterstützung bei der Visualisierung Ihres Zahlenmaterials? Gern stehe ich zur Verfügung.