Mit ‘Statistik’ getaggte Artikel

Zweitblog

Sonntag, 16. August 2009

Wie sagte Paule? Der Trend geht zum Zweitblog:

Algorithm-Forge Blog

Englisch und über langweiligen Mathe-, Statistik- und Programmierkram, daher ist er nun abgetrennt von diesem hier.

Nein, nicht Biostatik

Mittwoch, 10. Dezember 2008

Auch wenn es oft auf unserer Post steht: Wir sind nicht das Institut für Biostatik.

Jetzt scheinen sie aber gegen diese häufig vorkommende Verwechslung vorgehen zu wollen:

Antistaticum

;-)

Citing data – the dataverse network project

Sonntag, 02. November 2008

Heute mal ein sehr kurzer, oberflächlicher, aber doch sehr wichtiger Beitrag über ein Projekt, das sich mit dem folgenden Problem beschäftigt:

Für Artikel und Bücher existieren

  • Bibliotheken und Online-Archive,
  • Systematiken und Kataloge, um schnell das Gesuchte zu finden,
  • sowie Regeln zum Zitieren.

Quantitative Daten

  • finden sich eventuell auf den Webseiten einzelner Forscher,
  • jedoch ist die Erlaubnis zur Verwendung oft unklar,
  • URLs veralten schnell oder die Daten verschwinden ganz nach einiger Zeit,
  • Formate sind eventuell inkompatibel,
  • Änderungen an Daten können nicht nachvollzogen werden bzw. Daten sind nicht verifizierbar.
  • Und wie zitiert man solche Daten?
Auch bzw. gerade für vertrauliche oder gesetzlich geschützte Daten gilt es diese Probleme zu lösen.

UNF

Um die Validität von Daten zu gewährleisten, wurde der Universelle Numerische Fingerabdruck (UNF) von Altman & King eingeführt. Dieser Algorithmus wandelt den Datensatz in einen Unicode-Zeichen-String um und wendet eine Hash-Funktion auf diesen an.

Neben C++-Bibliotheken steht auch das R-Package UNF ``Tools for creating universal numeric fingerprints for data'' zur Verfügung. (http://cran.r-project.org/web/packages/UNF/index.html)

Der Methodenaufruf unf(data, digits=8) berechnet z.B. einen numerischen Fingerabdruck für den Datensatz data, wobei die jeweils ersten acht Stellen der Daten berücksichtigt werden.

Der Universelle Numerische Fingerabdruck

  • lässt Anderungen an Daten erkennen.
  • ist formatunabhängig. Direkt auf Dateien angewendete kryptographische Hash-Funktionen würden im Gegensatz zu ihm für einen Datensatz als SAS Datei andere Werte liefern als für R Binary oder CVS Dateien. (Noch schlimmer wenn in den Dateien wie bei Excel nicht nur die reinen Daten, sondern auch noch Zugriffszeiten oder Pfadangaben gespeichert werden...)
  • ist robust gegen insignifikante Rundungsfehler, also insbesondere plattformunabhängig.
  • zeigt ebenso falsch eingelesene Daten in Statistikprogrammen auf.
Quelle: Reference Manual des Packages UNF.

Zitieren von Daten

Minimal werden beim Zitieren Autor, Jahr und Titel angegeben, gefolgt von einem ``Unique global identifier'', über den die Daten gefunden werden können, sowie den UNF-Wert:

GARY KING; LANGCHE ZENG, 2006, "Replication Data Set for 'When Can History be Our Guide? The Pitfalls of Counterfactual Inference'" hdl:1902.1/DXRXCFAWPK UNF:3:DaYlT6QSX9r0D50ye+tXpA== Murray Research Archive [distributor]

Optionale Zitatelemente wie [producer] oder [distributor] können durch Paare ``Wert [Feldname]'' angehängt werden.

TheData.org

Für das Halten der Daten ist die Dataverse Network OpenSource-Software (http://thedata.org/) frei verfügbar. Als Web Applikation wird für die meisten jedoch kein Grund vorhanden sein, die Software lokal zu installieren, sondern man meldet ein eigenes, sogenanntes "Dataverse" bei einem der Data Repositories an.

Dataverse Überblick

  • Das eigene Dataverse lässt sich unproblematisch in die eigene Homepage unter Berücksichtung des Designs einbauen.
  • Die Daten werden persistent, zitatfähig und
  • automatisch in verschiedenen Datenformaten zur Verfügung gestellt.
  • Für jeden Datensatz können Nutzungsbedingungen festgelegt werden.
  • Eine Auswahl statistischer Methoden kann online auf die Daten angewendet werden.

Bibliography

Altman & King2007

Altman, M., & G. King. 2007. A Proposed Standard for the Scholarly Citation of Quantitative Data. D-Lib 13(3/4), http://dlib.org/dlib/march07/altman/03altman.html

CyStats Statistics

Samstag, 01. November 2008

Vor einem Monat habe ich das CyStats WordPress Plugin installiert und nun ist es Zeit für eine kleine statistische Auswertung.

31. Oktober 2008: You have approximately 33 visits to your feeds and 271 human visitors to your website today, the average bounce rate is 58.42%, 34 visitors came via search engines.

Der Blog läuft seit 516 Tagen mit durchschnittlich 1.06 Beiträgen und 1.95 Kommentaren pro Tag und im Regelfall kommen zwischen 200 und 300 Leute (ohne Bots) zu Besuch.

Und was interessierte die Leute am meisten?

Die im Oktober am meisten hier besuchten Blogseiten Besuche Prozent
Main page 652 17%
Tintenfische (Kalmare) zubereiten 561 14%
Wallpaper Norwegen 440 11%
Heimtiermesse Hannover 318 8%
Orconectes nana tragen Eier 294 7%
Der eigene Web-Comic (Teil 1) 183 5%
Random Correlation Matrices 143 4%
Nudelauflauf mit Spinat 120 3%
PDF Import mit OpenOffice 100 3%
Letztes Wochenende in Oldenburg 83 2%
Mäusefangen 79 2%
Schlaf ist kein adäquater Ersatz für Koffein 76 2%
PDF-Dokumente inklusive Übersicht und Hyperlinks zusammenfügen 74 2%
Glückskekse selber backen 69 2%
Subversion unter SUSE 10.2 54 1%
Fachschaftennacht 51 1%
Namensänderung nach der Heirat 48 1%
You don't know Jack 2 unter Windows XP und Wine 46 1%
Search-Phrases 45 1%

Das Plugin listet mir 547 Suchanfragen für diesen Monat (was sehr wenig ist - werden nicht alle angezeigt?). Im folgenden finden sich die häufigsten Suchanfragen, die nicht wie z.B. "Matheaufgabe Tentakeln" nur einmal eintrafen:

Suchanfragen Anzahl
openoffice3 pdf import [installieren] (44), openoffice3 pdf (9), openoffice3.0 pdf extension (6), openoffice pdf import [extensionmanager] linux installieren (2), sun pdf import fehler installation, pdf openoffice3 import 64bit 63
namensänderung nach Heirat/Eheschließung (11), paypal namensänderung (9), namensänderung briefe (6), postbank namensänderung (2), namensänderung gmx (2), namensänderung formbriefe, dokumente ändern nachnamensänderung heirat, telekom namensänderung heirat, ebay namensänderung heirat, konto ändern heirat, heirat kreditkarte namensänderung 35
you dont know jack windows xp (18), you don´t know jack vista (8) 26
wallpaper norwegen (26) 26
tintenfisch zubereiten (20), zubereitung ganzer tintenfisch (2), tintenfische/kalmare ausnehmen (2), tintenfisch tubus braten, tintenfisch am stück 26
compiz einstellungen (21), compiz fensterheber einstellen, compiz cube einstellen, fensteranordnung compiz 24
latex hyperlink einfügen (20), latex hyperlink (4) 24
subversion suse (12), svnserver suse (3), howto install subversion suse (3), mod_dav_svn suse (2), subversion apache2 sysconfig, yast subversion suse 22
glückskekse selber backen (11), glückskekse backen (7), glückskekse selbers chreiben, glückskekse einfach backen, zettel in kekse backen 21
pdf zusammenführen ubuntu (6), pdf-dokumente zusammenfügen (4), pdf zusammenführen inhaltsverzeichnis (2), inhaltsverzeichnis mehrere pdf dokumente, tool pdf dateien zusammenfügen ubuntu 14
kürbis curry suppe (5), rezept kürbis curry suppe (2), kürbis suppe, kürbis curry ingwer, scharfe kürbis curry, kürbis curry ingwer suppe, kürbis curry orangensaft suppe 11
Erbsenkugelfische (7), erbsenkugelfisch nachwuchs (2), erbsenkugelfisch in 60ltr 10
mäuse fangen (7), lebendmausefallen (2), mäuse in den wänden 10
luftfeuchtigkeit in der wohnung (7), luftfeuchtigkeit in wohnung senken, luftfeuchte in wohnung und keller, temperatur wohnung feuchtigkeit 10
pidgin history (5), pidgin central history, pidgin history suse, wo ist history bei pidgin 8
random correlation matrices (3), random vector correlation (2), random correlation matrix gramian/gramm (2) 7
größte qualle der welt (4), größter hecht der welt, bilder von den grösten hechten der welt 6
nicht newtonsche flüssigkeit (4), newtonische flüssigkeit, nichtnewtonsche rezept 6
epiplatys annulatus (4), eier ringelhechtlinge 5
der handstand auf der loreley (4) 4
käse-lauchcremesuppe (4) 4
schwimmende mooskugel (3) 3
schweden wallpaper (3) 3
Maronenzeit (3) 3
Chilisuppe (3) 3
temperatur wohnung (3) 3
erntezeit minze (3) 3
ubuntu ncpfs (3) 3
Leuchtspielzeug (2) 2
suppe entschärfen (2) 2
halstuchknoten (2) 2
kekse blech auftragen (2) 2
Norwegen (2) 2
Kaffeeentzug (2) 2
ubuntu openoffice3 (2) 2
Planarie (2) 2

Wie man sieht war der Tintenfisch-Ausnehmen-und-Braten-Beitrag trotz Kritik meiner Stammleser ein voller Erfolg. ;-)

Statistische Daten

Montag, 15. September 2008

Wer gerne mal mit statistischen Daten spielt – hier ein paar Links:

Nicht wundern über den Blogeintrag ;-) – ich wurde danach speziell gefragt, also kommt’s hier gleich öffentlich hin.

Btw. (aus Wikipedia – Statistik):

Das Wort Statistik stammt vom lateinischen „statisticum“ („den Staat betreffend“) und dem italienischen „statista“ („Staatsmann” oder „Politiker“). Die deutsche Statistik, eingeführt von Gottfried Achenwall (1749), bezeichnete ursprünglich die Lehre von den Daten über den Staat, also Staatstheorie. Im 19. Jahrhundert hatte der Engländer Sir John Sinclair das Wort erstmals in seiner heutigen Bedeutung des allgemeinen Sammelns und Auswertens von Daten benutzt.

Vortrag in Dortmund

Montag, 18. August 2008

Wir haben in der letzten Woche auf der

useR

in Dortmund einen Vortrag gehalten. Einen Vortrag an den man sich erinnern wird… – vielleicht nicht wegen dem Inhalt, sondern weil sich Bernds vorbereiteter Computer im Talk vor uns ausgeschaltet hat. Von unseren 15 Minuten Vortragszeit warteten wir 10 Minuten darauf, dass der Computer startete. Emule, Antivir, Windows Sicherheitscenter, diverse Mediacenter und andere Programme mussten sich erst starten und mit Informationen versorgen, bevor wir endlich mit Folien weitermachen konnten.

Trotz allem haben wir zu drei Leuten neuen, vielversprechenden Kontakt bekommen und inhaltlich war der Vortrag trotz allem gut. An uns ran kamen von der Präsentation sonst nur zwei Vorträge: In dem einen wurde nach 3 Minuten Einleitung einfach ein Präsentationsvideo abgespielt und im anderen Vortrag hatte der Vortragende sich so erkältet, dass er die Folien ohne Kommentar durchging.

Btw.: Wo kann man in Dortmund sinnvoll übernachten? Ich habe 70€/Nacht für ein Hotel mit dreckigen Handtüchern und ohne WLAN bezahlt! (Wenn ich es selber zahlen müsste, hätte ich sonst in der Uni übernachtet – Ich konnte nicht bei meinem Kollegen übernachten, da wegen Wasserschäden schon seine Freundin notdürftig bei ihm untergekommen war…) Das Hostel in München für 20€/Nacht war in jeder Hinsicht (nagut, es gab kein Frühstück) um Meilen angenehmer…

Projekt vorbei

Montag, 14. Juli 2008

Das große Projekt bei uns am Institut ist nun vorbei.

Unser GUI

Vorstellen werden wir das Framework des GUI-Teilprojektes unter dem Titel “Towards a Java Framework for Rapid Development of Graphical User Interfaces for Statistical Applications based on R” auf der UseR im August.

Jemand Interesse?

Die Hilfe

Wer kommt uns besuchen?

Dienstag, 01. Juli 2008

Wer von den Statistikern kommt uns nächsten März in Hannover besuchen?

Flyer

Macht euch keine Mühe, die Domain auf dem Flyer ins Adressfeld einzugeben – soweit sind wir noch nicht… ;-)

Sternenhimmel

Mittwoch, 14. Mai 2008

Sternzeichen mit Stellarium

Sternzeichen mit Stellarium.

Man schaut in den Himmel und nach einiger Zeit erscheinen die Figuren… bloß der Mond ist heute in Wirklichkeit zu hell.

@Schmooke: Wo ich gerade bei Projekten war – wann programmieren wir die Stereoskopie-3D-Version von Celestia?
(Und btw.: Auch in der Statistik werden anscheinend Stereogramme zur Visualisierung verwendet. Zitat aus RNews Volume 2/2, June 2002, Seite 22.)

Random Correlation Matrices

Dienstag, 19. Februar 2008

One of my colleagues has implemented a new method for evaluating the cumulative distribution function of a multivariate normal distribution and wanted to compare the speed of his method with that of randomized quasi-Monte Carlo methods. A few days ago, while we were going to lunch, he asked me how to generate random correlation matrices, because the speed of his method strongly depends on the correlation matrix and he wanted to have some sort of average.

But what is a random correlation matrix?

Let's first give a characterization of correlation matrices.

It is well known that for a matrix $C:=(c_{i,j})_{1\leq i,j\leq n}\in\ensuremath{\mathbb{R}}\xspace ^{n\times n}$ there exist (multivariate normal distributed) random variables $X,Y$ with


if and only if

  1. $-1\leq c_{i,j}\leq 1$ for all $i,j\in\{0,\ldots,n\}$,
  2. $c_{i,i}= 1$ for all $i\in\{0,\ldots,n\}$,
  3. $C$ is symmetric (therefore all eigenvalues $\lambda_1,\ldots,\lambda_n$ of $C$ are real)
  4. and all eigenvalues of $C$ are greater or equal to zero.

But what is the right notion of randomness for these matrices? For example let's look at the orthogonal matrices. In many numerical applications we need uniformly distributed random orthogonal matrices in terms of the Haar measure.

Unfortunately in our case there is no clear, natural notion of randomness. :-(

Method 1 - Try and Error: We generate a matrix fulfilling no. 1, 2 and 3 of the characterization (these matrices are called pseudo correlation matrices) by generating independent pseudo-random numbers uniformly distributed between -1 and 1 for the entries $c_{i,j}=c_{j,i}$, $1\leq i<j\leq n$.

If this random symmetric matrix is positive semidefinite (i.e. all eigenvalues of $C$ are greater or equal to zero), we have the desired result. Otherwise we try again. Here is the corresponding R code:

random.pseudo.correlation.matrix <-
function(n) {
  a <- diag(n)
  for(i in 1:(n-1)) {
    for(j in (i+1):n) {
      a[i,j] <- a[j,i] <- runif(1,-1,1)
    }
  }
  return(a)
}

random.correlation.matrix.try.and.error <-
function(n) {
  repeat {
    a <- random.pseudo.correlation.matrix(n)
    if (min(eigen(a)$values)>=0) return(a)
  }
}

This approach is only reasonable for very small dimensions (try it with $n=6,7,8$).

Method 2 - Lift the Diagonal:

We denote by $I$ the identity matrix. If $C$ has the eigenvalues $\lambda_1\leq\ldots\leq\lambda_n$ then $(C+a\cdot I)$ has the eigenvalues $\lambda_1+a\leq\ldots\leq\lambda_n+a$ since $x$ is a solution of $\det(C-x\cdot I)=0$ if and only if $x+a$ is a solution of $\det(C+a\cdot I-x\cdot I)=\det(C-(x-a)\cdot I)=0$.

So we start again with a pseudo correlation matrix $C$, but instead of retrying if $C$ has negative eigen values, we lift the diagonal by $\lambda_1$ and obtain $C+\lambda_1\cdot I$, which is always positive semidefinite. After dividing by $1+\lambda_1$ we have a correlation matrix which is ``some kind of random''. ;-)

Unfortunately the diagonal is accentuated and the smallest eigen value is always zero. The second problem we could avoid by adding $\lambda_1+b$ where $b$ is some random number, but the first remains.

make.positive.semi.definite <-
function(a, offset=0) {
  (a + (diag(dim(a)[1]) * (abs(min(eigen(a)$values))+offset))) /
    (1+(abs(min(eigen(a)$values))+offset))
}

random.correlation.matrix.lift.diagonal <-
function(n, offset=0) {
  a <- random.pseudo.correlation.matrix(n)
  make.positive.semi.definite(offset)
}

Method 3 - Gramian matrix - my favorite: Holmes [Holmes1991] discusses two principal methods for generating random correlation matrices. One of them is to generate $n$ independent pseudo-random vectors $t_1,\ldots,t_n$ distributed uniformly on the unit sphere $S^{n-1}$ in $\ensuremath{\mathbb{R}}\xspace ^n$ and to use the Gram matrix $T^tT$, where $T:=(t_1,\ldots,t_n)$ has $t_i$ as $i$-th column and $T^t$ is the transpose of $T$.

To create the $t_i$ in R, we load the package mvtnorm, generate $\tau_i\sim\mathcal{N}(0,I)$ and set $t_i:=\tau_i/\vert\vert\tau_i\vert\vert$:

random.correlation.matrix.sphere <-
function(n) {
  require("mvtnorm")
  t <- rmvnorm(n,rep(0,n),diag(n))
  for (i in 1:n) {
    t[i,] <- t[i,]/sqrt(t(t[i,])%*%t[i,])
  }
  t%*%t(t)
}

Conclusion: There are futher methods (like e.g. to generate a random spectrum and then construct the correlation matrix), which are not as easy to implement as the ones described above. But just as the three given methods, they all are unsatisfactory in some way because we don't really know how random correlation matrices should be distributed.

For my colleague an average of calculation time does only make sense when he knows which kind of correlation matrices occurs in the applications. He decided to describe and compare the different cases individually.

But does it perhaps make sense to use random correlation matrices as test cases or are the special cases more important? For example, random correlation matrices generated with method 1 and 3 are only singular with probability zero.

Any critique, comments, suggestions or questions are welcome!

And for the next time: Given a correlation matrix C. How do we generate tuples of pseudo-random numbers following a given multivariate distribution with correlation matrix C?

Bibliography

Holmes1991
Holmes, R. B. 1991.
On random correlation matrices.
Siam J. Matrix Anal. Appl., Vol. 12 No. 2: 239-272.