Discussion:
Kendall Tau Berechung
(zu alt für eine Antwort)
Karl-Gerhard (Kai) Albers
2009-05-14 09:10:47 UTC
Permalink
Hallo,

weiß jemand ob es in Excel die Möglichkeit gibt eine verteilungsfreie
Berechnung mittels Kendall Tau durchzuführen.
Ich meine ob es dafür eine Funktion gibt?

Vielen Dank im Voraus und mit freundlichen Grüßen

Karl-Gerhard Albers
Email: ***@kalbers.de
Internet: www.kalbers.de
Alexander Wolff
2009-05-14 09:49:21 UTC
Permalink
Post by Karl-Gerhard (Kai) Albers
weiß jemand ob es in Excel die Möglichkeit gibt eine verteilungsfreie
Berechnung mittels Kendall Tau durchzuführen.
Ich meine ob es dafür eine Funktion gibt?
bastle doch selbst:
http://de.wikipedia.org/wiki/Rangkorrelationskoeffizient

Es gibt dafür zur Verwendung z.B. =RANG() und =KKLEINSTE()/KGRÖSSTE()
--
Moin+Gruss Alexander - MVP for MS Excel - www.xxcl.de - mso2000sp3 --7-2
Bernd P
2009-05-14 11:23:31 UTC
Permalink
Hallo Karl-Gerhard,

Excel hat keine eingebaute Funktion dafuer, aber Andreas Steiner hat
z. B. eine VBA Loesung veroeffentlicht:

http://www.andreassteiner.net/performanceanalysis/?Downloads:VBA

Suche dort mit STRG + F nach Kendall...

Viele Gruesse,
Bernd
Karl-Gerhard (Kai) Albers
2009-05-14 15:28:49 UTC
Permalink
Hallo Bernd und Alexander,

vielen Dank für Eure prompten Antworten und Linkeinfügung.
Post by Bernd P
Hallo Karl-Gerhard,
Excel hat keine eingebaute Funktion dafuer, aber Andreas Steiner hat
http://www.andreassteiner.net/performanceanalysis/?Downloads:VBA
Suche dort mit STRG + F nach Kendall...
Viele Gruesse,
Bernd
Alexander Wolff
2009-05-14 16:46:56 UTC
Permalink
Post by Karl-Gerhard (Kai) Albers
Hallo Bernd und Alexander,
vielen Dank für Eure prompten Antworten und Linkeinfügung.
Das hat mich doch interessiert:
http://xxcl.de/files/Rangkorrelation.zip

ist nicht ganz richtig, da gewissermaßen steckengeblieben auf dem Wege zur
längeren dt. Wikipedia-Version (schlecht beschrieben dort; ich verstehe
nicht, was die "+"-Zeichen ausdrücken sollen) und der klaren englischen
Variante (mit der kürzeren Formel), aber der Tau wird schon halbwegs
gerechnet.

Bernd (oder jmd. anderes): die Formel der Spalte A war schon schwierig (für
mich); vielleicht hättest Du ja auch noch eine Lösung für die Spalte D? Es
geht darum, ohne "zell-nachbarschaftliche Interdependenz" (wie noch im
Moment) den richtigen Zugriff auf das zu vergleichende Paar zu bekommen.
Dann ist der Weg frei für eine Tabellenformel ohne Zwischenspalten (vermute
ich). Bei so etwas ist VBA stark überlegen.

Datenpaare sollen also so ...

X
XX
XXX
XXXX
XXXXX
XXXXXX
XXXXXXX

allgemein verglichen werden können (n*(n-1)/2 Vergleiche).
--
Moin+Gruss Alexander - MVP for MS Excel - www.xxcl.de - mso2000sp3 --7-2
Bernd P
2009-05-16 19:41:27 UTC
Permalink
Hallo Alexander,

Ich verstehe Dein Problem nicht.

Hast Du einmal in Andreas Steiner's Datei hineingeschaut?

Gib doch einfach als Matrixformel ein:
=CORREL(RANK(D26:D525,D26:D525),RANK(E26:E525,E26:E525))

[Die Zellen natuerlich entsprechend anpassen...]

Viele Gruesse,
Bernd
Alexander Wolff
2009-05-16 21:00:32 UTC
Permalink
Post by Bernd P
Ich verstehe Dein Problem nicht.
Hast Du einmal in Andreas Steiner's Datei hineingeschaut?
Ich kam mit der Webseite zuerst nicht so gut klar. Dann habe ich eine Datei
geöffnet, aber aus irgendeinem Grund nicht weiter verfolgt.
Post by Bernd P
=CORREL(RANK(D26:D525,D26:D525),RANK(E26:E525,E26:E525))
Oh, das muß ich mal mit Kendalls Tau vergleichen. Sieht dessen Berechnung
ziemlich ähnlich.

Ich konnte mein Problem mittlerweile lösen. Ab ca. morgen auf meiner Seite!

Ich suchte nach einer arrayfähigen Funktion, die mir direkt
nichtwiederholende Paarzuordnungen (Kombinationen genannt in der
Kombinatorik) auswirft. Und da ich kein Mathematiker bin, hatte ich es nicht
leicht, die Regelmäßigkeit in einer Formel nachzubilden - es war über Try
and Error, nicht analytisch. Daher war ich gestern ziemlich überrascht, dass
es mir gelang: "Ein alter Hut" oder auch "unsauber" werden einige vielleicht
über das Ergebnis sagen - ich lasse es mal auf mich zukommen. Danke für
Deine Antwort!
--
Moin+Gruss Alexander - MVP for MS Excel - www.xxcl.de - mso2000sp3 --7-2
Bernd P
2009-05-17 09:15:49 UTC
Permalink
Hallo Alexander,
...
Das hat mich doch interessiert:http://xxcl.de/files/Rangkorrelation.zip
ist nicht ganz richtig, ...
Das nenne ich FALSCH.
Post by Bernd P
=CORREL(RANK(D26:D525,D26:D525),RANK(E26:E525,E26:E525))
Oh, das muß ich mal mit Kendalls Tau vergleichen. Sieht dessen Berechnung
ziemlich ähnlich.
...
Das IST Kendall's Tau.

Im deutschen Excel (Matrixformel!):
=KORREL(RANG(D26:D525;D26:D525);RANG(E26:E525;E26:E525))

Viele Gruesse,
Bernd
Klaus "Perry" Pago
2009-05-17 15:01:46 UTC
Permalink
Hallo Bernd,
Post by Bernd P
Post by Bernd P
=CORREL(RANK(D26:D525,D26:D525),RANK(E26:E525,E26:E525))
Das IST Kendall's Tau.
=KORREL(RANG(D26:D525;D26:D525);RANG(E26:E525;E26:E525))
wenn ich das Beispiel (fünf Paare) aus
http://www.univie.ac.at/ksa/elearning/cp/quantitative/quantitative-101.html
mit obiger Formel berechne, ergibt das 0,5 (auch mit den sortierten
Rangfolgen wegen Monotoniebedingung)
Der Beispielwert soll aber 0,2 ergeben.

Gruß
Klaus
Bernd P
2009-05-17 15:31:08 UTC
Permalink
Hallo Klaus,

Danke. Du hast recht.

Viele Gruesse,
Bernd
Klaus "Perry" Pago
2009-05-17 16:25:11 UTC
Permalink
Post by Klaus "Perry" Pago
wenn ich das Beispiel (fünf Paare) aus
http://www.univie.ac.at/ksa/elearning/cp/quantitative/quantitative-101.html
die Summierung der Plus- und Minuszeichen im obigen Beispiel bekommt man mit
folgender MATRIXFORMEL hin:
Daten in D26:E30 - Spalte D isoton

{=SUMME(WENN(ISTFEHLER(WENN(ZEILE($1:$5)<SPALTE($1:$5);WENN($E$26:$E$30-MTRANS($E$26:$E$30)<0;1;-1);0));0;WENN(ZEILE($1:$5)<SPALTE($1:$5);WENN($E$26:$E$30-MTRANS($E$26:$E$30)<0;1;-1);0)))}

Die weitere Berechnung der Rangkorrelation TAU nach Kendall ist dann trivial

Wegen der besseren Fehlerbehandlungmöglichkeit verkürzt sich die Formel bei
xl2007 durch Verwendung von WENNFEHLER()

Gruß
Klaus
Alexander Wolff
2009-05-18 09:58:41 UTC
Permalink
Post by Klaus "Perry" Pago
Post by Klaus "Perry" Pago
wenn ich das Beispiel (fünf Paare) aus
http://www.univie.ac.at/ksa/elearning/cp/quantitative/quantitative-101.html
die Summierung der Plus- und Minuszeichen im obigen Beispiel bekommt
Daten in D26:E30 - Spalte D isoton
{=SUMME(WENN(ISTFEHLER(WENN(ZEILE($1:$5)<SPALTE($1:$5);WENN($E$26:$E$30-MTRANS($E$26:$E$30)<0;1;-1);0));0;WENN(ZEILE($1:$5)<SPALTE($1:$5);WENN($E$26:$E$30-MTRANS($E$26:$E$30)<0;1;-1);0)))}
Toll! Mit WENN(ZEILE($1:$5)<SPALTE($1:$5);... hast Du das von mir gewünschte
Dreieck aus der Matrix geholt. Da hatte ich wirklich ein Brett vor dem Kopf!
Ich habe die 1-Zellen-Formel nicht hinbekommen, sondern benötigte eine
Hilfsspalte. Zum Glück habe ich die Seite noch nicht hochgeladen ;-)

Eine mögliche Verkürzung Deiner Formel ist (Zahlenwerte angenommen, aber das
ist für Kendall eh Voraussetzung, egal, ob kardinal oder ordinal skaliert):
{=SUMME(($D$26:$D$30<MTRANS($D$26:$D$30))*2*(($E$26:$E$30<MTRANS($E$26:$E$30))-0,5))}

bzw. rein relativ bezogen (da eine einzige Kenzahl):
{=SUMME((D26:D30<MTRANS(D26:D30))*2*((E26:E30<MTRANS(E26:E30))-0,5))}
Post by Klaus "Perry" Pago
Die weitere Berechnung der Rangkorrelation TAU nach Kendall ist dann trivial
Stimmt: nur noch teilen durch n*(n-1)/2
--
Moin+Gruss Alexander - MVP for MS Excel - www.xxcl.de - mso2000sp3 --7-2
Alexander Wolff
2009-05-18 10:25:10 UTC
Permalink
Post by Alexander Wolff
Eine mögliche Verkürzung Deiner Formel ist (Zahlenwerte angenommen,
aber das ist für Kendall eh Voraussetzung, egal, ob kardinal oder
{=SUMME(($D$26:$D$30<MTRANS($D$26:$D$30))*2*(($E$26:$E$30<MTRANS($E$26:$E$30))-0,5))}
{=SUMME((D26:D30<MTRANS(D26:D30))*2*((E26:E30<MTRANS(E26:E30))-0,5))}
Da war noch ein Fehler:
{=SUMME((ZEILE(1:5)<SPALTE(A:E))*((D26:D30<MTRANS(D26:D30))-0,5)*4*((E26:E30<MTRANS(E26:E30))-0,5))}
sollte es wohl heißen

... denn es wurde mehr als nur das Dreieck (ZEILE(1:5)<SPALTE(A:E))
berücksichtigt.

Die Spalte x (D:D) muss nicht sortiert sein.
--
Moin+Gruss Alexander - MVP for MS Excel - www.xxcl.de - mso2000sp3 --7-2
Alexander Wolff
2009-05-19 10:20:04 UTC
Permalink
Post by Alexander Wolff
Post by Alexander Wolff
Eine mögliche Verkürzung Deiner Formel ist (Zahlenwerte angenommen,
aber das ist für Kendall eh Voraussetzung, egal, ob kardinal oder
{=SUMME(($D$26:$D$30<MTRANS($D$26:$D$30))*2*(($E$26:$E$30<MTRANS($E$26:$E$30))-0,5))}
{=SUMME((D26:D30<MTRANS(D26:D30))*2*((E26:E30<MTRANS(E26:E30))-0,5))}
{=SUMME((ZEILE(1:5)<SPALTE(A:E))*((D26:D30<MTRANS(D26:D30))-0,5)*4*((E26:E30<MTRANS(E26:E30))-0,5))}
sollte es wohl heißen
... denn es wurde mehr als nur das Dreieck (ZEILE(1:5)<SPALTE(A:E))
berücksichtigt.
Die Spalte x (D:D) muss nicht sortiert sein.
Beide Formeln (Klaus' und meine) zeigen allerdings für
={1.0;2.0;3.0;4.0;5.0} einen Tau von -10 statt richtig Null. Da muss noch
nachgearbeitet werden ...
--
Moin+Gruss Alexander - MVP for MS Excel - www.xxcl.de - mso2000sp3 --7-2
Klaus "Perry" Pago
2009-05-20 00:34:34 UTC
Permalink
Post by Alexander Wolff
Beide Formeln (Klaus' und meine) zeigen allerdings für
={1.0;2.0;3.0;4.0;5.0} einen Tau von -10 statt richtig Null. Da muss noch
nachgearbeitet werden ...
diese Plus/Minus-Addition liefert mit meiner Formel einen Wert von 10, was
einem Tau von 1 entspricht
also vollständige Korrelation.

Gruß
Klaus
Alexander Wolff
2009-05-20 06:39:51 UTC
Permalink
Post by Klaus "Perry" Pago
Post by Alexander Wolff
Beide Formeln (Klaus' und meine) zeigen allerdings für
={1.0;2.0;3.0;4.0;5.0} einen Tau von -10 statt richtig Null. Da muss noch
nachgearbeitet werden ...
diese Plus/Minus-Addition liefert mit meiner Formel einen Wert von 10, was
einem Tau von 1 entspricht, also vollständige Korrelation.
Hallo Klaus,

an dieser Stelle hilft ein Sich-Abwenden von den Formeln und die Überlegung:

"Was ist Korrelation?"

Korrelation ist, wenn in irgendeiner Weise eine Abhängigkeit zwischen x und
y angenommen werden kann. Bei meinem Beispiel ={1.0;2.0;3.0;4.0;5.0} hängt
aber y überhaupt nicht von x ab. Daher muss Tau (wie auch Spearman-Rho oder
Pearson) Null sein. Sonst stimmt das verwendete Mass nicht.

Auf http://de.wikipedia.org/wiki/Rangkorrelationskoeffizient ist die Formel
dargestellt. Danach ergibt sich für die 10 Paare folgender Tau:

0 übereinstimmende - 0 uneinige 0
-------------------------------------------------------- = ------------
SQRT(0 ü + 0 u + 0 extra-y)*SQRT(0 ü + 0 u + 10 extra-x) 0 * SQRT(10)

Da hier ein #DIV/0! resultiert, lässt man den Nenner weg und kommt auf 0.
Begründung: Ein Korrelationsmaß muss (bei zulässigen Daten) einen Wert
wiedergeben. Und dessen Höhe ergibt hier bei dem Fehlerwert die Anschauung.
Ach ja: Die Daten sind zulässig.

Die extra-x und extra-y sind übrigens bei unseren beiden (falschen) Formeln
im Teil "uneinige" versteckt. Die ergeben sich daher falsch zu 10 statt
richtig zu 0.
--
Moin+Gruss Alexander - MVP for MS Excel - www.xxcl.de - mso2000sp3 --7-2
Klaus "Perry" Pago
2009-05-20 12:01:35 UTC
Permalink
Hallo Alexander,
Post by Alexander Wolff
Post by Alexander Wolff
Beide Formeln (Klaus' und meine) zeigen allerdings für
={1.0;2.0;3.0;4.0;5.0} einen Tau von -10 statt richtig Null. Da muss noch
nachgearbeitet werden ...
Die extra-x und extra-y sind übrigens bei unseren beiden (falschen) Formeln
im Teil "uneinige" versteckt. Die ergeben sich daher falsch zu 10 statt
richtig zu 0.
du hast völlig recht, ich hatte die 2. Zahlenreihe nicht als 0-Reihe
realisiert :(
Dieses Plus-/Minus-Verfahren klappt offensichtlich nicht, wenn noch
ein dritter Zustand berücksichtigt werden muss.
Der Lösungsweg im Beispiel versagt also beim Auftreten von gleichen
Rangzahlen, insbesondere wenn sie hintereinander stehen.

Gruß
Klaus

Bernd P
2009-05-17 15:32:53 UTC
Permalink
Hallo Alexander,

Entschuldigung. Das war nicht Kendall's Tau, wie Klaus korrekt
anmerkte.

Ein korrekter Code scheint hier veroeffentlicht zu sein:
http://papers.ssrn.com/sol3/papers.cfm?abstract_id=1123135

Viele Gruesse,
Bernd
Alexander Wolff
2009-05-17 18:54:59 UTC
Permalink
Post by Bernd P
Das nenne ich FALSCH.
Mag sein; ich lehne mich mal lieber nicht aus dem Fenster.
Es funktioniert bei mir auch als einfache Formel. Denn er ist ja nur eine
Zahl und kein Array. RANG jedoch liefert die beiden Matrizen.
Post by Bernd P
Post by Bernd P
=CORREL(RANK(D26:D525,D26:D525),RANK(E26:E525,E26:E525))
Allerdings inhaltlich gebe ich zu bedenken, dass Deine Formel alle Ränge der
Matrix abläuft. Da z.B. Spearman und Pearson dies auch tun, nehme ich an -
ohne es zu wissen -, dass =KORREL() dies auch tut. Kendalls T vergleicht
aber nur N(N-1)/2, nicht N^2 Datenpaare.
Post by Bernd P
Das IST Kendall's Tau.
KORREL() allein ist meiner Meinung nach Spearman; ob die Wahl Deiner
RANG-Argumente daraus den Tau macht, kann ich gerade weder beweisen noch
widerlegen. Mein Tau, der - nur ohne Wiederholungen bei den Daten - richtig
rechnet, unterscheidet sich jedenfalls von Deiner Formel.
--
Moin+Gruss Alexander - MVP for MS Excel - www.xxcl.de - mso2000sp3 --7-2
Alexander Wolff
2009-05-18 08:15:39 UTC
Permalink
Post by Alexander Wolff
Post by Bernd P
Das IST Kendall's Tau.
KORREL() allein ist meiner Meinung nach Spearman; ob die Wahl Deiner
RANG-Argumente daraus den Tau macht, kann ich gerade weder beweisen
noch widerlegen. Mein Tau, der - nur ohne Wiederholungen bei den
Daten - richtig rechnet, unterscheidet sich jedenfalls von Deiner
Formel.
Ich habe das Vor-Posting, ohne die zwischenzeitlichen Postings zu sehen,
gesendet. Anmerkung: =SPEARMAN() und =KORREL() sind für einige Fälle
identisch, für welche anderen evtl. nicht?
--
Moin+Gruss Alexander - MVP for MS Excel - www.xxcl.de - mso2000sp3 --7-2
Alexander Wolff
2009-05-18 08:16:50 UTC
Permalink
Post by Alexander Wolff
Ich habe das Vor-Posting, ohne die zwischenzeitlichen Postings zu
sehen, gesendet. Anmerkung: =SPEARMAN() und =KORREL() sind für einige
Fälle identisch, für welche anderen evtl. nicht?
Nicht =SPEARMAN(), sondern =PEARSON() war eben gemeint - Konfusion komplett
--
Moin+Gruss Alexander - MVP for MS Excel - www.xxcl.de - mso2000sp3 --7-2
Karl-Gerhard (Kai) Albers
2009-05-18 08:25:38 UTC
Permalink
Hallo Ihr großer Helfer,

vielen Dank, dass Ihr Euch damit beschäftigt.
Es hilft mir wirklich sehr!
--
Mit freundlichen Grüßen

Karl-Gerhard Albers
Email: ***@kalbers.de
Internet: www.kalbers.de
Post by Alexander Wolff
Post by Alexander Wolff
Post by Bernd P
Das IST Kendall's Tau.
KORREL() allein ist meiner Meinung nach Spearman; ob die Wahl Deiner
RANG-Argumente daraus den Tau macht, kann ich gerade weder beweisen
noch widerlegen. Mein Tau, der - nur ohne Wiederholungen bei den
Daten - richtig rechnet, unterscheidet sich jedenfalls von Deiner
Formel.
Ich habe das Vor-Posting, ohne die zwischenzeitlichen Postings zu sehen,
gesendet. Anmerkung: =SPEARMAN() und =KORREL() sind für einige Fälle
identisch, für welche anderen evtl. nicht?
--
Moin+Gruss Alexander - MVP for MS Excel - www.xxcl.de - mso2000sp3 --7-2
Loading...