Ich wollte nur [...] und dann ist das Universum explodiert.

Projects
Books
Archive
About









    Permalink
  1. Statistiken | Using R – The Nerd Way

    Momentan interessiere ich mich für R. Die Programmiersprache für Statistiken genießt aktuell ziemliche Popularität.

    Persönlich habe ich (in der kurzen Zeit, seitdem ich es benutze und kenne) R als eine Sprache kennengelernt, die nur begrenzt für coole Sachen benutzt wird. Kann an meiner Deklaration von “cool” liegen oder das sich die coolen Sachen bisher meiner Kenntnis entzogen. Aber mal davon abgesehen dass Statistiken immer interessant sind, wird R anscheinend meistens von irgendwelchen Sales-Druiden oder Marketing-Dudes verwendet, die Daten aus der DB ihres Online-Shops kratzen lassen um festzustellen wie viele Rosa Einhörner letzten Monat verkauft worden sind.

    Nunja, sagen wirs so. Ich hab überlegt für was ich R nutzen würde und etwas damit gespielt. Prinzipiell ist die vorgehensweise sehr einfach. Ich hab irgendwo ein LogFile o.ä. rumliegen (sozusagen die Rohdaten) und bringe diese mit ein bisschen Bash/Shell Zauber in ein Format welches ich R vorschmeissen kann. R unterstützt… naja so ziemlich alles, was einen halbwegs anständigen Delimiter vorweisen kann.

    R arbeitet in diesem Fall mit einer Interaktiven Shell, die die Eingaben interpretiert.
    ( $: Bash Shell. >: R Shell)

    Tweetstatistik meiner Timeline analysieren (via twidge)

    # Letzte 200 Tweets ausgeben
    $ twidge lsrecent --all > tweets
    # Usernamen sortieren und Tweets zählen
    $ grep '^<' tweets | awk '{print $1}' | sort | uniq -c | sort -rn
    # In R Shell wechseln
    $ R
    # Twitter Timeline einlesen
    > twittertimeline <- read.table("twitter/tweets", head=T, sep="" )
    # Kuchenansicht erstellen
    > pie(twittertimeline$Tweets, label=twittertimeline$User)

    An dieser Stelle kann es passieren, dass es bei zu vielen Daten wirklich sehr unübersichtlich wird. Was genau ich da falsch mache ist mir allerdings etwas schleierhaft. An der Skalierung lässt sich sicher noch arbeiten. Aber mit einem kleineren Satz von Daten, sieht es schon besser aus.
    # 20 meisten Twitterer heraussuchen
    $ grep '^<' tweets | awk '{print $1}' | sort | uniq -c | sort -n | tail -20 > tweets-20
    # Einlesen
    > twittertimeline20 <- read.table("twitter/tweets-20", head=T, sep="")
    # Balkendiagram erstellen
    > barplot(as.matrix(twittertimeline20$Tweets), main="Timeline", ylab="Tweets", xlab="Users", beside=TRUE, col=rainbow(20))

    Und damit das ganze auch was aussagt, kann man sogar eine kleine Legende anfügen.

    > legend( 1, 60,twittertimeline20$User, cex=0.6, fill=rainbow(20))

    History der Bash visualisieren
    Wer auf Kuchen steht, kann auch eifnach mal seine Bash History einlesen.
    # Command sortieren und zählen
    $ history | awk '{print $4}' | sort | uniq -c | sort -rn | head > sys/history
    Used Command
    1106 ls
    889 vim
    490 cd
    423 git
    116 screen
    116 rm
    81 ./tismc.bash
    76 ps
    75 less
    72 ./coming-home.bash
    # Das generierte File in R einlesen
    > history <- read.table("sys/history", head=T, sep="")
    # Aus dem Object history ein neues Object für Labels erstellen
    # in denen die prozentualen Werte der Commands stehen
    > history_labels <- paste(history$Command , " " , round(history$Used/sum(history$Used) * 100, 1) , "%", sep="")
    # Object und Labels zu einem Kuchendiagramm formen
    > pie(history$Used, main="Commands", label=history_labels, cex=0.8)
     

    Mailadressen aus mail.log
    Um noch ein 3. mal den Anwendungsbereich zu wechseln, kann man damit auch wunderbar das mail.log seines Mailservers unter die Lupe nehmen.

    > mailaddresses <- read.table("mail/mail_addresses", head=T, sep="")
    > pie(mailaddresses$Mails, main="Mail Adressen", col=rainbow(length(mailaddresses$Address) ), label=mailaddresses$Address)

    Egal, mein BWL Lehrer sagte immer: Traue nie einer Statistik, die du nicht selbst gefälscht hast.


  2. Permalink
  3. Web | Statistik Video

    Ich glaube das erste Video, was ich in meinem Blog poste:

    JESS3 / The State of The Internet from JESS3 on Vimeo.

    Awesome gemacht.