visualisiert. » How-To http://visualisiert.net Ein deutschsprachiges Blog über Visualisierungen und Infografiken. Endlich! Wed, 24 Dec 2014 04:24:50 +0000 de-DE hourly 1 http://wordpress.org/?v=4.1 Frage: Wie geht’s eigentlich dem Usenet? http://visualisiert.net/article/challenge-usenet/ http://visualisiert.net/article/challenge-usenet/#comments Thu, 12 Jan 2012 10:56:02 +0000 http://visualisiert.net/?p=768 Als große Fans des Usenets haben wir uns kürzlich gefragt, wie es eigentlich um die Mutter aller Foren (wenn man mal von Bulletin Board Systems/BBS absieht) bestellt ist. Denn die schlechten Nachrichten haben sich in der jüngeren Vergangenheit gehäuft. Im Mai 2010 hat die Duke University, Betreiber eines der zwei ersten News-(bzw. NNTP-)Servern, vermeldet, dass Sie den Betrieb ihres Servers einstellen werden. Viele Internet-Provider haben das gleiche getan, unter anderem am 1. April 2011 die Deutsche Telekom.

Dabei bietet das Usenet Vorteile, die kein Nachfolge-System in dieser Form verbindet. So muss man beispielsweise als Nutzer nicht erst nach passenden Webforen suchen und sich dann dort einen Account einrichten, um mitreden zu können. Im Unterschied zu Webforen beruht das Usenet auf einem standardisierten Protokoll (NNTP), sozusagen ein “API first” Ansatz. Nutzer haben die Wahl, mit welchen Clients sie auf Newsgroups zugreifen, oder ob sie selbst sich hilfreiche Tools schreiben möchten, die Ihnen helfen, Informationen zu filtern. Von der dezentralen Struktur und der geringen Anfälligkeit für Zensur mal ganz zu schweigen.

Wie geht es dem Usenet nun, da einige Provider ihren NNTP-Dienst quittiert haben?

Da das Usenet nicht an einer zentralen Stelle “verwaltet” wird, ist es nicht ganz einfach, aussagekräftige Daten hierzu zu sammeln. Beispielsweise dürfte es sehr schwierig sein, festzustellen, wie viele NNTP-Server weltweit oder auch nur landesweit im Einsatz sind. Die Entwicklung einer solchen Zahl im Vergleich zu vergangenen Zeiträumen nachzuzeichnen, dürfte noch deutlich schwieriger sein.

Ebenfalls schwierig wird es sein, die lesende Nutzung (Anzahl der Zugriffe, Anzahl der lesenden Nutzer etc.) von Newsgroups in Erfahrung zu bringen bzw. deren Entwicklung nachzuzeichnen. Die Daten hierfür liegen, wenn überhaupt, in den Logs zahlreicher Internet-Provider versteckt.

Ein möglicher Ansatz ergibt sich über Google Groups. Google hat im Jahr 2001 das Usenet-Archiv von DejaNews übernommen und archiviert Newsgroups zurück bis 1981. Jede Newsgroup hat eine Info-Seite, auf der auch die Zahl der (im Archiv vorhandenen) monatlichen Beiträge seit Bestehen der Gruppe angezeigt wird.

Für die Gruppe de.alt.rec.digitalfotografie sehen die Zahlen, simpel visualisiert, so aus:

Man kann deutlich erkennen, dass die Post-Frequenz in dieser Gruppe etwa zwischen 2003 und 2005 auf dem Höhepunkt war und seitdem stark gesunken ist. Die Geschwindigkeit der Abnahme scheint dabei rückläufig zu sein – die Kurve flacht nach hinten ab.

Und das, obwohl sich die Digitalfotografie in Deutschland kaum einer abnehmenden Beliebtheit erfreuen dürfte. Eher im Gegenteil.

Zu den Zahlen von Google Groups ist anzumerken, dass Google Groups nicht alle Beiträge speichert. Nutzer können, wenn Sie über einen geeigneten News-Client und das nötige Know-How verfügen, in ihren Beiträgen einen Header setzen, der die Beiträge von der Archivierung ausschließt. Es ist jedoch nicht davon auszugehen, dass der Rückgang der Beitragszahlen dadurch auch nur annährend zu erklären ist.

Wie sieht der Trend in anderen Newsgroups aus?

Wir können die Betrachtung leicht ausdehnen, aber es gibt nirgends eine verbindliche Liste aller existierenden Newsgroups. Denn jeder Server-Betreiber kann auf seinem Server beliebige Newsgroups einrichten. Andere Serverbetreiber können, sofern die Newsgroups öffentlich sind, entscheiden, ob sie diese ebenfalls übernehmen (spiegeln) wollen oder nicht. So wie es also nahezu unmöglich ist, eine komplette Liste aller News-Server auszustellen, wird man auch nicht ermitteln können, welche Newsgroups es gibt.

Aber: für bestimmte Hierarchien des Usenet gibt es Bekanntmachungen, welche “offiziell” anerkannten Newsgroups es gibt. Für die de.*-Hirarchie, also den deutschsprachigen Bereich des Usenet, wird diese Liste regelmäßig in der Gruppe de.admin.news.announce veröffentlicht. Sie umfasste zuletzt 426 Gruppen. Eine solche Liste gibt es auch in news.announce.newsgroups für die sogenannten “Big 8″, die acht Usenet Bereiche comp, humanities, news, rec, sci, soc und talk (Beispiel vom 15.12.2011). Dort sind 1994 Gruppen vertreten.

Wie kommen wir nun über Google an die Beitragszahlen zu so vielen Newsgroups? Sicher nicht von Hand. Python ist hier eine große Hilfe. Wir fangen mal mit den 426 deutschen Gruppen an. Nach etwa 30 Minuten liegen uns die Ergebnisse vor. Sparen wir uns das Scrapen der Zahlen für die gesamten Big-8-Hierarchien für einen späteren Zeitpunkt auf…

 

Der Plot zeigt die summierte Anzahl der monatlichen Beiträge aller de-Newsgroups. Es ergibt sich ein ähnliches Bild, wie es sich bereits bei Betrachtung einer einzigen Newsgroup angedeutet hat. Nur gibt es nun Zahlen, die noch weiter in die Vergangenheit reichen. Und bei Betrachtung der Summe sieht es noch eher so aus, als hätte das deutsche Usenet nicht etwa eine mehrere Jahre andauernde Hochphase gehabt, sondern einen sehr kurzen Höhepunkt (Ende 2001), von dem an es bergab ging. Wie ist das zu erklären? Nach einer natürlichen, organischen Entwicklung sieht das jedenfalls nicht aus. Ist es möglich, dass Google Groups nach genau 10 Jahren viele, aber nicht alle, Beiträge aus dem Archiv entfernt? Das kann man möglicherweise in ein bis zwei Monaten mit einer erneuten Erhebung feststellen, wenn sich die Zahlen Januar 2002, Februar 2002 etc. drastisch verringern sollten. Aber das ist nicht unser eigentliches Interesse.

Deutlich wird, dass die Beitragszahlen für das gesamte Deutsche Usenet deutlich zurück gehen. Das gesamte Beitragsaufkommen liegt nun etwa beim Niveau von 1997 (falls man den Zahlen von Google Groups für diesen lange zurück liegenden Zeitraum vertrauen kann).

Wer findet Antworten?

Heißt das nun, dass das Usenet im Sterben liegt? Oder gilt das nur für das deutsche Usenet? Und gibt es selbst dort Unterschiede? Welche Themen funktionieren noch im Usenet und welche nicht? Welche Methoden gäbe es, sich diesen Fragen zu nähern und Antworten zu finden?

Das dürft Ihr selbst erforschen. Betrachtet es als Herausforderung (englischsprachige Blogs würden nun das Wort “Challenge” benutzen und fast so etwas wie einen Wettbewerb daraus machen). Wir wollen einfach nur ein Gespräch mit Euch führen. Wir wollen wissen, welche Ansätze Ihr wählt, und auf welche Antworten Ihr kommt. Es gibt weder einen Einsendeschluss, noch einen Gewinn.

Quellcode und Daten zum Download

Wir haben unser Scraper-Python-Script und die Liste der deutschen Newsgroups und der Big-8-Gruppen in einem Github gist abgelegt:

https://gist.github.com/1564623

Das Script liest die deutsche Gruppenliste (grouplist_de.txt) aus und erhebt dazu die Beitragszahlen in einer Datei postcounts_de.csv. Es sollte Euch leicht fallen, es so anzupassen, dass Ihr es mit einer anderen Liste füttert.

Das Ergebnis der Datensammlung, also die monatlichen Beiträge aller offiziellen de.* Newsgroups, gibt es hier als Download (CSV-Daten, gezippt).

Ein Hinweis zum Scrapen: Es verstößt vermutlich gegen irgendwelche Nutzungsbedingungen von Google Groups und führt, wenn man es zu exzessiv durchführt, auch mit großer Wahrscheinlichkeit zu Fehlermeldungen und Sperren seitens Google Groups. Jeder einzelne handelt hier eigenverantwortlich und ist angehalten, die Nutzungsbedingungen von Google Groups zu beachten.

]]>
http://visualisiert.net/article/challenge-usenet/feed/ 0
R und RStudio Einführung und Installationsanleitung http://visualisiert.net/article/r-intro-installation/ http://visualisiert.net/article/r-intro-installation/#comments Mon, 17 Oct 2011 16:19:01 +0000 http://visualisiert.net/?p=611 In unserer Artikel-Warteschlange liegen einige Entwürfe, die sich speziell auf die Arbeit mit R beziehen. Da vermutlich nicht jeder, den wir hiermit erreichen wollen, R schon kennt oder nutzt, wollen wir hier eine Lanze für R brechen und die Schwelle für den Zugang ein wenig senken. Nach dem Lesen dieses Artikels könnt Ihr hoffentlich folgendes bestätigen:

  • Ihr wisst, was R ist und warum es wert ist, sich damit zu beschäftigen.
  • Ihr habt RStudio erfolgreich installiert.
  • Ihr habt erste kleine Tests erfolgreich nachvollzogen.
  • Ihr seid gewappnet, um weitere Tutorials mitzumachen.

Wenn Ihr jetzt schon keine Lust mehr habt, weiter zu lesen, ist das in Ordnung. Spätestens wenn die ersten Artikel, die sich unserer Pipeline befinden, einmal veröffentlicht werden, werden wir Euch immer wieder auf diesen hier verweisen. Denn sonst habt Ihr ja keine Ahnung, worum es geht. :)

Was ist R?

R ist ein Programm und eine Programmiersprache für die statistische und visuelle Analyse von Daten. R ist freie Software, Teil des GNU Projekts, und wird seit vielen Jahren (das Archiv der Mailingliste reicht zurück bis 1997) aktiv weiterentwickelt.

R steht kompiliert für Linux, Mac OS X und Windows zur Verfügung. Um R hat sich ein reichhaltiges Ökosystem aus freien Erweiterungen gebildet, in dem sich Lösungen für zahlreiche Standardprobleme finden und die im Handumdrehen installiert werden können.

Programmiersprache?

Ja, ganz recht. R verfolgt den Ansatz, dass alle Funktionalitäten wie z.B. der Import von Daten, die Manipulation von Daten und die Visualisierung, durch Programmcode aufgerufen werden. Damit lassen sich in R auch Programme schreiben, die komplexere Vorgänge wiederholbar machen.

Damit unterscheidet sich die Arbeit in R recht deutlich beispielsweise von Tabellenkalkulationen wie Excel. Vom Nutzer wird eine höherer Wille zur Abstraktion verlangt. Dafür wird dieser auch mit einem Funktionsumfang belohnt, der sich ständig erweitert und der in vielen Bereichen Anwendungen wie Microsoft Excel weit überlegen ist. Ganz zu schweigen davon, dass R die Möglichkeit bietet, selbst Erweiterungen zu schreiben.

Was kann R nicht?

Wenn R so toll ist, warum machen wir dann nicht einfach alles damit? Nun, ein paar Sachen macht R eben dann doch nicht so, dass es in jedem Fall allen Ansprüchen gerecht werden kann. Ein Aspekt ist, dass Visualisierungen aus R gut statisch als Pixel- oder Vektorgrafiken abgespeichert werden können. Möchte man aber eine interaktive Anwendung realisieren, bei der zum Beispiel durch Nutzerinteraktion bestimmt wird, wie eine Visualisierung auszusehen hat, lässt sich R nur sehr schwer integrieren. Zusätzlich kann man sagen, dass die Darstellungsqualität beispielsweise eines Scatterplots zwar den meisten wissenschaftlichen Anwendern genügt, aber nicht die höchsten Ansprüche eines Informationsdesigners erfüllt.

Wofür braucht man R denn nun?

R ist ein hervorragendes Werkzeug für die schnelle Erkundung von Daten, aber auch für die tiefere Analyse und das Verständnis von Zusammenhängen. Damit dient R der Annäherung an ein Gebiet genau so wie der tieferen Untersuchung. Will man beispielsweise auf Basis eines Datensatzes eine interaktive Visualisierung erstellen, dann kann es sehr sinnvoll sein, sich die Daten einmal in näher in Form von konventionelleren Darstellungen anzusehen. Und hier eignet sich R in vielen Fällen hervorragend.

Installation

Damit wir uns nun etwas handfester mit R befassen können, müssen wir es zunächst mal installieren.

Um uns die Arbeit mit R so angenehm wie möglich zu machen, installieren wir zusätzlich zu R auch RStudio. RStudio ist ein GUI für R, das einige nützliche Zusatzfunktionen bietet. Wie R, steht auch RStudio für Windows, Linux (Ubuntu, Debian, Fedora) und Max OS X bereit.

Angehenden Nutzern von RStudio stehen zwei verschiedene Versionen der Software zur Verfügung. Einerseits die Desktop-Variante, die normalerweise allen Nutzern gerecht werden sollte, die die Herrschaft über ihren eigenen Rechner haben und über ausreichende Ressourcen verfügen. Alternativ gibt es auch eine Server-Version, die sich besonders für Arbeitsgruppen und Thin-Clients eignet. Die Server-Version läuft auf Linux und wird über ein Web-Interface bedient.

Wir erläutern hier die Installation der Desktop-Version ausführlich für Mac OS X und Ubuntu Linux. (Wenn Lust hat, uns in dieser Form auch die Installation unter Windows zu dokumentieren, veröffentlichen wir das hier gerne ebenfalls. Bitte als Kommentar posten.)

Installation von RStudio Desktop auf Mac OS 10.7

  1. Wir wählen auf cran.r-project.org/mirrors.html einen Download-Server in der Nähe, z.B. mirrors.softliste.de/cran/.
  2. Wir folgen dem Link Download R for MacOS X.
  3. Wir laden den Installer (aktuell R-2.13.2.pkg) herunter.
  4. Nach dem Herunterladen führen wir den Installer aus und folgen den Anweisungen. Damit ist R installiert.
  5. Nun installieren wir RStudio. Wenn wir am Mac auf rstudio.org/download/desktop gehen, bekommen wir direkt den einzig sinnvollen Download zuoberst angezeigt. Aktuell ist das RStudio-0.94.110.dmg
  6. Nach dem Herunterladen des Disk Images öffnen wir dieses durch Doppelklick.
  7. Wir ziehen per Drag-and-Drop das Applikationsicon “RStudio” in den Ordner “Anwendungen” bzw. “Applications”.
  8. Das war’s. Nun können wir RStudio über Spotlight, Launchpad oder was auch immer aufrufen.

Installation von RStudio Desktop auf Ubuntu Linux

  1. Zuerst prüfen wir mal, ob R zufällig schon installiert ist. Dazu öffnen wir ein Terminalfenster (Anwendungen / Zubehör / Terminal) und führen den Befehl “which R” aus. Wenn wir hierzu keine Antwort bekommen, muss R installiert werden (weiter mit Schritt 2). Kommt eine Ausgabe wie “/usr/bin/R”, dann ist R bereits vorhanden und es geht weiter mit Schritt 9.
  2. Wir gehen auf cran.r-project.org/mirrors.html und wählen einen Download-Server in unserer Nähe.
  3. Das führt uns beispielsweise zu mirrors.softliste.de/cran/, wo wir den Link Downlaod R for Linux anklicken.
  4. Wir wählen den Ordner Ubuntu.
  5. Als nächstes wählen wir unsere Ubuntu-Version (die findet man unter “System > Info zu Ubuntu” im GNOME-Menü heraus), z.B. natty.
  6. In dem Ordner scrollt man bis zu den Dateien, deren Name mit “r-base-core” anfängt und mit “.deb” aufhört. Dort hat man auch die Qual der Wahl zwischen einer 32bit-Version (Kürzel “i386″) und 64bit (“amd64″). Wir entscheiden uns für r-base-core_2.13.2-1natty0_amd64.deb, weil unser Ubuntu ein 64-bit-System ist.
  7. Nach abgeschlossenem Download der Datei navigieren wir im GNOME-Fenster zu der heruntergeladenen Datei, klicken sie mit der rechten Maustaste an und wählen aus dem Kontextmenü die Option “Mit Ubuntu Software-Center öffnen”.
  8. Im Software-Center werden Details zum heruntergeladenen Paket angezeigt. Optional können Erweiterungen dazu ausgewählt werden. Dann klicken wir auf “Installieren”.
  9. Nun laden wir RStudio Desktop herunter. Dazu gehen wir auf rstudio.org/download/desktop, wo uns freundlicherweise passende Downloads empfohlen werden. Wir klicken den Download-Link für die Ubuntu-/Debian-Version.
  10. Auch hier klicken wir nach abgeschlossenem Download mit der rechten Maustaste auf das Datei-Icon und wählen “Mit Ubuntu Software-Center öffnen”
  11. Im Fenster des Software-Centers klicken wir auf “Installieren”.
  12. Das sollte es gewesen sein. Wir können nun RStudio über “Anwendungen / Software-Entwicklung / RStudio” starten.

Wer danach das Programm startet, dem präsentiert sich RStudio so:

Erste Schritte

Im RStudio Programmfenster auf der linken Seite befindet sich die Konsole. Hier geben wir alle Anweisungen an R ein.

Auf der rechten Seite des Programmfensters befinden sich mehrere Panele, deren Bedeutung wird jetzt noch nicht zwingend kennen müssen.

Wir brauchen Beispieldaten. R liefert zahlreiche Datensammlungen von Haus aus mit. Um alle verfügbaren anzuzeigen, geben wir in der Konsole einfach diesen Befehl ein und bestätigen mit Enter/Return:

> data()

(Achtung: Die spitze Klammer vor dem Befehl darf nicht mit eingegeben werden. Sie dient hier nur dazu, anzuzeigen, wo ein Kommando beginnt.)

Als Ergebnis öffnet sich oberhalb der Konsole dieses Panel mit dem Titel “R data sets”:

In der Liste befinden sich Datensätze unterschiedlichster Komplexität. Wir laden einen eher einfachen namens “airquality”. Dabei handelt es sich offenbar um Ozon-Messwerte aus New York.

> data(airquality)

Nach dem Bestätigen durch Enter/Return erscheint im Workspace-Panel oben rechts eine neuer Eintrag mit dem Namen “airquality” und der Beschreibung “153 obs. of 6 variables”.

Das Workspace-Panel enthält alle Objekte, mit denen wir im weiteren Verlauf arbeiten können. Objekte haben Namen, und das neu angelegte Objekt heißt “airquality”. Unter diesem Namen können wir es von nun an verwenden. Die Beschreibung sagt uns, dass es sich um eine zweidimensionale Datenstruktur mit 153 Beobachtungen von jeweils 6 Variablen handelt. Mit anderen Worten: Es ist eine Tabelle mit 6 Spalten und 153 Zeilen.

Aber wie sieht diese Tabelle tatsächlich aus? Ein Klick auf den Eintrag führt zur Anzeige der gesamten Daten im oberen linken Panel.

Jede der sechs Spalten ist mit dem Namen einer Variable beschriftet. Die einzelnen Zeilen enthalten entweder numerische Were oder das kürzel “NA”, was für “not available”, also ein leeres Feld, steht.

Wenn wir uns nun die Konsole ansehen, können wir sehen, dass dort ein Befehl “View(airquality)” hinzugekommen ist, den wir nicht selbst eingegeben haben. Diesen Befehl hat RStudio ausgeführt, als wir auf den Eintrag im Workspace-Panel geklickt haben. “View()” ist eine der Standardfunktionen von R, um eine Datenstruktur anzuzeigen. RStudio leitet diese Ausgabe in eine übersichtliche Tabelle um.

Nun wollen wir ein wenig über unsere Daten herausfinden. R bietet mehrere eingebaute Funktionen, die uns hierfür behilflich sein können. Probieren wir doch mal

> summary(airquality)

Als Ausgabe erhalten wir, diesmal direkt in der Konsole, diese Zusammenfassung:

Die summary-Funktion liefert uns für jede der sechs Variablen in airquality den kleinsten und größten Wert, das erste und dritte Quartil, den Median, den Durchschnittswert und die Anzahl der NA-Werte. So können wir beispielsweise sehen, dass die Ozon-Messwerte zwischen 1 und 168 (vermutlich µg/m³) und der Median bei 31,5 liegen.

Um mehr über die Verteilung oder die Zusammenhänge zu erfahren, können wir uns die Ozonwerte als Histogramm darstellen lassen. Dazu führen wir diesen Befehl in der Konsole aus:

> hist(airquality$Ozone)

Die Dollar-Schreibweise “airquality$Ozone” bedeutet, dass wir die Variable mit dem Namen “Ozone” aus der Datenstruktur mit dem Namen “airquality” auswählen.

Das Ergebnis:

Wir möchten nun wissen, wie sich Temperatur und Ozonwerte im Vergleich verhalten. Wir können ganz einfach beide Variablen in einem Scatterplot darstellen:

> plot(airquality$Temp, airquality$Ozone)

stellt auf der X-Achse die Temperatur und auf der Y-Achse den Ozonwert dar. Das sieht so aus:

Der Scatterplot zeigt, dass bei höheren Temperaturen auch die Ozonwerte höher sind.

Wie geht es weiter?

Ihr wart hoffentlich in der Lage, diese Einführung nachzuvollziehen. Damit sollte Euch die Tür für weiteres Arbeiten mit R offen stehen. Hier noch ein paar Tipps, wie Ihr weiteren Input und Hilfestellung finden könnt.

Die Help-Funktion in R bietet Euch jederzeit über die Konsole von R Zugriff auf die Erläuterung aller Funktionen. Gebt beispielsweise help(plot) an der Konsole ein, um mehr über die Parameter der plot-Funktion zu erfahren.

Die Website Quick-R ist ein umfangreiches R-Tutorial in englischer Sprache. Wenn man die eigenwillige Navigation mal akzeptiert hat, kann man hier viele gute und hilfreiche Beispiele finden. Dort erfahrt Ihr zum Beispiel, wie Ihr eigene Daten in R importieren könnt und Erweiterungen installiert.

Zum Stichwort Datenimport: Ich persönlich finde das RMySQL Modul unglaublich hilfreich, da ich Daten häufig lokal in MySQL ablege. RMySQL erlaubt das Importieren von Datenstrukturen anhand beliebiger SQL-Statements. Die Installation geht einfach an der Konsole mit “install.packages(‘RMySQL’)”, danach zur Verwendung Aktivieren mit “library(‘RMySQL’)”.

Wer nicht allzu schnell an die Grenzen von R stoßen möchte, was Visualisierung mit Graphen betrifft, oder einfach nur ästhetisch sensibel ist, dem hilft das Package ggplot2. Darin sind viele zusätzliche Funktionen zur Erstellung von Graphen enthalten, sowie einige Standardfunktionen von R noch mal “in schön” implementiert.

Das soll nun wirklich reichen.

Wenn Ihr Feedback oder andere Kommentare hierzu loswerden wollt, nur zu! Wir freuen uns über jeden Beleg dafür, dass Ihr bis hier hin drangeblieben seid!

]]>
http://visualisiert.net/article/r-intro-installation/feed/ 7