Elegante R-Programmierung mit purrr::map und genisteten Datensätzen

2016 machte Hadley Wickham eine Idee populär, von der er zunächst selbst nicht sicher war, ob sie gut ist: genistete Datensätze (nested data frames). Das Prinzip ist einfach: Eine Spalte eines Datensatzes kann selbst ein Datensatz sein. Was zunächst umständlich oder verwirrend klingt, kann zum mächtigen Werkzeug werden – vor allem, wenn man viele gleich … „Elegante R-Programmierung mit purrr::map und genisteten Datensätzen“ weiterlesen

Länderfinanzausgleich: 30 Jahre in einer animierten Grafik (1988 – 2018)

Wie kann man die Beträge, die die Bundesländer im Rahmen des Länderfinanzausgleichs zahlten oder erhielten, in einer Grafik darstellen, sodass Veränderungen im Zeitverlauf deutlich werden? Hier eine animierte Grafik, die den Zeitraum von 1988, also kurz vor der Wende, bis 2018 abbildet: Länderfinanzausgleich: Entwicklungen 1988 bis 2018 In diesen 30 Jahren gab es mehrere spannende … „Länderfinanzausgleich: 30 Jahre in einer animierten Grafik (1988 – 2018)“ weiterlesen

R-Code beschleunigen: Schleifen vs. Vektorisierung vs. Lookup-Tables

Kurzfassung:R erlaubt dem Anwender, vergleichsweise schnell Analysecode zu schreiben, da die formalen Anforderungen gering sind. Dafür gilt R nicht zu unrecht als vergleichsweise langsam hinsichtlich der Code-Laufzeit. Wir vergleichen drei Varianten, einem Datensatz mit Skat-Karten die Werte der Spielkarten zuzuordnen. Vektorisierter Code ist dabei um Längen schneller als eine Schleife. Eine noch schnellere Variante, ein … „R-Code beschleunigen: Schleifen vs. Vektorisierung vs. Lookup-Tables“ weiterlesen

Objektorientiertes Programmieren mit R: S3-Klassen

Die Open-Source-Software R ist ein großartiges Werkzeug zur Datenanalyse. Zahlreiche statistische Verfahren und Visualisierungen können mit wenigen Codezeilen erstellt werden. Dafür steht eine Vielzahl an Funktionen zur Verfügung. Funktionales Programmieren und Objektorientiertes Programmieren Automatisiert man solche Analysen, so bewegt man sich im Bereich des Funktionalen Programmierens. Für Datenanalysen ist das eine gute Wahl. Liegt der … „Objektorientiertes Programmieren mit R: S3-Klassen“ weiterlesen

Programmieren mit R: Alles, was passiert, ist ein Funktionsaufruf

R ist eine Implementierung der Programmiersprache S, die in den 1970er Jahren von John Chambers bei Bell Labs entwickelt wurde. R wurde ab 1992 von Ross Ihaka und Robert Gentleman geschrieben und ab 1993 verbreitet; seit 1997 gibt es das R Development Core Team, dem auch John Chambers angehört. Von Chambers stammt folgendes Zitat, das … „Programmieren mit R: Alles, was passiert, ist ein Funktionsaufruf“ weiterlesen

R lernen mit Hands-On Programming with R von Garrett Grolemund

Wer R lernen will, hat eine Vielzahl von Büchern zur Auswahl – zumindest, wenn englischsprachige Bücher in Frage kommen. Es gibt auch auf Deutsch einige Einführungen (z. B. R kompakt von Daniel Wollschläger), doch der englischsprachige Markt ist deutlich größer. Eine sehr praxisorientierte Einführung stammt von Garrett Grolemund: Hands-On Programming with R. Garrett Grolemund arbeitet … „R lernen mit Hands-On Programming with R von Garrett Grolemund“ weiterlesen

Zuweisung in R: <- oder =

Zuweisungen in R werden üblicherweise mit dem Zuweisungs-Operator <- ausgeführt: a <- 3 a [1] 3 Manchen Anwendern mag das Gleichheitszeichen vertrauter sein – es funktioniert ebenfalls: a = 4 a [1] 4 Parameter-Übergabe mit Gleichheitszeichen: na.rm = TRUE Bis vor kurzem dachte ich noch, der Zuweisungspfeil wäre eben üblich in R – konnte aber … „Zuweisung in R: <- oder =“ weiterlesen

Machine Learning-Algorithmen verstehen: Interaktionseffekte

Machine Learning-Algorithmen zu verstehen ist eine Herausforderung. Mit dem folgenden Text möchte ich einen Beitrag dazu leisten, indem ich ein Spezialthema betrachte: Wie gehen verschiedene Machine Learning-Algorithmen mit Interaktionseffekten um? Folgende Machine-Learning-Algorithmen werden betrachtet: Lineare Regression GAM = Generalized Additive Model KNN = K nächste Nachbarn = k nearest neighbors Ein einzelner Entscheidungsbaum (rpart) Ein … „Machine Learning-Algorithmen verstehen: Interaktionseffekte“ weiterlesen

Kreuzvalidierung: Was schief gehen kann und wie man es besser macht (p > n)

Datensätze mit mehr Variablen als Fällen sind eine besondere Herausforderung für die Datenanalyse: p > n, p für predictors, Prädiktoren; n für die Stichprobengröße. Klassische Verfahren wie die lineare Regression sind unter diesen Bedingungen rechnerisch nicht lösbar. Die Daten: p > n Hier ein Beispiel: biomarker.Rda enthält 90 Fälle (Beobachtungen) von 2000 unabhängigen Variablen – … „Kreuzvalidierung: Was schief gehen kann und wie man es besser macht (p > n)“ weiterlesen

Animierte Visualisierungen: Treemaps zum US-Haushaltsdefizit und zum Strommix in Deutschland

Manche Kennzahlen in unserer verrückten Welt wachsen exponentiell. In vielen Fällen zählen Staatsschulden und Haushaltsdefizite dazu. Oft werden solche Zusammenhänge in Liniendiagrammen dargestellt. Hier möchte ich eine alternative Darstellung vorschlagen: animierte Treemaps. Anstieg des US-Haushaltsdefizits nach Präsident: Animierte Treemap Hier geht es um einen visuellen Eindruck davon, wie stark das US-Haushaltsdefizit in den letzten Jahren … „Animierte Visualisierungen: Treemaps zum US-Haushaltsdefizit und zum Strommix in Deutschland“ weiterlesen