R wie in: Reproduzierbar
Auswertung von Daten aus Field Desktop mit idaifieldR
1Field Desktop (oder: iDAI.field ) ist der Dokumentations-Datenbankclient für Feldforschungsprojekte des DAI und findet auf zahlreichen Ausgrabungen inner- und außerhalb des DAI Anwendung[1]. Der Client ermöglicht flexible Projektkonfigurationen bei einer in groben Zügen gleichbleibenden Datenstruktur und ist damit für die unterschiedlichsten archäologischen Projekte geeignet. Der wahre Nutzen von Datenbanken besteht in den Möglichkeiten ihrer Auswertung. Die Stärke einer Datenbank ist es zwar auch, das traditionelle, individuelle Notizbuch in eine digitale und kollaborative Form zu überführen, aber v. a. Informationen über einzelne Objekte an einem Ort in einer strukturierten und quantitativ erfassbaren Art und Weise nach festgelegten Standards zu bündeln.
2Field Desktop erlaubt mit dem geordneten Export der Daten in csv-Tabellen bereits die vermutlich häufigste Form der Datenauswertung: Das Erstellen von Diagrammen aus Exporten in Tabellenverarbeitungsprogrammen und anderer statistischer Software, wie z. B. SPSS oder PAST . Ein zentraler Kritikpunkt an diesen Programmen ist jedoch ihr inhärenter Status als »black box« und damit einhergehend die Schwierigkeiten, mit ihnen hergestellte Graphiken oder Analysen zu reproduzieren, da ein großer Teil der Arbeit nach dem Export aus dem nur schwer dokumentierbaren Auswählen von Zeilen, Spalten und dem Klicken von Buttons besteht[2]. Die Statistikprogrammiersprache R bietet die Lösung für dieses Problem und ist bereits seit langer Zeit in vielen Wissenschaften, die regelmäßig mit statistisch auszuwertenden Daten hantieren, bekannt und beliebt.
R wie in: Reproduzierbar
3R ist eine Skriptsprache und lässt sich in einem geeigneten Programm Zeile für Zeile ausführen. Die Arbeit mit R lässt sich dadurch sehr interaktiv gestalten: Wie bei einem Klick in Excel ist bei Bedarf das Ergebnis jeder einzelnen Zeile sofort sichtbar. Damit ist R auch für Anwender:innen ohne Programmiererfahrung gut geeignet. Die Verschriftlichung der einzelnen Arbeitsschritte garantiert, dass der Weg zum Ergebnis jederzeit nachvollziehbar ist und vor allem auch beim Hinzufügen neuer Daten sicher und schnell reproduziert werden kann. Für die Verwendung von R in allen archäologischen Disziplinen gibt es zahlreiche Beispiele. Für den Einstieg besonders empfehlenswert ist David Carlsons »Quantitative Methods in Archaeology Using R« (2017)[3], das mit einer grundlegenden Einführung in R beginnt.
4Es ist nicht überraschend, dass die meisten Hilfestellungen und Projekte nicht auf gedrucktem Papier, sondern vornehmlich in digitaler Form zu finden sind: Besonders das von Ben Marwick herausgegebene » How To Do Archaeological Science Using R «[4] bündelt viele Anleitungen und Tipps, und der von selbigem zusammengestellte » Cran Task View: Archaeology «[5] gibt Interessierten schnell zahlreiche Hinweise auf die Möglichkeiten von R und die Bandbreite an archäologischen Projekten, die R verwenden. Marwick setzt sich öffentlichkeitswirksam für die weitere Verbreitung von R und reproduzierbarer Methodik in der Archäologie ein. In einem 2017 erschienenen Artikel demonstriert er die Arbeitsweise und ihre Vorteile anhand einer Fallstudie[6]. Besonders in der deutschsprachigen Archäologie sind die Arbeitsgemeinschaft Initiative for Statistical Analysis in Archaeology in Kiel (ISAAK) [7] und ihre Mitglieder nennenswert, die bereits seit 2016 Workshops anbieten und R-Pakete sowie Tools in anderen Programmiersprachen entwickeln.
5Als ein Hub für archäologische Projekte und Publikationen, in denen die Verwendung von R eine große Rolle spielt, agiert die auf der CAA 2018 gegründeten special interest group » Scientific Scripting Languages in Archaeology «[8]. Die Publikationen der Mitglieder zeichnen sich durch die Beigabe von Supplementen in Form von Datentabellen, Code-Repositorien oder Erläuterungen aus, wie beispielhaft – aber keineswegs ausschließlich – an einigen Beiträgen und GitHub[9]-Profilen sichtbar wird[10].
iDAI.field und R?
6Mit den Optionen, die der iDAI.field-Mikrokosmos bereits bietet, ist es offensichtlich, dass das DAI die Wichtigkeit dieser Themen erkannt hat und hier einen Schritt zu mehr Transparenz, Offenheit und Reproduzierbarkeit in der Wissenschaft geht: Field-Datenbanken können bspw. vollständig über iDAI.field Web publiziert werden und bieten so den direkten Zugriff auf Rohdaten von Ausgrabungen und auch der Client selbst ist vollständig Open Source. Warum nicht den nächsten logischen Schritt anschließen und auch die Auswertung der Datenbestände transparent und reproduzierbar gestalten?
7Die Verwendung von Daten aus Field Desktop/iDAI.field in R ist mit dem Export und Import von Tabellen problemlos möglich. Mit dem manuellen Export existiert hier jedoch erneut ein nicht leicht reproduzierbarer Schritt der Datenauswahl, in dem Kontext und Kategorie der zu exportierenden Daten festgelegt werden können und müssen. Gleichzeitig ist diese Herangehensweise nicht so dynamisch, wie die Auswertung archäologischer Kontexte es manchmal erfordert. Für Zwischenberichte müssen immer wieder neue und doch gleiche Auswertungen aus einem durch Grabungs- und Fundbearbeitungskampagnen regelmäßig aktualisierten Datenbestand erstellt werden. Wenn sich nach weiterer Arbeit an den Befunden der Datenbestand geändert hat, muss erneut der gleiche Export ausgeführt und die alte Datei ersetzt werden.
idaifieldR!
8Das Ziel von idaifieldR ist es, diesen Schritt zu eliminieren und eine flexiblere und dynamischere Auswertung der Projektdatenbanken zu ermöglichen. Mit nur wenigen Zeilen lässt sich eine vollständige Datenbank oder eine gezielte Auswahl mit idaifieldR nach R importieren.
9idaifieldR greift dafür auf den CouchDB/PouchDB-Server zu, den Field Desktop im Hintergrund verwendet. Der direkte Import aus der Datenbank bringt jedoch einige Probleme mit sich: Die Daten – ursprünglich im JSON-Format, das vielen sicher aus der Verwaltung der Projektkonfigurationen bis zur dritten Version von iDAI.field bekannt ist[11] – werden als sog. Liste nach R importiert. Listen in R können stark verschachtelt werden und der Umgang mit ihnen ist nicht immer intuitiv. Deswegen bietet idaifieldR neben dem Import Funktionen, mit denen sich die Daten etwas formatieren und bereinigen lassen, wodurch die Weiterarbeit mit R vereinfacht wird.
10Im Folgenden soll der Workflow mit idaifieldR kurz anhand einiger weniger Beispiele aus Milet veranschaulicht werden[12]. Für die Demonstration wird idaifieldR in der Version 0.3.2 verwendet, die auf GitHub erhältlich ist. Leser:innen, die bisher noch keine Erfahrung mit R haben, wird empfohlen, zunächst R und RStudio zu installieren und sich einige Grundlagen der Sprache anzueignen. Als Hilfestellung sind bspw. die Screencasts von ISAAKiel [13] oder das Buch » YaRrr! The Pirate’s Guide to R «[14] empfehlenswert. Im Supplement zu diesem Artikel befindet sich neben dem Artikel selbst eine detailliertere Einführung zu idaifieldR, die auch die Installation des Paketes und viele der verfügbaren Funktionen und ihrer Optionen abdeckt.
11Die Datei, aus der dieser Artikel generiert wurde, ist ein RMarkdown-Bericht. Dieses Format erlaubt es, in R Text und Auswertung in einer Datei zu kombinieren, sodass ein gesamter Artikel nach Aktualisierung des Datenbestandes bspw. erneut generiert werden kann. Für alle Plots werden im Artikel nur die nötigsten Zeilen angegeben, während die nähere Gestaltung im Hintergrund passiert. Sie kann in der entsprechenden Datei im Supplement nachgelesen werden.
Importieren der nötigen Daten
12Zunächst verbinden wir uns mit der Datenbank und generieren einen Index, der alle resources mit einigen wenigen Angaben enthält, die in der Projektdatenbank existieren[15]:
library(idaifieldR)
conn <- connect_idaifield(pwd = "passwort", project = "milet")
index <- get_field_index(conn, verbose = TRUE, gather_trenches = TRUE)
13Eine resource ist ein einzelner Datensatz. Jedes ausgefüllte Formular wird als resource gespeichert. Jede resource hat eine Kategorie (category), die der Art des Formulars entspricht, einen Bezeichner (identifier) und eine UUID (im Index: UID). Die UUIDs werden in der Datenbank im Hintergrund als Namen einer jeden resource verwendet, da sie immer einzigartig sind. Wir können den Index verwenden, um im Folgenden die Datenbank zu filtern oder uns zu helfen, spezielle Anfragen an die Datenbank zu senden. Näheres ist in dem Tutorial zur Verwendung von idaifieldR zu finden, das Teil des Supplementes zu diesem Artikel ist.
14Als nächstes importieren wir alle Datensätze aus dem Areal der Michaelskirche aus dem milesischen Datenbankprojekt (Abb. 1). In der Struktur der Field-Datenbank für Milet benutzen wir die Resource »Ort« als Behältnis für zusammengehörige Schnitte, weswegen wir unseren query entsprechend gestalten können:
mk_raw <- idf_index_query(conn, uidlist = index,
field = "Place",
value = "MK_Michaelskirche")
15Hiermit haben wir nun alle Datensätze aus dem Bereich der Michaelskirche in R zu unserer freien Verfügung. Im Folgenden nehmen wir für viele Schritte das R-Paket dplyr zu Hilfe, das die Formatierung und Selektion von Daten erheblich vereinfacht. Wir können die Funktionen von idaifieldR mit dem sog. Pipe-Operator aus dplyr (und anderen Paketen) benutzen, um die Daten etwas aufzubereiten und leichter nutzbar zu machen:
library(dplyr)
mk <- mk_raw %>%
simplify_idaifield(uidlist = index) %>%
idaifield_as_matrix() %>%
as.data.frame() %>%
type.convert(as.is = FALSE)
16Genauere Informationen zu diesem Prozess sind in der Dokumentation sowie in dem Tutorial im Supplement enthalten. Im Grunde endet hiermit die Arbeit von idaifieldR. Das Paket dient dazu, die Daten aus Field Desktop nach R zu importieren und aufzubereiten. An den folgenden Beispielen sollen lediglich einige sehr grundlegende Möglichkeiten der Datenauswertung gezeigt werden.
Das Grabungsareal »Michaelskirche« in Milet
17Im Ort »MK_Michaelskirche« sind alle Schnitte enthalten, die im Bereich der Michaelskirche bzw. des Dionysostempels in Milet angelegt wurden (Abb. 1). Hier wurde erstmals unter Theodor Wiegand am Beginn des 20. Jahrhunderts gearbeitet. Die Funde in der Datenbank stammen jedoch aus den Grabungen von Wolfgang Müller-Wiener zwischen 1973 und 1977[16]. Sie wurden von 2017 bis 2020 von der Verfasserin dieses Artikels im Rahmen ihrer Dissertation aufgenommen[17].
library(ggplot2)
library(forcats)
p <- mk %>%
ggplot(aes(x = fct_infreq(relation.isRecordedIn), fill = category)) +
geom_bar() +
labs(x = "Schnitt", y = "Anzahl", fill = "Kategorie")
19Das Ergebnis dieser Zeilen ist das Balkendiagramm in Abb. 2.
Keramik aus dem Areal der Michaelskirche
20Schauen wir uns also im Folgenden an, welche Art von Keramik im Areal der Michaelskirche angetroffen wurde. Hierfür filtern wir den gesamten Datenbestand aus dem Areal der Michaelskirche nach der Kategorie (category) »Keramik« (Pottery) und lassen ein Balkendiagramm anzeigen, das uns die Keramikklasse (potteryGroup) auf der x-Achse und die Anzahl von Datensätzen auf der y-Achse darstellt. Die Farbe symbolisiert dabei die eingetragene Funktionskategorie (functionalCategory) eines jeden Keramik-Objektes.
p <- mk %>%
filter(category == "Pottery") %>%
ggplot(aes(x = fct_infreq(potteryGroup), fill = functionalCategory)) +
geom_bar() +
labs(x = "Keramikgruppe", y = "Anzahl", fill = "Funktion")
21In dem aus diesen Zeilen resultierenden Balkendiagramm in Abb. 3 sehen wir neben Schwarzfirniskeramik , die einen auffällig großen Teil des gesamten Spektrums ausmacht, eine eher geringe Menge von schwarz - und rotfiguriger Keramik. Die beiden Gattungen wurden bereits 2016 von Norbert Kunisch vollständig veröffentlicht und die Datensätze geben seine Einschätzungen zu diesen Objekten wieder[18]. Da von ihm publizierte Objekte im Datensatz entsprechend markiert wurden, können wir den Datenbestand schnell dahingehend filtern und uns ein Diagramm der einzelnen Datierungsspannen (Abb. 4) ausgeben lassen:
p <- mk %>%
filter(grepl("Kunisch 2016", dating.source)) %>%
mutate(label = paste0(dating.source,
" (", relation.liesWithin, ")")) %>%
ggplot(aes(color = potteryGroup)) +
geom_linerange(aes(xmin = dating.min, xmax = dating.max,
y = fct_reorder(label, -dating.min)),
linewidth = 2) +
labs(x = "Datierung", y = "Katalognummer (und Befund)", color = "Keramikgruppe")
22In Abb. 4 lässt sich schnell beobachten, dass unter den wenigen Fragmenten schwarz- und rotfiguriger Keramik im Areal der Michaelskirche ein Großteil in das 5. Jahrhundert v. Chr. datiert wurde. Sollten in Zukunft neue Fragmente hinzukommen oder sich die Datierung ändern, ließe sich dieses Diagramm zusammen mit dem gesamten Bericht auf Knopfdruck aus den Daten in Field Desktop neu generieren.
23Bei Bedarf kann der gesamte Datensatz oder eine Auswahl bspw. als csv-Tabelle oder in anderen Formaten gespeichert und zur Verfügung gestellt werden:
mk %>%
filter(grepl("Kunisch 2016", dating.source)) %>%
select(identifier,
relation.liesWithin, relation.isRecordedIn,
potteryGroup, vesselForm,
dating.min, dating.max, dating.source) %>%
write.csv("../data/MK_rf_sf_pottery_Kunisch_2016.csv",
fileEncoding = "UTF-8")
24Die Datei enthält aus allen Datensätzen innerhalb des Ortes »MK_Michaelskirche« in der Datenbank der Miletgrabung, in denen »Kunisch 2016« als Quelle für die Datierung angegeben ist, wenige grundlegende Informationen: den Bezeichner, den Befund und den Schnitt, die Keramikklasse, die Gefäßform sowie die Datierung und die Katalognummer. Die Tabelle ist im Supplement im entsprechenden Ordner enthalten. Über diesen Weg lassen sich schnell größere Datenmengen auswählen, bereinigen oder umformatieren und erneut nach Field Desktop importieren. Gleichzeitig ist die Möglichkeit, gezieltere Anfragen zu stellen und zu exportieren ggf. für die Beigabe in Publikationen – wie hier demonstriert – oder regelmäßigen Arbeitsberichten besonders hilfreich. Bisher ist dies über den csv-Export in Field Desktop ohne umständliches Zusammenfügen mehrerer Tabellen nicht möglich.
Metadaten
25Durch den direkten Zugriff auf die Datenbank haben wir gleichzeitig die Möglichkeit zu sehen, wer wann an unseren Datensätzen gearbeitet hat. Diese Information lässt sich für jeden einzelnen Datensatz abrufen. Mit der get_idaifield_docs()-Funktion können wir alle Datensätze aus der Datenbank importieren. Eine Legende wird in diesem Fall (Abb. 5) absichtlich unterschlagen, um nicht die Namen aller einzelnen Nutzer:innen anzuzeigen. Eine Farbe repräsentiert eine Nutzer:in.
mil <- get_idaifield_docs(conn)
date_created <- lapply(mil, function(x) x created)
date_created <- do.call(bind_rows, date_created)
p <- date_created %>%
mutate(date = as.Date(date)) %>%
ggplot(aes(x = date, fill = user)) +
geom_histogram() +
labs(x = "Erstellungsdatum", y = "Anzahl")
26Wie zu erwarten, zeigt das mit diesem Code produzierte Diagramm (Abb. 5), dass die meisten Datensätze während der Grabungssaison in den Sommermonaten angelegt werden. Auf diesem Level scheint es wie Spielerei, aber der Zugriff auf Metadaten kann beim Lösen von Fragen und Problemen sowie für Arbeitsberichte durchaus hilfreich sein. So lässt sich auch schnell und ohne Aufwand zusammenfassen, wie viele und welche Arten von Funden im Zeitraum einer Grabungskampagne von welchem Team aufgenommen worden sind.
Potenzial und Weiterentwicklung
27Die hier gezeigten Beispiele dienen lediglich als Demonstration, wie schnell sich Ergebnisse aus der Datenbank visualisieren lassen. Mit R und idaifieldR lässt sich das gesamte Potenzial der Projektdatenbanken in iDAI.field ausnutzen. Mit nur wenigen Zeilen Code können die Datensätze importiert, formatiert und visualisiert werden. Mit R ist es möglich, eine Vielzahl von Analysen durchzuführen, die sich jedoch besser in Werken zu statistischer Auswertung in der Archäologie unterbringen lassen, als an dieser Stelle. Darüber hinaus ist R ein mächtiges Werkzeug zum Ausbessern und Bereinigen von unsystematischen Daten. idaifieldR öffnet die Tür für die flexible, quantitative Auswertung und Pflege der Datenbank sowie für die Publikation ausgewählter Datenbestände.
28Bisher wird idaifieldR von der Verfasserin alleine entwickelt und mit dem milet-Datenbankprojekt verwendet. Aber um das volle Potenzial auszuschöpfen und das Paket wirklich als nützliches Tool für den Import von Daten aus Field Desktop zu etablieren, ist die Unterstützung und Zusammenarbeit von Interessierten unerlässlich. Wenn sich über diese Plattform Nutzer:innen finden sollten, die das Paket auch mit anderen Projektkonfigurationen nutzen und testen wollen, wäre das ein großer Gewinn. Erfahrungen und Rückmeldungen von Kolleg:innen sind für die Weiterentwicklung an diesem Punkt entscheidend. Interessierte sind jederzeit herzlich willkommen, über GitHub an dem Projekt teilzuhaben oder auch Probleme aufzuzeigen.
Abstracts
Zusammenfassung
R wie in: Reproduzierbar
Auswertung von Daten aus Field Desktop mit idaifieldR
Mit iDAI.field bietet das DAI eine umfassende und leicht zu bedienende Datenbanklösung für archäologische Feldforschungsprojekte. Das hier vorgestellte R-Paket »idaifieldR« ermöglicht den flexiblen Import von Datenbeständen aus lokalen iDAI.field-Projektdatenbanken nach R. Mit R lassen sich Graphiken und Berichte aus dem Datenbestand dynamisch generieren, Daten bereinigen und exportieren sowie das Ergebnis reproduzierbar publizieren. Die Verwendung und das Potenzial von idaifieldR werden im Artikel anhand einiger Beispiele aus Milet demonstriert.
Schlagwörter
Datenbanken, Datennachnutzung, Dokumentation Fund/Befund, Elektronische Datenverarbeitung, Feldforschung, Forschungspraktiken, Grabungsberichte, Online-Publikationen, Statistik
Abstract
R as in: Reproducible
With iDAI.field, the DAI offers a comprehensive and easy-to-use database solution for archaeological field research projects. The R package 'idaifieldR' presented here enables the flexible import of datasets from local iDAI.field project databases into R. With R, graphics and reports can be generated dynamically from the dataset, data can be cleaned and exported, and the result can be published reproducibly. The use and potential of idaifieldR are demonstrated in the article using some examples from Miletus.
Keywords
Databases, Reuse of Data, Documentation of Findings, Electronic Data Processing, Field Research, Research Practices, Excavation Reports, Online Publications, Statistics

R wie in: Reproduzierbar
iDAI.field und R?
idaifieldR!
Importieren der nötigen Daten
Das Grabungsareal »Michaelskirche« in Milet
Keramik aus dem Areal der Michaelskirche
Metadaten
Potenzial und Weiterentwicklung
Abstracts