Inhaltlicher Überblick

  1. Reproduzierbarkeit von Datenanalysen/Datenmanagement
  2. R-spezifische Werkzeuge
    • Code
    • Code + Daten
    • Ausführbarer Code + verlinkte Daten
    • Wissenschaftskommunikation
  3. Gut in R integrierbare Werkzeuge
    • Versionierung mit Git
    • Make-like files
  4. Wie einsteigen?

Die interaktiven Folien können unter http://bit.ly/ZPID_17_Merk und deren Quellcode

unter https://github.com/sammerk/ZPID2017 abgerufen werden

Das Reproduzierbarkeitsspektrum

"Bewildering Technology Soup" (Lapp, 2015)

Bewildering Technology Soup (Lapp 2015). Eigene Darstellung.

Bewildering Technology Soup (Lapp 2015). Eigene Darstellung.

Tools: Reproduzierbarkeit \(\times\) Einstiegshürde

Reproduzierbarkeit vs. Einstiegshürde Eigene Darstellung.

Reproduzierbarkeit vs. Einstiegshürde Eigene Darstellung.

R und RStudio =

# Dokumentation der Analysen zum Manuskript "XYZ" ##################

## Import der nicht verfügbaren Daten ##
library(haven)
meine_daten <- read_spss("MEINE_und_nur_MEINE_vom_Hiwi_gecleanten_Daten.sav")

## Stichprobenbeschreibung
nrow(meine_daten)
table(mein_daten$sex)

## Instrumente
library(lavaan)
...

Daten einlesen in R = +

  • Mittlerweile liegen hervorragende Pakete für das Einlesen fremder/proprietärer Datenformate vor:
    • SAS, SPSS, Stata {haven} (Wickham & Miller, 2016)
    • Excel {readxl} (Wickham & Bryan, 2017)
    • Text {readr} (Wickham, Hester & Francois, 2017)
  • Das Lesen sehr großer Datensätze zeigt gute Performance mit den entsprechenden Paketen (z.B. {data.table} (Dowle & Srinivasan, 2017), {feather} (Wickham, 2016)).
  • Arbeit mit Remote-Datenbanken komfortabel möglich {dblyr} (Wickham, 2017).

Beispiel für +

# Dokumentation der Analysen zum Manuskript "XYZ" ##################

## Import der bei PsychData hinterlegten Daten  ##
library(haven)
meine_daten <- read_spss("PsychDatafile.sav")

## Stichprobenbeschreibung
nrow(meine_daten)
table(mein_daten$sex)

## Instrumente
library(lavaan)
...

RMarkdown + knitr = + +

  • Grundidee: knitr (Xie, 2015) verwebt
    • Text (formatiert durch die maximal einfache Auszeichnungssprache (markup language) RMarkdown (Allaire et al., 2017)),
    • ausführbaren Code und dessen Output
    • via pandoc (siehe Gandrud, 2014) zu .pdf .html .docx etc.
Screenshot: RMarkdown und dessen Outputformate

Screenshot: RMarkdown und dessen Outputformate

Beispiel für + +

Code-Beispiel

RMarkdown + Packrat = + + +

  • R-Skripte erzielen bereits ausführbaren Code mit verlinkten Daten.
  • RMarkdown erlaubt zusätzlich sog. "Literate Programming" mit einfachsten Mitteln.
  • Dennoch bleiben Probleme der Nicht-Reproduzierbarkeit:
Package-Updates. Abbildung: https://xkcd.com/234/ CC BY-NC 2.5

Package-Updates. Abbildung: https://xkcd.com/234/ CC BY-NC 2.5

Packrat

  • Packrat stellt ein Dependency-Management-Werkzeug zur Verfügung, welches eine eigenständige Bibliothek von R-Paketen und deren Versionen erstellt.
  • \(\Rightarrow\) Konservierung weiterer Teile des "Computational Environment".
  • Packrat ist unabhängig von RStudio konzipiert - mit RStudio aber deutlich "komfortabler" bedienbar.
<i>Packrat-Pane in RStudio. Eigene Darstellung</i>

Packrat-Pane in RStudio. Eigene Darstellung

Werkzeuge für offene Wissenschaft

Werkzeuge für offene Wissenschaft. Eigene Darstellung.

Werkzeuge für offene Wissenschaft. Eigene Darstellung.

Versionsmanagement und Kollaboration mit Git & Github

  • Git stellt ein sehr anspruchsvolles und sehr mächtiges Versionsmanagementwerkzeug dar:
    • Aufzeichnung des Verlaufs von Dateiversionen
    • Vergleich von Dateiversionen
    • Branches und Merges
  • Github, Bitbucket etc. erlauben Onlinedeposition und -kollaboration.
  • Git & Github sind sehr gut in RStudio integriert.

Beispiel für

Demonstration: Git in RStudio

RMarkdown + Packrat + Shiny = + + + +

  • RStudio hat eine One-Button-Publikations Funktion für statische R-Skripte und via RMarkdown generierte html-Files.
  • Einen interaktiven öffentlichen Zugang zu Forschungsergebnissen/Forschungsdaten erlauben
    • Notebooks (Adressaten: Forscher/innen, Werkzeuge: {RStudio-Notebooks}, Jupyter) und
    • Shiny-Apps (Adressat: Öffentlich, Werkzeug: {shiny}).
  • Notebooks erlauben den interaktiven Umgang von Code und Output.
  • Shiny (Chang, Cheng, Allaire, Xie & McPherson, 2017) erstellt html5-Formate die per Klick R-Input erzeugen und den Output rendern
    • Webpages
    • Dashboards
    • e-Books

Beispiele für + + + +

Code-Beispiele

Big Picture: Reproduzierbare und offene Forschung mit R und RStudio

Big Picture. Eigene Darstellung.

Big Picture. Eigene Darstellung.

Wie einsteigen?

  • Erfahrungsgemäß stellt die Verwendung von R die größte Hürde dar.
  • RMarkdown, knitr und pandoc sind dank RStudio wenigen Stunden lernbar (Halbtagesworkshop).
  • Alltägliche Verwendung
    • Lehre
      • Hausaufgaben als gerenderte RMarkdown-Files ausgeben und einsammeln.
      • Veranstaltungen (halb-)öffentlich und interaktiv dokumentieren.
    • Forschung
      • "Never touch your rawdata & avoid human interaction"-Maxime motiviert die Verwendung von RMarkdown, knitr und pandoc enorm.

Literatur

Allaire, J.J., Cheng, J., Xie, Y., McPherson, J., Chang, W., Allen, J. et al. (2017). rmarkdown: Dynamic Documents for R. Verfügbar unter: https://cran.r-project.org/package=rmarkdown

Chang, W., Cheng, J., Allaire, J.J., Xie, Y. & McPherson, J. (2017). shiny: Web Application Framework for R. Verfügbar unter: https://cran.r-project.org/package=shiny

Dowle, M. & Srinivasan, A. (2017). data.table: Extension of ‘data.frame‘. Verfügbar unter: https://cran.r-project.org/package=data.table

Gandrud, C. (2014). Reproducible research with R and RStudio (the R series). Chapman & Hall.

Lapp, H. (2015). A curriculum for teaching Reproducible Computational Science bootcamps. In. Dublin: BOSC 2015, Duke University.

Peng, R.D. (2011). Reproducible Research in Computing Science. Science, 334 (6060), 1226–1227. doi:10.1126/science.1213847.Reproducible

Wickham, H. (2016). feather: R Bindings to the Feather ’API’. Verfügbar unter: https://cran.r-project.org/package=feather

Wickham, H. (2017). dbplyr: A ’dplyr’ Back End for Databases. Verfügbar unter: https://cran.r-project.org/package=dbplyr

Wickham, H. & Bryan, J. (2017). readxl: Read Excel Files. Verfügbar unter: https://cran.r-project.org/package=readxl

Wickham, H. & Miller, E. (2016). haven: Import and Export ’SPSS’, ’Stata’ and ’SAS’ Files. Verfügbar unter: https://cran.r-project.org/package=haven

Wickham, H., Hester, J. & Francois, R. (2017). readr: Read Rectangular Text Data. Verfügbar unter: https://cran.r-project.org/package=readr

Xie, Y. (2015). Dynamic Documents with R and knitr (Band 29). CRC Press.