Zum Inhalt springen

KnitR

Aus Wikiversity

Einleitung

[Bearbeiten]

KnitR ist ein Paket für RStudio, das

  • Textverarbeitung und
  • Ausführung von eingebettetem Programmcode (Code Chunks)

unterstützt.

Ausgabeformate

[Bearbeiten]

Die Erstellung von Textverarbeitungsdokumenten ODT, DOCX, ... , PDF, Präsentationen in LaTeX, RevealJS, DZSlides, ... mit Echtzeit-Einbettung von Daten und Diagrammen auf Basis von statistischen und numerischen Analysen wird mit KnitR in unterschiedlichen Ausgabeformaten ermöglicht. Die interne Verwendung von PanDoc erlaubt viele weitere Ausgabeformate.

Anwendungsgebiete

[Bearbeiten]
  • Berichtsgenerierung auf Basis von Echtzeitdaten,
  • Dynamische Publikation, die wie bei einer "statische" wissenschaftlichen Veröffentlichung eine Datenanalyse durchführt und dann die Analyseergebnisse in dem Dokument interpretiert.
  • Nutzung von Monitoringdaten in den Umweltwissenschaften (Gewässerbelastung) und die Erstellung eines dynamischen Reports, der zu jeder Zeit die aktuellen Daten mit einbezieht.

Beispiel - Börsenkurse dynamisch auswerten

[Bearbeiten]

So können z.B. aktuelle Börsenkurse abgerufen, innerhalb von R analysiert und abhängig von der Analyse Phrasen und Ergebnisse z.B. in den Text implementiert werden. Das Paket KnitR wird oft innerhalb RStudio als grafische Benutzeroberfläche zum Aufruf von Befehlen und Skripten für die zugrundeliegende Statistik-Software R verwendet (siehe KnitR für Details).

Von der Befehlszeile aus können durch die Verarbeitung eines R-Markdown-Dokuments automatisch aktuelle Berichte generiert und in in der laufenden Bearbeitung die aktuellen Datenquellen (z.B. Überwachungsdaten) in der statistischen oder numerischen Analyse ausgewertet werden.

Wenn die Lernenden den R-Code im Lerndokument einsehen können, können sie in der Statistiksoftware selbstständig aktiv werden. Darüber hinaus können Leser für die Veröffentlichung von Forschungsinhalten in Wikiversity[1]

  • die Ergebnisse reproduzieren,
  • von der Methodik lernen,
  • den R-Code auf ihre eigenen Daten anwenden,
  • prüfen, ob die Algorithmen für den Versuchsplan geeignet sind.


Aufgabe für die Lernenden

[Bearbeiten]
  • Installieren Sie RStudio und das Paket KnitR, erstellen und bearbeiten Sie Ihr erstes KnitR-Dokument.
  • Erkunden Sie das Konzept des Scientific Hackathon und erklären Sie, warum KnitR als Entwicklungsumgebung für entscheidungsunterstützende Produkte verwendet werden kann!
  • Analysieren Sie den COVID-19 Ausbruch und die Anforderungen an dynamische Aktualisierungen im Jahr 2020. Was sind die Anforderungen und Einschränkungen zur Schaffung eines dynamischen Berichtsmechanismus auf der Grundlage von KnitR und R für die COVID-19-Epidemien?

Lernmodule

[Bearbeiten]
  • Den grundlegenden Arbeitsablauf von KnitR verstehen
  • Installation von KnitR
  • Standard-Fallen und deren Lösungen
  • Pfade - Übersicht bei den Dateien
  • Hello World Beispiel
  • Allgemeine Information zur Verwendung von KnitR
  • (Vorlagen) Vorlagen aus Textdateien können verwendet werden, um diese für Übungsblätter mit maßgeschneiderten Aufgaben zu nutzen.
  • (Erstes KnitR-Dokument) erstes KnitR-Dokument erzeugen in R/RStudio.
  • (Laden und Speichern) Laden und Speichern von Daten. Dies ist für die Erstellung maßgeschneiderten Aufgabenblätter relevant.
  • (Computer Algebra in R) für den Einsatz bei der dynamischen Erzeugung von Übungsblättern ist es in Kontext der Mathematik hilfreich, ein Computer-Algebra-System zur Verfügung zu haben. Diese Lerneinheit zeigt, wie eine solche Integration in R möglich ist.
  • (Punktesummen) Schüler:innendaten zu einem Test oder Klassenarbeit mit Punkte für 3 Aufgaben werden geladen und die Punktesumme berechnet (z.B. für eine Klausurergebnis).
  • (Automatische Notenberechnung) Eine automatische Notenberechnung berechnet in Abhängigkeit von einer Bestehensgrenze die Note auf der Basis von Klausurergebnissen in einer CSV-Datei.
  • (Aufgaben und Aufgabenbeziehungen) Darstellung von Aufgabenbeziehungen und deren Nutzung für individualisierte Aufgabenblätter.
  • (Einzelaufgaben als Dateien) Einzelaufgaben als Dateien sind sinnvoll und beim Aufgabenaustausch lediglich die Dateien tauschen muss, aber die R-Markdown-Datei nicht mehr verändern muss.
  • (Bedingte Ausgabe von Texten) Bedingte Ausgabe von Texten behandelt die Grundelemente von dynamisch erstellten Dokumenten, die von logischen Variablen abhängen. Damit ist z.B. das Hinzufügen von schwierigeren Aufgaben oder das Ergänzen von Hilfen für das Aufgabenblatt gemeint.
  • (Iteration für die Aufgabenblatterstellung) Eine Iteration wird bei der Erstellung von individualisierten Aufgabenblättern verwendet, um bei wiederholter Durchführung der Aufgabenblatterzeugung für jede Schüler:in eine eigenes Aufgabenblatt zu erzeugen (d.h. in einem KnitR-Prozess z.B. 32 unterschiedliche Aufgabenblätter auf der Basis von 32 Schülerdatensätzen erzeugt.

Kompilierung einer knitR-Quelldatei

[Bearbeiten]

Eine knitR-Datei kann in die angegebenen Ausgabeformate kompiliert werden, indem Sie rmarkdown::render(<FILENAME>) über die R-Konsole ausführen.

Einige externe KnitR Tutorials

[Bearbeiten]

Wiki zu Abschriftenkonvertierung mit PanDoc

[Bearbeiten]

Das OpenSource-Tool PanDoc wird als das "Schweizer Taschenmesser" der Dokumentenkonvertierung bezeichnet. Nehmen wir an, wir haben ein KnitR-Dokument einer wissenschaftlichen Arbeit, das die KnitR-Codeschnipsel zur Verarbeitung der analysierten Daten enthält.

  • Konvertieren Sie das Markdown-Dokument der Arbeit mit PanDoc-Online Converter in ein MediaWiki-Dokument.
    • Erstellen Sie ein Beispieldokument mit dem Knitr-Paket in RStudio und speichern Sie die R-Markdown-Datei mit der Erweiterung Rmd auf Ihrer Festplatte.
    • Kopieren Sie den Inhalt Ihres R-Markdown-Dokuments nach PanDoc-Online Converter,
    • wählen Sie Markdown (pandoc) als Eingabeformat,
    • wählen Sie MediaWiki als Ausgabeformat,
    • drücken Sie den Konvertierungs-Knopf und analysieren Sie die generierte MediaWiki-Syntax des Textes.
  • Die R-Code-Chunks für die Analyse der Daten (z.B. aus der CSV-Datei eines Tabellenkalkulationsdokuments geladen) werden in eine <code>--Umgebung konvertiert.
  • Dieses konvertierte KnitR-Dokument wird zusammen mit den wissenschaftlichen Arbeiten im WikiJournal (z.B. WikiJournal of Medicine) gespeichert. Wurde die Datenabfrage auf die gleiche Weise durchgeführt, wird die Anwendung des KnitR-Dokuments mit den neuen Daten auf die gleiche algorithmische Weise durchgeführt. Dieser KnitR-Ansatz trägt zu einem Workflow für eine reproduzierbare Wissenschaft bei.

Workflow für KnitR-Backend in Verbindung mit Wikiversity/Wikipedia

[Bearbeiten]

Der folgende Arbeitsablauf ist in Wikiversity derzeit nicht implementiert. Mit dieser Wiki-Ressource lernen Sie die Workflow-Analogie zwischen KnitR und den zukünftigen Vorteilen einer KnitR-ähnlichen Implementierung für die wissenschaftliche Veröffentlichung von dynamisch generierten Lernressourcen in Wikiversity kennen:

==My Section==
this is text in wikiversity. Now we calculate the covariance of two vectors x and y dynamically. The covariance is 
<dyncalc language="R" src="https://r-backend.example.com">
   x <- rnorm(100)
   y <- 3*x + rnorm(100)
   cor(x, y) 
</dyncal>
Now we create a scatter plot of the data 
<dyncalc language="R" src="https://r-backend.example.com">
   {r scatterplot, fig.width=8, fig.height=6}
   plot(x,y)
</dyncal>
Now we create the text output depending on the analysis of the data.
<dyncalc language="R" src="https://r-backend.example.com">
  if (cor(x, y) > 0) {
    print("The covariance of x and y is a positive number.")
  }
</dyncal>

Nach der Verarbeitung des Wikiversity-Dokuments mit der Angabe des src-Attributs im R-Backend könnte das Ergebnis sein:

==My Section==
this is text in wikiversity. Now we calculate the covariance of two vectors x and y dynamically. The covariance is 0.93612
Now we create a scatter plot of the data 
[[File:Scatterplot9923400384204.png]]
Now we create the text output depending on the analysis of the data.
The covariance of x and y is a positive number.

Die empfohlene Umgebung für dynamische Berechnungen wird in einer Tag-Umgebung platziert, genau wie der Mathe-Tag für mathematische Ausdrücke.

  • Der eingekapselte Inhalt im math-Tag wird für die Ausgabe gerendert.
  • Der eingekapselte Inhalt im dyncal-Tag wird zur Berechnung oder zur Erstellung eines Streudiagramms an ein Backend übergeben.

Der eingekapselte Code ist der echte R-Code, der in R oder RStudio funktioniert. Der Arbeitsablauf für R/KnitR kann im R-Tutorial von K. Broman[2] gefunden werden. Der R-Code erzeugt Vektoren mit Zufallszahlen und berechnet die Kovarianz. Der R-Code sollte für Wikiversity-Seiten nach einer Codeänderung standardmäßig verarbeitet werden (Serverlast für das R-Backend). Als weitere Option kann der Lernende die Quelle über eine API downloaden und das KnitR offline auf dem mobilen Gerät erstellen. Die Wikiversity-Community wird entscheiden, ob dies eine mögliche Option ist, die in eine Lernumgebung aufgenommen werden kann, um die Analyse von Daten und deren Interpretation zu untersuchen.

  • Die Dokumentsprache wird das Standard Wiki Markup sein, auch bekannt als Wikitext oder Wikicode. Er besteht aus der Syntax und den Schlüsselwörtern, die von der MediaWiki-Software zur Formatierung einer Seite verwendet werden (z.B. verwendet in Wikipedia, Wikiversity, OLAT,...).
  • R-Code-Blöcke werden von einem R-Backend erkannt und interpretiert oder ein Verweis auf ein versioniertes R-Skript wurde in ein Wiki-Dokument/einen Wiki-Artikel eingefügt, und jeder gefundene Verweis führt zu einem Lesen-Update des Wiki-Artikels, wenn Daten, Skript oder Dokument aktualisiert werden. Diagramme sind z.B. immer noch PNG-Dateien in Wikimedia, die auf eine Art und Weise importiert werden, die den meisten Autoren der Wiki-Community bekannt ist. Der Unterschied zwischen einem Standard-Wiki-Dokument und einem Wiki-Dokument mit R-Code-Bausteinen besteht darin, dass bei jeder Aktualisierung von Daten oder Aktualisierung des Skripts das R-Skript erneut aufgerufen wird und eine neue Version der Ausgabe (Diagramme als PNG-Dateien, Anzahl, dynamische Textelemente) erstellt wird. Dieses Konzept wird im Wesentlichen für mathematische Formeln in MediaWiki von TexVC[3] bzw. die Math Extension for MediaWiki[4] ebenfalls. Die LaTeX Quellen werden analysiert und in Bilder, MathML, umgewandelt, die in einem Browser angezeigt werden können.
  • SageMath ist ein weiterer potenzieller Kandidat als Backend, der die numerische und statistische Analyse "on the fly" in einer Lernressource durchführt. Die Vorteile sind enorm, insbesondere wenn auch Lernende und Autoren beteiligt sind, da eine Lernaufgabe in SageMath vom Lernenden selbst durchgeführt werden kann und die Diagramme und Karten für die jüngsten Ereignisse im Dokument sichtbar sind, ohne dass die Diagramme/statistischen Ergebnisse immer wieder mit den neuesten Daten aktualisiert werden müssen. Das verfügbare Software-Paket innerhalb von SageMath ist riesig und R ist ein Paket in der SageMath-Paketliste.
  • PanDoc könnte verwendet werden, um Wiki-Code in Markdown für die Verarbeitung mit dem KnitR-Paket zu konvertieren.

Aufgaben

[Bearbeiten]

Im vorherigen Abschnitt wurde der Arbeitsablauf eines integrierten Ansatzes von KnitR ausgearbeitet. Da dieses Konzept noch nicht als Erweiterung im MediaWiki implementiert ist, kann der Workflow nicht direkt mit Code Chunk für mathematische Berechnungen im MediaWiki der Wikiversity durchgeführt werden. Es ist aber möglich, den Workflow im Allgemeinen kennen zu lernen:

Siehe auch

[Bearbeiten]

Referenzen

[Bearbeiten]
  1. WikiJournal of Medicine - Eine Open-Access-Zeitschrift ohne Publikationskosten - Über ISSN: 2002-4436 www.WikiJMed.org Häufigkeit: Fortlaufend seit: März 2014 Herausgeber: Wikimedia Foundation
  2. Karl Broman, KnitR in a Nutshell - (Zugriff am 14.08.2007) - http://kbroman.org/knitr_knutshell/pages/Rmarkdown.html
  3. Schubotz, M. (2013) verwendet, um Mathematik in Wikipedia durchsuchbar zu machen. arXiv preprint arXiv:1304.5475.
  4. Schubotz, M., & Wicke, G. (2014). Mathoid: Robustes, skalierbares, schnelles und zugängliches mathematisches Rendering für Wikipedia. In intelligenter Computer-Mathematik (S. 224-235). Springer, Cham.
  5. Quantum Geographic Information System (QGIS) - Open Source Software-Paket für Linux, Windows, Mac (2017) - LTR 2.18.11 Zugang 2017/08/14 - https://www.qgis.org/en/site/forusers/download.html
[Bearbeiten]

<include></include>