Datenjournalismus mit R
R Statistik Tool

Die normale Recherche für einen Artikel läuft eigentlich immer nach dem gleichen Prinzip ab: Zunächst hat man eine Information, dann hinterfragt man diese mit Hilfe von Tante-Google. Beim Datenjournalismus ist dies nicht viel anders, nur dass die Fragen an Daten gestellt werden. Gerade die Stromwende neigt dazu sehr viele Daten zu produzieren: SmartMeter, Wetter, Lastgang,… . Mittels der kostenlosen Werkzeuges „R“  können statistische Auswertungen sehr einfach realisiert werden, denn es gibt immer eine Alternative zu Excel (welches ich persönlich nur noch zur Visualisierung verwende),

R-Project

Die Installation der Software sollte nicht sonderlich schwierig sein. Die Downloads für Windows,Linux,Unix und MacOS  finden sich auf jedem CPAN Mirror. Für den Anfang empfehle ich auf jeden Fall die RGUI. Einführungen gibt es sehr viele, da das Werkzeug mittlerweile in vielen Statistik-Vorlesungen verwendet wird. Um mit der Syntax und der Arbeit vertrauter zu wenden würde ich die Anleitung der ETH-Zürich verwenden. Etwas Auffrischung in Sachen Statistik und Analyse gibt es bei der Uni-Bielefeld.

Die Fragestellung

Um Fragen an Daten stellen zu können, müssen immer den Art und Umfang der Erhebung der Daten berücksichtigt werden. In den kommenden Wochen wird es hier im Blog zum Beispiel einen Beitrag über das Gradienten Problem im Deutschen Übertragungsnetz geben. Bei dieser Belastung handelt es sich um einen unerwarteten Ausschlag im Stromnetz, wie er bei einer Sturmböe im Windpark passieren könnte – oder beim Ausfall eines großen Kraftwerkes. Als Datenquelle könnten die ReDispatch Maßnahmen gelten, wie allerdings im Followup- Beitrag zu diesen Netzeingriffen beschrieben, gibt es gewisse Unklarheiten in den Quelldaten, welche einer Verwendung entgegenstehen.

Ein Gradienten-Problem könnte aber über die abgerufene Sekundärregelleistung (SRL) erkannt werden. Dabei handelt es sich um eine Ausgleichenergie, die zur Haltung der Netzfrequenz verwendet wird. Die Hypothese ist, dass bei der Zunahme des Gradienten-Problems die Abrufmengen vergrößern. Die Rohdaten kann man als CSV beim Informationsportal zur Regelleistung herunterladen.

Untersuchungsauftrag:
Vergleiche die Abrufmengen von Sekundärregelleistung für Januar-April 2012 und 2013.

Daten Import

R kommt bereits mit einer ganzen Anzahl von Variationen der read.table() Funktion, welche das Einlesen von CSV Dateien auch erlaubt. Für das Einlesen der Abrufmengen sind dennoch einige Parametrisierung und Konvertierungen notwendig.

read.rl<-function(file) {
 srl<-read.csv(file,sep=";",skip=5,header=FALSE,col.names=c("Datum","Zeit","NegMW","PosMW","Remark"),as.is=TRUE)
 col2cvt <- c('NegMW', 'PosMW')
 for (i in col2cvt){
 srl[[i]] <- as.character(gsub("\\.", "", srl[[i]]))
 srl[[i]] <- as.numeric(gsub("\\,", ".", srl[[i]]))
 }
 srl
}
read.srl<-read.rl
read.mrl<-read.rl

Zunächst wird eine Funktion definiert, die das Einlesen der Regelleistungs-CSV-Dateien übernimmt. Anschließend wird noch ein Alias definiert. Danach können die Daten sehr einfach als Matrix (Tabelle)  eingelesen werden:

feb12=read.srl("e:/data/srl_de/ABGERUFENE_SRL_BETR_IST-WERTE_20120201_20120228_Netzregelverbund_20130523-012353.csv")
; oder aus der Zwischenablage
feb12=read.srl("clipboard")

Erste Auswertung

Beim Einlesen wurde für jede Quelldatei eine einzelne Tabelle angelegt. Um diese Tabelle angezeigt zu bekommen kann man diese direkt aufrufen:

feb12

Die einzelnen Werte können ab diesem Zeitpunkt auch schon visualisiert werden

hist(feb12[,"NegMW"])

Verteilung Abrufgröße negative SRL - Februar 2012
Verteilung Abrufgröße negative SRL – Februar 2012

Einfache Statistik

Für die Beantwortung der Fragestellung („Gradienten Problem“) wird eine Summe über die negative und positive Abrufmenge für den gesamten Monat benötigt. Da wir für jeden Monat eine Tabelle haben, bietet sich auch hier das Anlegen einer Funktion an:

sum.abruf<-function(data) {
 sum(data[,"PosMW"],data[,"NegMW"],na.rm=TRUE)
}

Die gesamte Abrufmenge in MW lässt sich dann mit dem Aufruf der Tabelle als Parameter ermitteln:

sum.abruf(feb12)

Es sei an dieser Stelle angemerkt, dass es in den Quelldaten einige fehlende Werte gibt. Diese sollte man beachten, bevor man zum Beispiel den Februar 2012 mit dem Februar 2013 vergleicht.

Einen Vektor für die 4 Monate 2012 und 2013 lässt sich mit folgendem Syntax erstellen:

monate = c("Januar","Februar","März","April")

monate2012=c(sum.abruf(jan12),sum.abruf(feb12),sum.abruf(mar12),sum.abruf(apr12))

monate2013=c(sum.abruf(jan13),sum.abruf(feb13),sum.abruf(mar13),sum.abruf(apr13))

ergebnis=data.frame(monate,monate2012,monate2013)

In der Tabelle ergebnis befindet sich nun die Antwort auf die Frage, wie sich die Monatswerte im Jahresvergleich verändert haben. Da das Ergebnis schon etwas verwunderlich ist, soll es hier nicht weiter beleuchtet werden.

Zum Umgang mit „R“ sei nur soviel gesagt: Das Werkzeug ist sehr mächtig, daher auch manchmal etwas schwierig zu bedienen. Wenn man sich aber mit einfachen Fragestellungen an die Erkundung macht, dass kann man sehr gute Ergebnisse – in sehr kurzer Zeit – erzielen.

Den Beitrag "Schnelleinstieg: Energie-Datenjournalismus mir R offline Lesen:

Kommentar hinterlassen

<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong> 

benötigt