Posts mit dem Label DataLab werden angezeigt. Alle Posts anzeigen
Posts mit dem Label DataLab werden angezeigt. Alle Posts anzeigen

Montag, 18. November 2013

DataLab 3.53

Wie heisst es so schön: es kommt erstens anders, und zweitens als man denkt.... So geschehen auch bei der neuen DataLab-Release, die quasi eine ungeplante Frühgeburt ist.

Die Story dahinter ist eigentlich beschämend für einen großen Internet-Konzern: die Firma Yahoo, die irgendwann vor vielen Jahren unseren Provider in Kalifornien aufgekauft hat, hat vor einiger Zeit ohne die Kunden (also uns) zu informieren das http-Protokoll ihrer Server umgestellt, was unmittelbar dazu führte, dass unser Update-Server vergeblich auf Update-Anforderungen von DataLab wartete. Der Effekt ist bekannt - das Update von DataLab funktionierte nicht mehr.

Nach dem die ersten Kunden meckerten, gingen wir der Sache nach. Eine nette Mail an Yahoo brachte ziemlich genau nichts, da dachte sich wohl Goliath, "was will der kleine David, soll er doch ..." Also zogen wir die Notbremse und portierten unseren Update-Server von Kalifornien nach Köln zu Host Europe (eine tolle Hosting-Firma, wir sind sehr zufrieden seit vielen Jahren). Als Konsequenz musste natürlich auch DataLab entsprechend angepasst werden, was dann mitten in den Programmierarbeiten einiger neuer Features zu einer Zwangseinleitung der Geburt der Version 3.53 führte.

Nun das Baby ist da, und kräht.... Als nette Neuerung gibt es "Ridge Regression" mit im Werkzeugkasten, so dass stark korrelierte Deskriptoren auch für MLR verwendet werden können. Leider ist der "Memory Based Learner" immer noch nicht freigegeben, erste interne Tests zeigen aber bereits, wie mächtig diese aufgemöbelte Uralt-Methode ist.

Freitag, 15. März 2013

DataLab Release 3.51

Manchmal geht nicht alles nach Plan ... diesmal wollte ich eigentlich, dass der Memory Based Learner (aka KNN) wieder in DataLab zur Verfügung steht - alleine die Programmiergötter waren gegen uns. Also heißt es weiter warten auf der einen Seite des Rubicon und weiter schuften auf der anderen Seite....

Wie auch immer, die neue Release ist sicher einen Versuch Wert. Mehr dazu findet sich auf den DataLab-Seiten.

Nett finde ich den 2D-Datendesigner, mit dem man sich schnell mal zweidimensionale Datensätze "zusammenklicken" kann - was gerade beim Erlernen neuer Methoden sehr hilfreich sein kann.

Freitag, 25. Januar 2013

Signifikanz des Korrelationskoeffizienten

Gestern wurde in einem Forumbeitrag die Frage gestellt, wie man die Signifikanz des Korrelationskoeffizienten nach Spearman berechnet. Zu meiner Antwort direkt im Forum hier noch ein paar praktische Anmerkungen:

1) Die im Posting des Forums erwähnte Umformung in einen t-Wert gilt nur für den Fall, dass man die Korrelation gegen 0 prüfen will, für die Prüfung gegen einen anderen Wert ist eine etwas andere Umformung zu verwenden, die eine normalverteilte Testgröße liefert (siehe letzte Formel auf der entsprechenden Seite in den "Grundlagen der Statistik").

2) Die Überprüfung gegen Null kann man im DataLab direkt machen, in dem man die Korrelationstabelle aufruft und auf den Einstellregler "Level of Signif." klickt. Wie man aus der folgenden Abbildung erkennen kann, ist also der Korrelationskoeffizient des Beispiels im Forum auf dem 5%-Niveau nicht signifikant (sonst würde das Feld mit dem Korrelationskoeffizienten rot aufleuchten)

3) Wer sich das Problem der Verteilung des Korrelationskoeffizienten bei unterschiedlichen Populationswerten klarer machen möchten, dem sei das kleine Simulationsprogramm empfohlen, das ich vor einigen Jahren geschrieben habe, um meinen Studierenden die Situation klarer zu machen (aber dazu sollte ich wohl noch einen gesonderten Blogeintrag schreiben...).

4) Wer nun meint, dass meine Diskussion sich großteils auf den Pearson'schen Koeffizienten bezieht, während im Forum die Frage nach dem Spearman'schen Koeffizienten gestellt wurde, und mir damit eine Themenverfehlung diagnositiziert, der sei darauf hingewiesen, dass sich die beiden Korrelationskoeffizienten nicht unterscheiden, falls keine Bindungen vorliegen (was in diesem Beispiel der Fall ist).

Montag, 7. Januar 2013

DataLab Release 3.506

Manchmal sind kleine Schritte unscheinbar, aber doch irgendwie groß.... so geschehen bei der neuen DataLab-Release. Das gute Stück hat sich in den letzten 5 Monaten um ganze 6 Tausendstel Versionsnummern bewegt (von 3.500 auf 3.506) und trotzdem haben sich wesentliche Dinge ganz deutlich zum Besseren entwickelt. Die umfangreiche Liste der Verbesserungen lässt das Understatement der Versionsnummern nur erahnen.

Einziger Wermutstropfen: KNN (k-Nearest Neighbors) ist vorübergehend vom Mitspielen ausgeschlossen, wird aber als MBL (memory based learner) eine Wiederbelebung erfahren. Mehr zu MBL dann in einem späteren Beitrag.

Donnerstag, 15. November 2012

(Un)gleichheit...

Letztens fragte mich eine Studierende wieso in DataLab keine Tests auf Gleichheit von Mittelwerten eingebaut sind - man kann ja mit den üblichen Tests immer nur die Annahme der Gleichheit von Mittelwerten widerlegen, nie aber bestätigen. Sie erkannte darin einen schweren Mangel von DataLab und meinte, dass das Fehlen solch elementarer Tests wohl nicht verkaufsförderlich sei. Nun, statistisch gesehen eine interessante Frage - ob sich daraus allerdings Konsequenzen kommerzieller Natur ableiten lassen, wollen wir lieber den Marketingexperten überlassen (die werden schon einen passenden Spruch finden, damit der Blähbauch nicht zu groß wird).

Ich möchte die Antwort auf den statistischen Teil der Frage durch ein einfaches Beispiel illustrieren: Angenommen, wir möchten mit einem statistischen Test nachweisen, dass ein Mittelwert θ signifikant gleich einem vorgegebenen Wert θ0 ist. Nach der üblichen Vorgangsweise bei statistischen Tests müsste man dazu als Nullhypothese das Gegenteil behaupten (H0: "der Mittelwert ist nicht gleich θ0"). Bei einer Ablehnung dieser H0 wüsste man dann, dass der Mittelwert mit 100*(1-α)%iger Sicherheit gleich dem vorgegebenen Wert ist (wobei α das Signifikanzniveau ist).

So weit so gut. Das Problem ist nur, dass man keinen statistischer Test konstruieren kann, der zu einer direkten Ablehnung dieser Nullhypothese führt, da ja "nicht gleich" bedeuten kann, dass der Mittelwert sich nur ganz wenig unterscheidet (z.B. um ein Prozent abweicht), oder aber ganz enorm abweicht (z.B. um den Faktor 10 größer ist). So lange ich nicht festlege, was ich unter Ungleichheit verstehe, werde ich keine fundierte Entscheidung bzgl. H0 treffen können (= H0 auf einem bestimmten Signifikanzniveau ablehnen).

Um korrekt vorzugehen, muss ich also einen sogenannten Äquivalenzbereich definieren [ε1, ε2], innerhalb dessen ich etwaige Unterschiede als irrelevant betrachte. Für meine Null- bzw. Alternativhypothese gelten somit die Formulierungen:

H0: θ ≤ ε1 oder θ ≥ ε2
H1: ε1 < θ < ε2

Man führt also den Test auf Ungleichheit auf zwei einseitige Tests zurück und lehnt die oben formulierte Nullhypothese ab, falls beide Teiltests zu einer Ablehnung ihrer jeweiligen Nullhypothese führen.

Das bedeutet aber, dass ich (1) ohne vorherige Festlegung des Äquivalenzbereich, also ohne Festlegung, wie Ungleichheit definiert ist, keinen Test auf Gleichheit durchführen kann, und (2) bei zu kleinem Äquivalenzbereich ich nie eine Ablehnung der Nullhypothese bekommen werde. Wie groß der Äquivalenzbereich mindestens sein muss, hängt vom Signifikanzniveau und von der Zahl der Beobachtungen ab.

Zurück zur eingangs erwähnten Studierenden: Abgesehen davon, dass in DataLab natürlich einseitige Tests eingebaut sind und man auf diese Weise den Äquivalenztest durchführen kann - vielleicht sollte ich doch einen direkten Äquivalenztest in DataLab implementieren, mal sehen, ob das dann der Hit des Jahres wird und ich als kommerzielle Konsequenz daraus alle Studierenden des Jahrgangs auf ein Bier einladen kann (;-)

Montag, 12. November 2012

Buchstabensalat

Ich weiß nicht, wie es anderen Leuten geht; aber wenn ich zu viel (öde) Arbeit habe, dann neige ich dazu, mir mal zwischendurch ein "Spielchen" zu genehmigen. Und am Wochenende war's mal wieder soweit. Die Zahl der zu verbessernden Übungen aus dem Biostatistik-Kurs stieg gegen gefühlte Unendlich - ein schier unüberwindlicher Haufen von Protokollen und Emails. Also was liegt näher, als sich mal kurz aus der Schlacht zu nehmen.

Idee zum Spielchen: Ermittle alle Zwei-Buchstaben-Kombinationen in beliebigen Texten und zähle sie. Die Häufigkeiten der Buchstabenkombinationen werden dann zur statistischen Analyse dieser Texte verwendet.... So weit die Idee. Nun zur Verwirklichung: Da ich seit geraumer Zeit an mehreren eBooks schreibe, und zwei davon inhaltlich praktisch ident sind, das eine in Deutsch das andere in Englisch, wollte ich mal wissen, ob man auf diesem sehr banalen Weg die beiden Ebooks unterscheiden kann.

Also schrieb ich ein kleines 100-Zeilen-Programm, das die Seiten der beiden eBooks (je 527 Seiten) in diese Zweier-Kombinationen aufspaltet. Von den so erhaltenen 676 Variablen (26x26 Buchstaben, Ziffern, Sonderzeichen und Umlaute wurden ignoriert) habe ich mit Hilfe von DataLab jene 180 Variablen ausgewählt, die die höchsten Häufigkeiten aufweisen. Der reduzierte Variablensatz wurde dann einer Hauptkomponentenanalyse unterworfen. Das Ergebnis war zwar erwartbar, ist aber doch auch interessant:

Hauptkomponentenanalyse der zwei eBooks. Texte der englischen Ausgabe sind blau, die Texte der deutschen Auflage rot eingefärbt.

Man kann in erster Näherung drei Effekte erkennen: (1) deutsche und englische Texte lassen sich sehr gut unterscheiden, (2) im roten, deutschsprachigen Bereich gibt es rund 15 blaue Markierungen. Das sind deutschsprachige Texte im englischen Buch; diese Texte wurden aus der deutschen Version in die englische Version kopiert aber noch nicht übersetzt. (3) Die beiden kleineren Cluster unterhalb der beiden Hauptcluster rühren von speziellen Seiten her, die sehr stark formalisiert sind und keine freien Formulierungen enthalten (es handelt sich um rund 90 Texte eines Wizzards zur Auswahl geeigneter statistischer Tests).

Wer selber mit dem Datensatz experimentieren möchte, findet den vollständigen Datensatz im DataLab-Repository unter dem Titel "Linguistische Textanalyse" (allerdings kann der Datensatz nur mit der registrierten Version von DataLab geladen werden, für die kostenlose Version ist er zu groß).

Übrigens: Den eingangs erwähnten unüberwindlichen Haufen an Übungsprotokollen habe ich dann natürlich auch noch fertig abgearbeitet - was dem Sonntag einen speziellen Touch gab ("am siebten Tag sollst du ruhen...").

Donnerstag, 4. Oktober 2012

Raucher bitte tief durchatmen!

Nachdem wir uns bei der ersten Analyse der Staubmessungen in der Wiener U-Bahn über mögliche Ausreißer klar geworden sind und diese aus den Daten entfernt haben, möchte ich noch eine Frage nachschieben, die wir mit statistischen Mitteln beantworten wollen: Ist die Staubbelastung in den Stationsgebäuden U2 und U3 beim Volkstheater tatsächlich unterschiedlich?

Dazu wählen wir mal jeweils eine 5-minütige Phase während des Aufenthalts in den Stationsgebäuden U2 und U3 aus. Die Daten dazu finden sich unten, die Angaben beziehen sich auf den lungengängigen Staub, der in mg/m3 angegeben ist. Die jeweils 11 Messungen wurden mit 30 Sekunden Abstand gemessen.

Nun, bei einem Blick auf die Daten "sieht ja ein Blinder", dass die Werte in der U2 und in der U3 deutlich unterschiedlich sind. Aber lässt sich dieser Standpunkt auch vertreten, wenn z.B. ein Politiker (und davon gibt es in Wien überproportional viele) das genaue Gegenteil behauptet? Könnte es nicht sein, dass die Unterschiede zufälligt bedingt sind?

Um hier eine profunde Antwort zu geben, starten wir DataLab und laden die Daten in das Programm (Anleitung und Daten, siehe unten). Nehmen wir an, dass die Messungen der beiden Stationsgebäude unabhängig voneinander sind (sonst müsste ein kräftiger Wind die Luft von einer Station in die andere transportieren - ein Wind war aber während der Messungen nicht wahrnehmbar). Damit können wir die beiden Stichproben durch einen t-Test vergleichen. Voraussetzung für den 2-Stichproben-t-Test ist aber, dass die Stichproben jeweils normalverteilt und die Varianzen gleich sind.

Also führen wir vor dem t-Test einen Normalverteilungstest durch (z.B. den Shapiro-Wilk-Test). Dazu werden die beiden Stichproben jeweils rot und blau markiert und dann der Test durchgeführt. Für keine der beiden Stichproben wird die Nullhypothese (nämlich, dass sie normalverteilt sind) abgelehnt, also testen wir im nächsten Schritt mit dem F-Test auf Varianzgleichheit. Auch hier gibt es keine Ablehnung der Nullhypothese (p=0.07) also können wir im nächsten und letzten Schritt mit gutem Gewissen den t-Test anwenden.

Der t-Test ergibt nun mit sehr hoher statistischer Sicherheit (p < 10-4 entspricht einer Sicherheit besser als 99.99%), dass die beiden Stichproben unterschiedlich sind. Wir können also mit Fug und Recht behaupten, dass die Luft in der U3-Station hoch signifikant schlechter ist als in der U2-Station. Also, liebe Wiener Nichtraucher, haltet die Luft an, wenn ihr mit der U3 fährt und in der Station Volkstheater aussteigt; Raucher dagegen dürfen und sollen tief durchatmen, denn so reine Luft bekommen sie nur bis zum Anzünden des nächsten Glimmstengels - alles ist relativ....

Die folgenden Daten können leicht durch "Copy and Paste" in DataLab geladen werden. Dazu kopieren Sie alle Zeilen zwischen den Trennstrichen in die Windows-Zwischenablage, wechseln dann zu DataLab und rufen den Befehl Datei/Laden/ASC Daten in Zwischenablage auf.


Lungenaktive Feinstaubfraktion U2/U3, Werte in mg/m3
2
11
FALSE TRUE FALSE FALSE
RESP-U2  RESP-U3
0.036    0.064
0.040    0.063
0.034    0.064
0.040    0.062
0.038    0.066
0.042    0.054
0.043    0.050
0.039    0.053
0.039    0.056
0.037    0.058
0.046    0.063

Freitag, 10. August 2012

A/B-Tests

Heute fragte mich ein Bekannter der u.a. Webanalysen macht, wie denn das mit A/B-Tests sei, und ob das DataLab nicht auch machen könne. Die Antwort war mal wieder typisch: "ja, aber...."

Doch langsam und der Reihe nach: Grundsätzlich muss man bei AB-Tests unterscheiden zwischen dem Test-Layout und den statistischen Verfahren, um die Ergebnisse "wasserdicht" zu analysieren. Nachdem das Test-Layout sehr spezifisch von der Situation abhängt, lässt sich dazu wenig allgemein Gültiges sage. Da muss wohl jeder selber entscheiden was er/sie testet.

Einen netten Übersichtsartikel dazu gibt's in Wired. Der Artikel geht allerdings nicht auf die Statistik ein, sondern sagt nur "making sense of the results requires deep knowledge of statistics".

Wie tief das statistische Wissen tatsächlich dazu sein muss, sei mal dahingestellt. Ich nehme mal ANOVA, t-Tests und ähnliches Zeugs als Basiswerkzeug an, über das jeder Statistiker ohnehin verfügt. Und da kann DataLab natürlich mithalten. Mal sehen, vielleicht liefert mir der Bekannte ein paar Daten eines AB-Tests. Ich werde dann versuchen, eine "wasserdichte Analyse" zu machen und sie hier veröffentlichen (natürlich nur nach Zustimmung durch den Bekannten - eh klar!).

Donnerstag, 9. August 2012

DataLab 3.5 ist da!

Wie immer bei der Erstellung einer Major Release, ist Hektik angesagt. Natürlich auch diesmal, da wir mit den Terminen schon drei Wochen über der Zeit waren. Und wie halt auch immer, treten in der letzten Sekunde dann noch Probleme auf, die man eigentlich lösen sollte - also zurück an den Start.

Wenn man diesen Zyklus in freudiger Erwartung des Endprodukts ein paarmal durchmacht, liegen die Nerven dann auch schon mal blank...

Wie auch immer, Ende gut alles gut, das Baby liegt hier zum Download und Bestaunen bereit: DataLab 3.5

... und wir machen eine Flasche Traminer auf (vom Löscher in Retz) und genießen die Reste des Sommerabends.....

Dienstag, 10. August 2010

Versuch am lebenden Objekt...

Seit einigen Wochen versuche ich wieder in Form zu kommen (= Gewichtsabnahme ohne Hungern). Wie das gehen soll? Ganz einfach: das notwendige Kaloriendefizit nicht durch Hungern erzeugen sondern durch Sport.

Also, wer - wie die Gesundheitsapostel empfehlen - ein halbes Kilo pro Woche verlieren möchte, muss ca. 500 Kalorien/Tag Defizit erzeugen. Ich mache das mit Radfahren....

... hier die Ergebnisse des Versuchs am lebenden Objekt (natürlich mit DataLab analysiert):





Wie man aus den Regressionsparametern sieht, nehme ich rund 70 g pro Tag ab, was nach Adam Riese ca. 1/2 Kilo pro Woche macht.... (Zusatzfrage für Streber: Ist die Gewichtsabnahme signifikant?)

Samstag, 7. August 2010

Kostenlose Lizenz für Forscher

Jetzt, wo DataLab fertig ist (aber wann ist ein Programm schon fertig?) stellt sich die Frage, wie bringe ich das Ding unter die Leute. Problem für jeden Klein-Entwickler ist, wie werde ich sichtbar mit meinem Produkt, gegen die Übermacht der etablierten Konkurrenz?

Also verfolgen wir mal folgende Idee: Jede(r), die/der DataLab in einem Forschungsprojekt zur Datenanalyse einsetzt und dies in einer Publikation dokumentiert bekommt eine Dauerlizenz gratis.... das müsste doch die Sichtbarkeit von DataLab deutlich erhöhen.

Gesagt, getan: hier sind die Details (siehe "Free Research License").

Bin schon gespannt, wie viele Leute das Angebot annehmen.

Mittwoch, 20. Februar 2008

DataLab/Neu - schön langsam wird es

Obwohl ich ja inzwischen 25 Jahre Erfahrung bei der Softwareentwicklung am Buckel habe, staune ich immer wieder wie schwierig und zeitaufwendig die letzten 5% einer Softwareentwicklung sind. Das ganze wird umso schlimmer, wenn man - wie hier bei DataLab - ein altes Programm umbaut und modernisiert. Aber der Reihe nach....

DataLab ist ein Programm zur statistischen Datenanalyse, das ich in den 90er Jahren geschrieben habe (das damals unter einem anderen Name von einem großen Verlag herausgebracht wurde). Nach großem Erfolg war die Lebensdauer dieses Programms aber von vorneherein begrenzt (vor allem weil ich keine Zeit für die Weiterentwicklung und Wartung hatte), so dass der Verkauf nach einigen Jahren auslief.

Da ich aber in der Zwischenzeit in meiner Unterrichtstätigkeit immer wieder festgestellt habe, dass ein einfach zu bedienendes Programm zur Lösung statistischer Aufgaben nicht zu bekommen war, habe ich kurzerhand beschlossen DataLab wieder zum Leben zu erwecken. Die Idee ist, ein Programm zu schreiben, das mehr kann als das Statistikpaket von MS Excel (TM) , aber trotzdem leicht bedienbar ist.

Der erste Schritt war den vorhandenen Code (der damals teilweise noch unter DOS lief) zu durchforsten und unter eine leicht bedienbare Benutzeroberfläche zu bringen. Dabei wurden einige Leichen beseitigt, einiges übernommen wie es war, und einiges neu entwickelt. Das Ergebnis kann sich inzwischen schon sehen lassen, es steht unter www.lohninger.com/datalab/de_download.html zum Download zur Verfügung.

... mehr dazu dann beim nächsten Mal