Reproducerbar forskning
Titlen på det 5. kursus i Data Science programmet på Coursera er “Reproducible Reseach” 1. Måske ville det være mere korrekt at kalde kurset enten Reproducible Data Analysis (RDA) eller Literate Statistical Programming (LST) fremfor Reproducible Research (RR).
I begrebet reproducerbar forskning ligger der vel både at man
- kan (gen-)beregne resultaterne og ikke mindst
- at man kan genskabe forsøget med samme konsistente resultat.
Kurset “Reproducible Reseach” handler alene om muligheden for at genberegne resultater, og derfor ville det være at foretrække med en lidt mere sigende kursustitel.
Reproducerbar data analyse
Der indgår (mindst) fire elementer i begrebet reproducerbar data analyse. Hvis det skal være muligt for andre at checke og kontrollere ens beregninger kræver det adgang til:
- Det rå datasæt
- Koden brugt til beregningerne
- Dokumentation af både datasæt og kode
Derudover skal man have en uafhængig både at
- distribuerede ovennævnte elementer på
Der er flere eksempler på websites som udbyder reproducerbar data analyse som en service. Prøv fx at kigge på LCAV Reproducible Research Repository.
Ideen om Literate Statistical Programming kommer fra Literate Programming som især er kendt fra Donald E. Knuths artikel om emnet. Den grundliggende ide er at kombinere maskinlæsbar programmeringssprog og menneskelæsbar tekst i et samlet dokument og så ved hjælp af to værktøjer ‘weave’ og ‘tangle’ kunne skabe enten et rent maskinlæsbart eller menneskelæsbart dokument.
Værktøjer
De centrale værktøjer i kurset er Git, Markdown og Knitr. De to første har jeg allerede omtalt i forbindelse med tidligere blog indlæg om data science specialiseringen.
Knitr
Knitr udvidelsesbibliotektet bygger på literate programming tankegangen. Man kombinere tekst skrevet i markdown med R kode. Når man så ‘knitr’ ens dokument får man ikke bare R koden med i output med og resultatet af at afvikle koden inkl fx plot og grafer. Man kan både generere output i HTML og PDF format.
RStudio understøtter knitr, men ikke som wysiwyg editor. Når man har tilføjet enten ny tekst eller R kode er det nødvendigt at “knitr’e” igen. Det kan i længden føles som en lidt tung proces. Hvis man hellere vil skrive i et mere interaktivt miljø kan det anbefales at installere udvidelsesbibliotektet editR. Men editR kan man have side-by-side editering og visning af det færdige resultat. EditR er fortsat under udvikling og ikke 100% stabil.
For en mere fuldstændig gennemgang af knitr henvises til [3].
Reproducerbare data
Hvis du har brug for tilfældige men alligevel reproducerbare data, så vil jeg anbefale at du tager et kig på udvidelsesbiblioteket Wakefield og ser på fx dette eksempel.
Hvis du vil læse mere om reproducerbar forskning kan jeg anbefale websitet Reproducible Research
Andre initiativer
Der findes andre områder end forskning, hvor man også interesserer sig for reproducerbare løsninger. Her er et eksempler hentet fra data-drevet journalistik
Hvis du bruger StackOverflow ved du allerede, at svarene bliver bedre jo mere præcis du selv er i stand til at formulere et spørgsmål og give et konkret eksempel. Det handler altså i bund og grund også om at kunne reproducere et eksempel. Næste gang du skal stille et R relateret spørgsmål, bør du tage et kig på udvidelsespakken repexp. Navnet repexp henviser til {repr}oducible {ex}ample, og er navngivet af Romain Francois på Twitter.
Referencer
[1] Reproducible Research with R and RStudio (Second Edition), Christopher Gandrud, CRC Press/Chapman & Hall, 2015. Man kan selv “reproducere”” denne bog via bogen GitHub side
[2] Implementing Reproducible Research, Victoria Stodden, Friedrich Leisch, Roger D. Peng, CRC Press/Chapman & Hall, 2014. Denne bog findes også i en online udgave på https://osf.io/s9tya/
[3] Dynamic Documents with R and knitr, Second Edition, Yihui Xie, Chapman & Hall/CRC The R Series, 2015.
Fodnoter
Please create issues at the Github repo Twitter.
Edit page on GitHub. Please help me to improve the blog by fixing mistakes on GitHub. This link will take you directly to this page in our GitHub repository.
There are more posts on the front page.
Content of this blog by Carsten Jørgensen is licensed under a Creative Commons Attribution 4.0 International License.