230 34 6MB
German Pages 108 Year 1999
Nichtparametrische Statistik mit Mathematica Von
Dipi. Math. Marco Schuchmann und
Dipi. Math. Werner Sanns
R. Oldenbourg Verlag München Wien
Die Informationen in dieser Dokumentation wurden mit großer Sorgfalt erstellt. Trotzdem können Fehler nicht ausgeschlossen werden. Für fehlerhafte Angaben und deren Folgen werden weder juristische Verantwortung noch irgendeine Haftung übernommen. Für eine Mitteilung eventueller Fehler sind die Autoren dankbar.
Die Deutsche Bibliothek - CIP-Einheitsaufnahme Schuchmann, Marco: Nichtparametrische Statistik mit Mathematica / von Marco Schuchmann und Werner Sanns. - München ; Wien : Oldenbourg, 1999 ISBN 3-486-25125-2
© 1999 R. Oldenbourg Verlag Rosenheimer Straße 145, D-81671 München Telefon: (089) 45051-0, Internet: http://www.oldenbourg.de Das Werk einschließlich aller Abbildungen ist urheberrechtlich geschützt. Jede Verwertung außerhalb der Grenzen des Urheberrechtsgesetzes ist ohne Zustimmung des Verlages unzulässig und strafbar. Das gilt insbesondere für Vervielfältigungen, Übersetzungen, Mikroverfilmungen und die Einspeicherung und Bearbeitung in elektronischen Systemen. Gedruckt auf säure- und chlorfreiem Papier Gesamtherstellung: WB-Druck, Rieden ISBN 3-486-25125-2
Vorwort Im ersten Band unseres Buches „Statistik mit Mathematica" haben wir die wichtigsten parametrischen Verfahren beschrieben und mit Mathematica programmiert. Bei den meisten dieser Verfahren spielt die Normalverteilung eine große Rolle. Dabei wird vorausgesetzt, daß die Stichprobe aus einer normalverteilten Grundgesamtheit stammt oder die Stichprobe sich aus normalverteilten Teilstichproben zusammensetzt. Unter dieser Annahme werden dann Hypothesentests bezüglich der Parameter der Normalverteilung durchgeführt. In einigen Fällen kann aber nicht von einer Normalverteilung der Daten ausgegangen werden, falls beispielsweise kein metrisches Datenniveau vorliegt, das heißt, keine stetige Verteilung vorausgesetzt werden kann. Oder das Datenniveau ist zwar metrisch, aber nicht normalverteilt, z.B. wenn diese Annahme bei einem Anpassungstest verworfen wurde. In diesen Fällen kann also kein Test bezüglich der Parameter der Normalverteilung durchgeführt werden. Kann man außerdem keine andere bekannte Verteilung voraussetzen, so bleibt immer noch die Möglichkeit nichtparametrische Verfahren zu verwenden. Diese können natürlich auch bei normalverteilten Daten angewendet werden, wenngleich die Teststärke sich dabei im Vergleich zu dem entsprechenden parametrischen Verfahren verringern könnte, da durch die Rangbildung Information verloren geht und nicht die konkrete Verteilung genutzt wird. Über den Rahmen der klassischen nichtparametrischen Verfahren hinaus beschreiben wir in diesem Buch weitere Verfahren, die bei nicht normalverteilten Daten hilfreich sind, wie die logistische Regressionsanalyse oder die loglinearen Modelle. Wenn wir in diesem zweiten Band auf die Beschreibung und Programmierung nichtparametrischer Verfahren eingehen, wollen wir dabei den Lesern auch die Vorgehensweise bei der Anwendung dieser Verfahren näher bringen. Aus diesem Grund verwenden wir nicht nur vorgefertigte Module, die nur die Testergebnisse ohne Zwischenschritte ausgeben, sondern wir beschreiben auch die einzelnen Programmzeilen und die Zwischenausgaben. Sollten Sie ein von uns
4
Vorwort
beschriebenes Verfahren anwenden wollen und nur an den wesentlichen Ausgaben interessiert sein, so können Sie auch das gesamte Programm eingeben und ohne Ausgabe von Zwischenschritten starten. Wir haben auf die Beilage einer Diskette verzichtet, da es sich nur um relativ kleine Programme handelt und der LernefFekt beim zeilenweisen Austesten der Programme wesentlich größer ist. Die Datensätze in unseren Beispielen sind sehr klein gehalten, da wir den Lesern die Verfahren bzw. deren Programmierung näher bringen wollen und sie nicht mit dem Eintippen langer Datenreihen langweilen wollen. Bei der Anwendung der Verfahren, die eine asymptotische Verteilung verwenden, sollten jedoch größere Datensätze verwendet werden. Wir haben an den entsprechenden Stellen Hinweise auf die Stichprobenumfänge gegeben.
Marco Schuchmann, Werner Sanns
Inhaltsverzeichnis 1 ERGÄNZUNGEN ZUM ARBEITEN MIT MATHEMATICA
7
2 BERECHNUNG VON RANGZAHLEN
11
3 DER BINOMIAL TEST
17
4 CHI-QUADRAT ANPASSUNGSTEST
22
5 DER MCNEMAR TEST
28
6 RANGKORRELATION
32
6.1 Rangkorrelationen nach Spearman
32
6.2 Rangkorrelationen nach Kendali
39
7 DER VORZEICHEN TEST
44
8 WILCOXON VORZEICHENRANGTEST FÜR EINE STICHPROBE
47
9 DER KRUSKAL-WALLIS TEST
53
9.1 Globaler Vergleich
53
9.2 Multipler Vergleich
58
10 DIE FRIEDMAN RANG - VARIANZANALYSE
60
11 WILCOXON-RANGSUMMENTEST
65
12 DER PAGE TEST
71
6
Inhaltsverzeichnis
13 DER WILCOXON VORZEICHENRANGTEST FÜR ZWEI VERBUNDENE STICHPROBEN 77 14 DIE LOGISTISCHE REGRESSIONSANALYSE
83
15 DAS LOGLINEARE MODELL
92
16 INDEX
103
17 LITERATURVERZEICHNIS
106
1 Arbeiten mit Mathematica
7
1 Ergänzungen zum Arbeiten mit Mathematica Im ersten Band haben wir bereits die Grundlagen der MathematicaProgrammierung vorgestellt. Wir wollen an dieser Stelle als Ergänzung die Programmierung eines Moduls in Mathematica beschreiben, da wir zur Berechnung der Rangzahlen immer wieder auf ein einmal programmiertes Modul zurückgreifen werden. Ein Modul ist eine vom Benutzer erstellte Funktion, vergleichbar mit einer internen Mathematica-Funktionen, bei der zunächst einige Variablen übergeben werden. Innerhalb dieses Moduls kann dann, wie üblich, mit Mathematica programmiert werden. Es müssen dabei die Variablen für die Zwischenergebnisse in einer Liste, welche am Anfang des Moduls steht, deklariert werden. Die Verwendung und Programmierung eines Modul ist immer dann angebracht, wenn eine Reihe von Programmzeilen für eine bestimmte Berechnung nötig sind und diese Berechnung öfter wiederholt werden muß. Bei der Verwendung eines Moduls innerhalb eines Programms, wird dann auch das Programm übersichtlicher. Man könnte z.B. auch jedes von uns in den folgenden Kapiteln programmierte Verfahren in einem Modul zusammenfassen, so daß dieses bei Bedarf aufgerufen werden kann. Dabei wäre dann jeweils nur die Datenmatrix zu übergeben. Wir wollen nun in einem kleinen Beispiel ein Modul programmieren, welches den Median einer Stichprobe berechnet. Wir weisen darauf hin, daß es in Mathematica eine Anweisung „Median" bereits gibt, die nach laden des „Statistics" Master" zur Verfügung steht. Uns kommt es aber hier nur auf die Vorgehensweise bei der Erstellung eines Moduls an. Zur Unterscheidung schreiben wir in unserem Modul den errechneten Wert „median" mit kleinem Anfangsbuchstaben. Die Stichprobe liegt in Form einer Liste vor. Diese muß bei der Programmierung des Moduls als Variable, sagen wir mit Namen v, an das Modul, das wir g nennen, übergeben werden. Die innerhalb des Modules benutzten Variablen werden in einer Liste an erster Position der „Module"-Anweisung aufgeführt.
8
/ Arbeiten mit Mathematica
Wir definieren als temporäre Variablen die Liste der sortierten Stichprobe sv und den Stichprobenumfang n. Danach fragen wir mit der Funktion OddQ ab, ob der Stichprobenumfang ungerade ist. Dementsprechend wird dann der Median als der Wert an der Stelle (n+l)/2 der sortierten Stichprobe definiert oder im geraden Fall aus dem Mittelwert der Werte an der Stelle n/2 und der Stelle n/2+1 der sortierten Stichprobe berechnet. g [ v j : =Module [ {n,s v}, n=Length[v]; sv=Sort[v]; median=If[OddQ[n],sv[[(n+l)/2]], l/2(sv [ [n/2] ]+sv [ [n/2+1 ]])] ] Wir berechnen nun mit Hilfe unseres Moduls g den Median der folgenden Stichprobe x: x={l,4,8,15,20}; gM 8
Ein weiteres Thema, das im ersten Band schon angeschnitten wurde, das aber hier eine Erweiterung erfahren soll, ist die Darstellung von Zeilen- und Spaltenvektoren. Wie schon erwähnt, braucht man in Mathematica im allgemeinen wegen der Darstellung von Vektoren als Listen nicht zwischen Zeilenund Spaltenvektoren zu unterscheiden. Allerdings gibt es für Listen in Mathematica Anweisungen und Regeln, die für Vektoren nicht erklärt sind. Will man diese Unterscheidung aus mathematischen Gründen trotzdem vornehmen, ist dies natürlich ebenfalls möglich. Sie können Vektoren mit Mathematica zum Beispiel folgendermaßen erzeugen: v={l,3,5,2,8}
/ Arbeiten mit Mathematica
9
{1,3,5,2,8} Dies ist ein 5 dimensionaler Vektor (Liste). Wenn Sie v optisch in Spaltenform angezeigt sehen wollen, dann geben Sie ein: ColumnForm [v] 1 3 5 2 8
Wenn man sich in der Darstellung eines Problems mit Mathematica eng an den mathematischen Formalismus halten will und mit Vektoren und deren Transponierten arbeiten möchte, ist es wichtig, auch rechentechnisch zwischen Zeilenvektoren und Spaltenvektoren in Mathematica zu unterscheiden. Ein Zeilenvektor schreibt sich so: v={{2,4,6}} {{2, 4, 6}} v//MatrixForm (2 4
6)
Er ist gewissermaßen eine Matrix mit einer einzigen Zeile. Dagegen ist ein Spaltenvektor eine Matrix mit mehreren einspaltigen Zeilen. Ein Spaltenvektor wird so geschrieben: w={{2},{4},{5}} {{2}, {4}, {5}}
10
1 Arbeiten mit Mathematica
w//MatrixForm 4 v5 Bei Vektoren mit einer großen Anzahl von Komponenten wäre die obige Darstellung wegen der geschweiften Klammern um jede einzelne Komponente zu umständlich und kann folgendermaßen vereinfacht werden: u=Transpose[{{2,4,5,l,8,9,12,7}}] {{2}, {4}, {5}, {1}, {8}, {9}, {12}, {7}} u//MatrixForm 2 4 5
1
8 9 12 7 ,
2 Rangzahlen
11
2 Berechnung von Rangzahlen Bei den meisten nichtparametrischen Verfahren spielen die sogenannten Rangzahlen eine wesentliche Rolle, denn über diese werden in den meisten Fällen die Prüfgrößen berechnet, d.h. die Prüfgrößen bzw. die Teststatistiken sind hierbei Funktionen der Ränge. Dies steht im Gegensatz zu den parametrischen Verfahren, bei denen die Prüfgrößen über die eigentlichen Beobachtungen berechnet werden. Da die Prüfgrößen bei den nichtparametrischen Verfahren über die Rangzahlen berechnet werden, muß das Datenniveau bei vielen dieser Verfahren nur einer Ordinalskala genügen, da hier die zugrunde liegenden Daten nur bis auf monotone Transformationen eindeutig sind und die Daten deshalb nicht mehr als die Rangordnung zum Ausdruck bringen (z.B. bei Schulnoten). Ist das zugrunde liegende Datenniveau metrisch, so stellt dies natürlich ein Informationsverlust dar, der aber in Bezug auf die Effizienz des Verfahrens in vielen Fällen unerheblich ist. Wir wollen die Vergabe der Rangzahlen an einem Beispiel beschreiben und mit Mathematica programmieren. Danach fassen wir das Programm in einem Modul zusammen, da wir auf dieses später öfters zurückgreifen werden. Es empfiehlt sich daher dieses Modul separat noch einmal abzuspeichern, um es gegebenenfalls auch in andere Mathematica-Dateien aufnehmen zu können. Wir gehen in unserem Beispiel von einer Stichprobe aus, die wir in der Liste „daten" speichern. Die Liste der Beobachtungen definieren wir dabei als Spaltenvektor, da sich dies später als vorteilhaft erweisen wird. daten=Transpose[{{150,155,140,156,140,165,180,156,150}}] {{150},{155},{140},{156},{140},{165},{180},{156},{150}} Bei der Vergabe der Rangzahlen wird so vorgegangen, daß der kleinsten Beobachtung der Rang 1 und der größten Beobachtung der
12
2 Rangzahlen
Rang n ^Stichprobenumfang) zugewiesen wird. Kommen Beobachtungen doppelt vor, so wird diesen das arithmetische Mittel der entsprechenden Rangzahlen zugewiesen. In unserem Beispiel ist der kleinste Wert 140. Es kommen zwei Beobachtungen mit diesem Wert vor. Man müßte eigentlich für diese beiden kleinsten Beobachtungen die Ränge 1 und 2 vergeben. Da diese aber doppelt vorkommen, erhalten beide Beobachtungen den Rang 1,5 , also den Mittelwert aus den Rängen 1 und 2. Bei doppelt oder mehrfach vorkommenden Beobachtungen spricht man von Bindungen. Wir kommen nun zur Berechnung der Rangzahlen mit Mathematica. Dabei fuhren wir Ihnen zunächst jeden Schritt zur Berechnung der Rangzahlen einer Stichprobe einzeln vor und fassen dann später diese zu einem Modul zusammen. Wir definieren nun zuerst die Funktion h, mit der wir die absolute Häufigkeit für das Auftreten einer Beobachtung in unserer Stichprobe „daten" bestimmen können. In der zweiten Programmzeile übergeben wir den Stichprobenumfang in die Variable n. h[vJ:=Count[Flatten[daten],a_/;v=a]; n=Length [daten]; Wir benötigen nun eine Liste der Beobachtungen, welche um die mehrfach vorkommenden Werte bereinigt ist. Diese bezeichnen wir mit z. Mit unserer Funktion h berechnen wir dann die absoluten Häufigkeiten für das Auftreten der Werte aus der Liste z in den Daten und speichern diese in der Liste t. Diese Liste wird später oft für die Berechnung der Prüfgrößen der nichtparametrischen Verfahren benötigt, falls es Bindungen bzw. mehrfach vorkommende Werte in der Stichprobe gibt. z=Union [Flatten [daten] ] {140, 150, 155, 156, 165, 180} t=Map[h,z]
2 Rangzahlen
1 3
{2, 2, 1, 2, 1, 1} Für jeden Wert der Liste z bestimmen wir nun mit den unten stehenden Anweisungen die Rangzahlen. Diese speichern wir dann in der Liste ry. Danach müssen wir jeder Beobachtung der Stichprobe aus der Liste „daten" die entsprechende Rangzahl zuweisen. Dazu definieren wir die Funktion r, die einer Beobachtung v deren Rangzahl zuweist. (Hinweis: Die hier benutzte Formel stimmt bis auf eine Abänderung der Untergrenze der Summe aus progammtechnischen Gründen mit der in dem Buch von Härtung angegebenen Formel überein. Dort ist to=0 gesetzt und Mathematica liefert für den Wert der Summe wenn k-l=0 undj=l ebenfalls Null.) ry=Table[Sum[t[ü]],{j,l,k-l}]+(t[[k]]+l)/2,{k,l,Length[z]}]//N {1.5, 3.5, 5., 6.5, 8.,
9.}
r[vJ:=Do[If[v=z[[i]], a=ry[[i]]], {i, 1, Length[z]}]; Die Funktion r wenden wir dann auf jede Beobachtung der Stichprobe an und erhalten somit eine Liste mit Rangzahlen rij. rij=Transpose[Table[{r[daten[[i, 1]]] ,a}, {i, 1, n}]][[2]] {3.5, 5., 1.5, 6.5, 1.5, 8., 9., 6.5,
3.5}
Demnach hat die erste Beobachtung den Rang 3.5, die zweite den Rang 5, usw.. Nun fassen wir die eben erstellten Programmzeilen zu unserem Modul RANG zusammen. Die „Save"-Anweisung dient dem Abspeichern einer Definition in eine Datei. Dabei werden alle benötigten Daten mit abgespeichert und jeweils bei jedem neuen Aufruf mit „Save" an die vorhandene Datei angehängt. Wir löschen daher alle nicht benötigten Daten, bevor wir die Programmzeilen zu dem Modul zusammenfassen. Remove["GlobaP *"]
14
2 Rangzahlen
Nun schreiben wir das Modul RANG, wobei oben schon einzeln eingegebene Zeilen einfach kopiert werden können. RANG[yJ:=Module[{h,n,z,t,r,rij,yr}, h[vj:= Count [Blatten [y ] ,a_/; v = a ] ; n=Length[y]; z=Union[Flatten[y]]; t=Map[h,z|; ry=Table[Sum[t[|j]],(j,l,k-l}]+(t[[k]]+l)/2, {k,l,Length[z]}]//N; r[vj:= Do [ Iflv=z[[i]],a=ry[[i]]],{i,l,Length[z]}J; rij=TranSpose[Table[{r[y[[i,l]]],a},{i,l,n}]][[2]]; {t,Transpose[ {rij} ]} ] Mit diesem Modul kann nun zu einer Stichprobe y eine Liste, bestehend aus zwei Listen berechnet werden. Die erste Liste enthält die absoluten Häufigkeiten der Beobachtungen (also die oben definierte Liste t) und die zweite Liste enthält die Rangzahlen (rij). Wir zeigen wir Ihnen zunächst, wie Sie unser Modul „RANG", das wir noch öfter brauchen, auf der Festplatte abspeichern und bei Bedarf wieder laden können. Sie sollten mit dem Windows-Explorer (Dateimanager) ein Verzeichnis „c:\hilf erstellen. Wir setzen dann in Mathematica den Verzeichnispfad auf diese Verzeichnis: SetDirectory["C:\hiIf"] C:\hilf Wir speichern in c:\hilf das Modul „RANG" unter dem Dateinamen „rangmodul" Save["rangmodul",RANG]
2 Rangzahlen
1 5
Um zu testen, ob alles funktioniert, löschen wir zunächst alle Namensdefinitionen aus Mathematica und überprüfen mit dem Fragezeichen, daß Mathematica den Namen RANG nun tatsächlich nicht mehr kennt. Remove["Globar *"] ?RANG Information: :notfound : Symbol RANG not found. Erst nach dem laden mit „Get" wird das Modul wieder in Mathematica erkannt und steht uns nun wieder zur Verfugung. Get["rangmodul"] ?RANG RANG[yJ:=Module[{h,n,z,t,r,rij,yr}, h [ v j : = Count[Flatten[y],a_/;v=a]; n=Length[y]; z=Union[Flatten[y]]; t=Map[h,z]; ry=Table[Sum[t[[j]], {j, l,k-l }]+(t[[k]]+l)/2, {k, 1 ,Length[z]} ]//N; r [ v j : = Do [ If[v=z[[i]],a=ry[[i]]],{i,l,Length[z]}]; rij=Transpose[Table[{r[y[[i,l]]],a},{i,l,n}]][[2]]; {t,Transpose[ {rij} ]} ] Wir fuhren nun das Modul aus. Dazu brauchen wir aber wieder unseren Datensatz. Kopieren Sie diesen und schicken Sie ihn erneut ab: daten=Transpose [{{150,155,140,156,140,165,180,156,150}}]
16
2 Rangzahlen
{{150},{155},{140},{156},{140},{165},{180},{156},{150}} RANG[daten] {{2, 2, 1, 2, 1, 1}, {{3.5}, {5.}, {1.5}, {6.5}, {1.5}, {8.}, {9.}, {6.5}, {3.5}}} Die Liste der Häufigkeiten kann mit Rang[daten][[l]] angesprochen werden und die Liste der Rangzahlen kann entsprechend mit Rang[daten][[2]] angesprochen werden. Wir erstellen als Übersicht ein Tabelle mit den Daten, deren Ränge und ihren Häufigkeiten in der Stichprobe. Dazu benötigen wir noch einmal die oben mit der „Remove"-Anweisung gelöschte Funktion h, denn diese ist nicht mehr global, sondern nur noch als lokale Variable innerhalb des Moduls vorhanden. h[vJ:=Count[Flatten[daten],a_/;v=a]; {Flatten [daten], Flatten [RANG[daten] [ [2]]], Map[h, Flatten [daten]]} //Transpose // MatrixForm 150 155 140 156 140 165 180 156 150
3. 5 5. 1. 5 6. 5 1. 5 8# 9 6. 5 3. 5 «
2 1 2 2 2 1 1 2 2 y
3 Binomial-Test
1 7
3 Der Binomial Test Wir wollen mit einem relativ einfachen Test beginnen, der auch bei einigen Statistikprogrammpaketen unter der Rubrik „nichtparametrische Verfahren" gefuhrt wird. Mit dem Binomialtest kann eine Hypothese bezüglich der Wahrscheinlichkeit für das Auftreten einer Kategorie einer dichtomen (es kommen nur zwei Ausprägungen vor, z.B. 0 und 1) Zufallsvariable anhand einer Stichprobe getestet werden. Dabei besteht die Stichprobe demnach aus Beobachtungen mit zwei Ausprägungen, die als Realisierungen von unabhängigen bernoulliverteilten Zufallsvariablen (mit dem Parameter p) angesehen werden. Die Wahrscheinlichkeit für das Auftreten der ersten Ausprägung ist gleich p, während folglich die Wahrscheinlichkeit für das Auftreten der zweiten Ausprägung gleich (1-p) ist. Zählt man nun aus, wie häufig eine Ausprägung vorkommt, so erhält man eine Realisierung einer binomialverteilten Zufallsvariablen. Dieser Test ist daher eigentlich ein parametrisches Verfahren, da wir einen Test bezüglich dieses Parameters der Beraoulliverteilung durchführen. Wir möchten diesen Test aber zum Einstieg vorführen, da wir Ihnen auch ein Verfahren für dichotome Variablen zur Verfügung stellen wollen. Außerdem läuft dieser Test, wie bereits erwähnt, oft unter dem Stichwort „nonparametric", da die entsprechenden Programmpakete wahrscheinlich nichtparametrisch mit nicht normalverteilt gleichsetzen. Wir gehen nun also davon aus, daß uns eine Stichprobe vom Umfang n vorliegt. Diese Stichprobe könnte z.B. bei der Erfassung der Antwortkategorien einer Frage mit zwei Antwortmöglichkeiten (z.B. ja/nein oder männlich/weiblich) angefallen sein. Getestet werden dann die Hypothesen: Nullhypothese (Ho): p = po gegen
18
3 Binomial-Test
Alternativhypothese (HA): p * PO Wir haben in unserem folgenden Beispiel die erste Antwortmöglichkeit (Ausprägung) mit 0 und die zweite mit 1 kodiert und diese Liste unter dem Namen DAT gespeichert. Wir erzeugen aus Gründen der Bequemlichkeit einen Datensatz mit der Table-Anweisung, bei dem die Ausprägung '1' 17-mal vorkommt und die Ausprägung '0' 27-mal. Wir wollen dann später die Nullhypothese überprüfen, die Daten stammen aus einer bernoulliverteilten Grundgesamtheit mit dem Parameter p = 0,5. Wir testen also die Nullhypothese, daß die Wahrscheinlichkeit für das Auftreten der Ausprägung "1" gleich 50% ist, d.h., daß beide Antworten gleich wahrscheinlich sind, gegen die Alternativhypothese, daß die Wahrscheinlichkeit nicht gleich 50% ist. Ho: p = 0,5 gegen Ha: p * 0,5
Wir beginnen mit der Definition des Datensatzes: DAT=Flatten[{Table[l,{17}],Table[0,{27}]}] {1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0} Wir zählen zunächst die absolute Häufigkeit der Ausprägung 1 aus und bestimmen den Stichprobenumfang n. k=Count[DAT,v_/;v=l]
3 Binomial-Test
1 9
17 n=Length [DAT] 44 Nun definieren wir die hypothetische Wahrscheinlichkeit für das Auftreten der Kategorie '1'. Dann fuhren wir zunächst einen approximativen Test mit der Prüfgröße z durch, welche unter Ho eine Realisierung einer asymptotisch standardnormalverteilten zufälligen Größe Z ist. p0=0.5; z=(k-n*pO)/Sqrt[n*pO*(l-pO)] -1.50756 Wer die Palette „Basiclnput" von Mathematica für die Eingabe benutzen will, kann diese Formel auch in der folgenden Form eingeben: z=
k- n*pO VnpO (1-pO)
Sie erhalten natürlich das gleiche Resultat in der Ausgabe. Wir laden den „Statistics" Master " und berechnen danach den p-Wert mit Hilfe der von uns definierten Verteilungsfunktion FN der Standardnormalverteilung. (Hinweis: Die folgenden Eingabezeilen schreiben Sie bitte nicht in eine einzige Zelle, sondern Sie schicken bitte jede Zeile einzeln mit „Shift" und „Enter" ab. Das gleiche gilt immer dann, wenn wir eine Leerzeile zwischen die einzugebenden Zeilen eingefügt haben): Needs["Statistics Master "] FN [x_J :=CDF [NormalDistribution [0,1 ] ,x]
20
3 Binomial-Test
ProbApprox2Side=2(l-FN[Abs[z]]) 0.131668 Wie zu sehen ist, kann die Nullhypothese auf einem Signifikanzniveau von 5% nicht verworfen werden (ProbApprox2Side > 0,05). Kommen wir zum exakten Test, für den wir die Verteilungsfunktion FB der Binomialverteilung mit den Parametern n und po benötigen. Mit dieser Verteilungsfunktion kann nun der exakte Test durchgeführt werden, da die Anzahl der Einsen (unter Ho) eine Realisierung einer binomialverteilten Zufallsvariable, mit den Parametern n und po ist. Dies gilt, da die einzelnen Antworten als Realisierungen von unabhängig und identisch bernoulliverteilten Zufallsvariablen anzusehen sind. Der exakte Test sollte immer bei kleinen Stichprobenumfangen angewandt werden. FB[xJ:=CDF[BinomialDistribution[n,pO],x] M=Quantile[BinomiaIDistribution[n,p0],0.5] 22 Prob2Side=If[k 0,5
Dabei ergibt sich der p-Wert für den approximativen Test mit l-FN[z] und für den exakten Test mit l-FB[k], b) Ho: p > 0,5
gegen H a : p < 0,5
Dabei ergibt sich der p-Wert für den approximativen Test mit FN[z] und für den exakten Test FB[k], Analog können Sie bei anderen von uns beschriebenen Tests auch jeweils die einseitigen Tests durchführen.
22
4
Chi-Quadrat-Anpassungstest
4 Chi-Quadrat Anpassungstest Mit dem Chi-Quadrat Anpassungstest kann überprüft werden, ob die vorgegebenen Daten einer speziellen Verteilung genügen. In unserem Beispiel haben wir als Verteilung die Normalverteilung gewählt. Dazu erzeugen wir zunächst eine Stichprobe bestehend aus 100 Realisierungen von normalverteilten Zufallsvariablen mit den Parametern /z = 170 und er2 =25. Später testen wir anhand dieser Stichprobe die Nullhypothese: Ho: Die Daten stammen aus einer normalverteilten Grundgesamtheit gegen die Alternativhypothese: Hi: Die Daten Grundgesamtheit.
stammen
nicht
aus
einer
normalverteilten
Wir weisen darauf hin, daß Sie andere Ergebnisse erhalten werden, da die Daten zufällig erzeugt werden. Wenn Sie das Programm mehrfach ausfuhren, erhalten Sie jeweils neue Datenreihen, mit denen Sie sich die Güte des Zufallsgenerators veranschaulichen können. Sie können dabei auch den Stichprobenumfang variieren. Sollten Sie den Test mit realen Daten durchführen, so müssen Sie im untenstehenden Programm statt dem Aufruf des Zufallszahlengenerators die Daten unter dem Namen „dat" einlesen. Mit dem von uns programmierten Test, kann auch eine Anpassung bezüglich einer anderen stetigen Verteilung überprüft werden. Wir laden zunächst die erforderlichen Pakete: Needs [" Statistics' Master'"] Needsj" Graphics'Master'"] Wir erzeugen 100 normalverteilte Zufallszahlen: x:=Random [NormalDistribution [ 170,5]]
4 Chi-Quadrat-Anpassungstest
23
dat=Table[x,{100}]; Wir berechnen Hilfgrößen, über die wir die Klasseneinteilung vornehmen. ma=Max[dat] 185.173 mi=Min [dat]-0.01 157.129 m=ll; (* Klassenanzahl, kann variiert werden *) h=(ma-mi)/m 2.54937 g[i_]:=mi+i h g[0] 157.129 Zur Probe zählen wir die Anzahl der Beobachtungen aus, die in die erste Klasse fallen: Count[dat,a_/;g[0]0.20 nicht zum Verwerfen der Nullhypothese. Es spricht also nichts gegen die Normalverteilungsannahme. Bemerkung: Da wir die zwei Parameter der Normalverteilung über den Mittelwert und die Varianz der Stichprobe geschätzt haben, ist es deshalb auch üblich, die Anzahl der Freiheitsgrade (df) um die Anzahl der geschätzten Parameter zu verringern. Es würde dann gelten: df = m - 1 - 2 In diesem Fall kommt man eher zum Verwerfen der (richtigen) Nullhypothese.
28
5 Mcnemar-Test
5 Der McNemar Test Wir wollen Ihnen nun einen Test zum Vergleich zweier verbundener dichotomer Stichproben vorstellen. Diese beiden (Teil-)Stichproben könnten z.B. wie folgt entstanden sein. Bei einer Umfrage zu zwei verschiedenen Zeitpunkten mit den selben Personen wurde eine Frage mit zwei Antwortmöglichkeiten gestellt. Es soll dabei untersucht werden, ob sich die Anzahl der Personen, die beim ersten mal mit 'ja' geantwortet haben und bei der zweiten Umfrage mit 'nein' antworteten, signifikant von der Anzahl der Personen unterscheidet, die umgekehrt von 'nein' nach 'ja' gewechselt sind. Dies ist äquivalent mit der Überprüfung, ob die Kontingenztafel
1. Umfrage ja nein
2. Umlfrage nein ja P12 Pn P21 p22
symmetrisch bezüglich der Hauptdiagonalen ist. Die obere Kontingenztafel enthält die Wahrscheinlichkeiten (z.B. pi2 ist die Wahrscheinlichkeit dafür, daß eine Person bei der ersten Umfrage mit ,ja" antwortet und bei der zweiten mit „nein"). Im konkreten Fall berechnen wir später die Kontingenztafel, die die absoluten Häufigkeiten n;j (die wir im Programm mit a,b,c und d bezeichnen) der Ausprägungskombinationen der Stichprobe enthält. Wir untersuchen mit dem Test nach McNemar, ob die Wahrscheinlichkeit, daß eine Person von ,ja" nach „nein" wechselt (pi2), verschieden ist von der Wahrscheinlichkeit, daß sie von „nein" nach, ja" wechselt (p2i). Wir testen die Nullhypothese: pi 2 = p2i
5 Mcnemar-Test
29
die gegen die Alternativhypothese: pi2
P21
Wir haben in unserem Beispiel die eine Antwortmöglichkeit mit '0' und die andere mit '1' kodiert. Wir beginnen mit der Definition der Datenmatrix V, deren erste Spalte die erste Teilstichprobe enthält und deren zweite Spalte entsprechend die zweite Teilstichprobe enthält. Dazu zählen wir zunächst die Häufigkeiten der einzelnen Antwortkombinationen aus und stellen diese in einer Kontingenztafel dar. V={{1,0},{1,0},{1,0},{1,0},{0,1},{1,1},{0,0}, {0,0}, {1,0}, {1,0}, {1,0}, {1,0}, {1,0}, {1,0}}; V//TableForm 1 0 1 0 1 0 1 0 0 1 1 1 0 0 0 0 1 0 1 0 1 0 1 0 1 0 1 0 h [ x j :=Count[V,v_/;v=x] Wegen der nächsten Anweisung sollten keine unbesetzten Zellen vorhanden sein. Ansonsten muß statt der nächsten Zeile die Variable UV analog der nächsten Ausgabe direkt als Eingabe definiert werden. UV=Union[V]
30
5 Mcnemar-Test
{{0, 0}, {0, 1}, {1, 0}, {1, 1}} {a,b,c,d}=Map[h,UV]; {{a,b},{c,d}}//MatrixForm
2 (\ 10 M 1/
Der Test von McNemar entspricht einem Test auf Symmetrie der oben stehenden Kontingenztafel. 10 Personen, die beim ersten mal mit '1' geantwortet haben, antworteten beim zweiten mal mit '0'. Umgekehrt hat nur eine Person, die beim ersten mal mit '0' geantwortet hat, beim zweiten mal mit '1' geantwortet. Diese Differenz geht dabei in die Berechnung der Prüfgrößen ein. Dabei stellen wir zwei Prüfgrößen vor. Die erste Prüfgröße pgl ist für Kontingenztafeln mit b + c > 3 0 geeignet. Die zweite Prüfgröße enthält eine Korrektur und ist auch für Kontingenztafeln mit 8 ^ b + c < 3 0 geeignet. Wir zeigen zuerst die Berechnung der Prüfgröße und des dazugehörigen p-Wertes für den ersten Fall, der in unserem Beispiel allerdings nicht zutrifft. Dazu benötigen wir den „Statistics"Master'Die Prüfgröße pgl ist dabei eine Realisierung einer asymptotisch mit einem Freiheitsgrad chiquadrat verteilten zufalligen Größe PG1. Needs [" Statistics" Master""] pgl=(b-c) A 2/(b+c+l); pgl//N 6.75 df=l; Prob=l-CDF[ChiSquareDistribution[df],pgl]//N 0.00937477
5 Mcnemar-Test
31
Für den zweiten Fall ergibt sich die folgende korrigierte Prüfgröße: pg2=(Abs[b-c]-l)A2/(b+c+l); pg2//N 5.33333 df=l;
Prob=l-CDF[ChiSquareDistribution[df],pg2]//N 0.0209213 Wie zu sehen ist, kann die Nullhypothese auf einem 5%-igen Signifikanzniveau verworfen werden, womit ein signifikanter Unterschied zwischen den Übergangswahrscheinlichkeiten nachgewiesen wäre.
32
6 Rangkorrelation
6 Rangkorrelation Wir wollen in diesem Kapitel zwei Rangkorrelationskoeffizienten berechnen. Der erste ist nach Spearman benannt, der zweite nach Kendall. Wir berechnen diese zunächst aus didaktischen Gründen Schritt für Schritt. Danach fuhren wir mit beiden Korrelationskoeffizienten einen Test auf Unabhängigkeit zweier Datenreihen durch. Das Datenniveau wird als mindestens ordinal skaliert vorausgesetzt. Die erste Datenreihe besteht aus n Realisierungen xi, x2, ...,x„ der unabhängig und identisch verteilten Zufallsvariablen Xi, X2, ... ,X„ und die zweite Datenreihe besteht analog aus den Realisierungen yi, y2, ... ,y„ der unabhängig und identisch verteilten Zufallsvariablen Yi, Y 2 ,... ,Y„. Die Hypothesen zu beiden Tests sind: Ho: Die Datenreihen sind unabhängig gegen H a : Die Datenreihen sind nicht unabhängig.
6.1 Rangkorrelationen nach Spearman Wir benötigen zunächst das von uns erstellte Modul „RANG", mit dem wir zu einer Datenreihe die Rangzahlen berechnen können. Dieses Modul haben wir bereits im zweiten Kapitel ausführlich beschrieben. Das Modul „RANG", das wir im zweiten Kapitel erstellt und abgespeichert haben, laden wir nun mit der „Get"-Anweisung hinzu. Wer dieses Modul dort nicht abgespeichert hat, muß es nun dort nachsehen und eingeben. Es ist auch unten nochmal aufgeführt, hier allerdings im Dünndruck, weil es hier in der Ausgabe von Mathematica
6 Rangkorrelation
33
steht. Der Verzeichnispfad zu diesem Modul in „c:\hilf wird über die „SetDirectory"-Anweisung erstellt. Die Datei in der das Modul steht hieß „rangmodul": SetDirectory["C:\hilP'] C:\hilf Get["rangmodul",RANG] ?RANG "Global RANG" RANG[yJ:=Module[{h,n,z,t,r,rij,yr}, h[vj:= Count[Flatten[y],a_/;v=a]; n=Length[y]; z=Union[Flatten[y]]; t=Map[h,z]; ry=Table[Sum[t[[j]],{j,l,k-l}]+(t[[k]]+l)/2, {k, 1 ,Length[z]} ]//N; r[vj:= Do [ If[v=z[[i]],a=ry[[i]]],{i,l,Length[z]}]; rij=Transpose[Table[{r[y[[i,l]]],a},{i,l,n}]][[2]]; {t,Transpose[ {rij} ]} ]
Als Ausgabe dieses Moduls erhalten wir eine Liste, die selbst aus zwei Listen besteht. Die erste Liste enthält zu jedem vorkommenden Wert der Datenreihe die absolute Häufigkeit für das Auftreten dieses Wertes. Die zweite Liste enthält die Rangzahlen. Es folgt die Definition der Datenmatrix V, deren Spalten die beiden zu vergleichenden Datenreihen enthalten. Danach laden wir den „Statistics" Master"" und übergeben die erste Datenreihe (erste Spalte der Matrix V) in die Liste x und die zweite Datenreihe in die Liste y.
34
6 Rangkorrelation
Needs [" S tatistics' Master*"] V={{4,5},{4,5},{9,7},{3.7,4.3},{6,5},{2.7,3},{5.1,5.2},{7.1,7.8}}; V//MatrixForm 4 5 4 5 7 9 3.7 4.3 6 5 2.7 3 5.1 5.2 , 7 . 1 7.8 j x=ColumnTake[V, {1} ] {{4}, {4}, {9}, {3.7}, {6},
{2.1},
{5.1}, {7.1}}
y=ColumnTake[V,{2}] {{5}, {5}, {7}, {4.3}, {5}, {3}, {5.2}, {7.8}} Nun können wir mit unserem Modul RANG die Ränge der beiden Datenreihen x und y berechnen und in den Listen rangx und rangy speichern. Wir übergeben dabei jeweils nur den zweiten Teil bzw. die zweite Liste der Ausgabe des Moduls Rang mit „[[2]]", da der erste Teil die absoluten Häufigkeiten der in der jeweiligen Teilstichprobe auftretenden Beobachtungen enthält. rangx=RANG[x][[21] {{3.5}, {3.5}, {8.}, {2.}, {6.}, {1.}, {5.}, {7.}} rangy=RANG[y][[2]] {{4.}, {4.}, {7.}, {2.}, {4.}, {1.}, {6.}, {8.}}
6 Rangkorrelation
3 5
n=Length[x]
8 Es folgt die Berechnung der Mittelwerte der Ränge mrx und mry. Mit diesen Mittelwerten können wir dann den Rangkorrelationskoeffizienten nach Spearman (rmxy) berechnen. Dieser wird analog dem Ansatz von Pearson aus den Rangzahlen berechnet. mrx=Apply [Plus,Platten [rangx] ]/n; mrx//N 4.5 mry=Apply[Plus,Flatten[rangy]]/n; mry//N 4.5 mx=Flatten [rangx-mrx] { - 1 . , - 1 . , 3.5, -2.5, 1.5, - 3 . 5 , 0.5, 2.5} my=Flatten [rangy-mry] { - 0 . 5 , - 0 . 5 , 2.5, - 2 . 5 , - 0 . 5 , - 3 . 5 , 1.5, 3.5}
rmxy=(mx.my)/Sqrt[mx.mx*my.my] 0.908129 Da der Rangkorrelationskoeffizient nach Spearman mit einem Wert von 0,9081... recht groß ist (dieser kann Werte zwischen -1 und 1 annehmen), läßt dies eine positive Korrelation vermuten.
36
6 Rangkorrelation
Wir berechnen nun die Prüfgröße (in diesem Fall die Hotelling-PabstStatistik), mit der wir den Test durchführen können. Dazu übergeben wir die Liste mit den absoluten Häufigkeiten der Werte der Datenreihen x und y in die Listen tx und ty. Da in unserem Beispiel einige Werte mehrfach vorkommen, werden diese zur Berechnung der Prüfgröße benötigt, um die Bindungen zu berücksichtigen: d=Flatten [Transpose [rangx-rangy] .(rangx-rangy)] [ [1] ] 7.5 tx=RANG[x][[l]] { 1 , 1, 2, 1, 1, 1, 1} ty=RANG[y][[l]] { 1 , 1, 3, 1, 1, 1} ED=( l/6)(nA 3-n)(1/12) Apply[Plus,tx A 3-tx](1/12) Apply[Plus,ty A 3-ty]; ED//N 81.5 VarD=(l/36 (n-l)*(n+l) A 2 * n A 2)* (l-(Apply[Plus,tx A 3-tx])/(n A 3-n))* (l-(AppIy[Plus,ty A 3-ty])/(n A 3-n)); VarD//N 948.571 Wir berechnen nun die Prüfgröße t, die eine Realisierung einer asymptotisch standardnormalverteilten Zufallsvariable T darstellt. Mit dieser fuhren wir dann den Test durch. FN ist dabei wieder die Verteilungsfunktion der Standardnormalverteilung.
6 Rangkorrelation
37
t=(d-ED)/Sqrt [VarD] ; t//N -2.40268 FN[zJ:=CDF[NormalDistributlon[0,l],z] ProbApprox=2(l-FN [Abs [t] ] ) 0.0162752 Wie zu sehen ist, kann die Nullhypothese der Unabhängigkeit auf einem Signifikanzniveau von 5 % verworfen werden (ProbApprox < 0,05), womit wir einen signifikanten Zusammenhang zwischen den Meßreihen nachgewiesen hätten. Bemerkung: So können Sie den Korrelationskoeffizienten nach Spearman auch direkt mit Mathematica berechnen: SpearmanRankCorrelation[Flatten[x],Flatten[y]]//N 0.908129
Den Zusammenhang wollen wir uns nun noch grafisch veranschaulichen, indem wir die Rangpaare in der Ebene zeichnen: Needs [" LinearAlgebra' MatrixManipulation"" ] ListPlot[AppendRows[rangx, rangy], PlotStyle->PointSize[0.012]]
38
6 Rangkorrelation
Die positive Korrelation ist an der obigen Grafik deutlich zu erkennen.
6 Rangkorrelation
39
6.2 Rangkorrelationen nach Kendall Mit den Daten aus der Datenmatrix V aus dem vorhergehenden Beispiel berechnen wir nun den Rangkorrelationskoeffizienten nach Kendall und fuhren mit diesem den Test auf Unabhängigkeit der Datenreihen durch. Auch hier benötigen wir das Modul „RANG", das wir im zweiten Kapitel erstellt und abgespeichert haben. Wir laden es mit der „Get"- Anweisung hinzu. Der Verzeichnispfad zu diesem Modul in c:\hilf wird wieder über die „SetDirectory"-Anweisung gesetzt. Die Datei in der das Modul steht hieß ,/angmodul": Needs["Statistics Master "] SetDirectory["C:\hilf'] C:\hilf Get [" rangmodul" ,RANG] ?RANG "Global" RANG" RANG[yJ :=Module[ {h,n,z,t,r,rij,yr}, h[vj:= Count [Flatten[y] ,a_/ ;v=a]; n=Length[y]; z=Union[Flatten[y]]; t=Map[h,z], ry=Table[Sum[t[[j]],{j,l,k-l}]+(t[[k]]+l)/2, {k, 1 ,Length[z]} ]//N; r[vj:= Do [ K[v==z[[i]],a=ry[[i]]], {i, 1 ,Length[z]} ]; rij=Transpose[Table[{r[y[[i,l]]],a},{U,n}]][[2]]; {t,Transpose[ {rij} ]} ]
40
6 Rangkorrelation
V={{4,5},{4,5},{9,7},{3.7,4.3},{6,5},{2.7,3},{5.1,5.2},{7.1,7.8}}; V//MatrixForm 4 5 4 5 7 9 3.7 4.3 6 5 2.7 3 5 . 1 5.2 17.1 7.8j Needs [" Statistics' Master""] x=ColumnTake[V,{l}] {{4},{4},{9},{3.7},{6},{2.7},{5.1},{7.1}} y=ColumnTake[ V, {2} ] {{5},{5},{7},{4.3},{5},{3},{5.2},{7.8}} rangx=RANG[x][[2]] {{3.5},{3.5},{8.},{2.},{6.},{1.},{5.},{7.}} rangy=RANG[y][[2]] {{4.},{4.},{7.},{2.},{4.},{1.},{6.},{8.}}
Die Rangzahlen berechnen sich genau wie beim Rangkorrelationskoeffizienten nach Spearman. Wir fassen nun die Rangzahlen und eine Liste nr (zur Numerierung der Zeilen) zu einer Matrix zusammen. Danach sortieren wir nach der Rangzahl der ersten Meßreihe und innerhalb dieser nach der zweiten Meßreihe aufsteigend.
6 Rangkorrelation
41
n = Length [V] 8 nr=Table[i,{i,l ,n}]; R=Sort [Transpose[{Flatten [rangx],Flatten [rangy] ,nr} ] ]; R//MatrixForm 1. 2. 3.5 3.5 5. 6. 7. 8.
1. 2. 4. 4. 6. 4. 8. 7.
6 ) 4 1 2 7 5 8
31
Wir sehen anhand der letzten Spalte der Matrix R, wie die ursprünglichen Zeilen der Matrix vertauscht wurden. Nun speichern wir in der Matrix XY nur die beiden ersten Spalten, denn die letzte Spalte mit der Numerierung diente nur der Veranschaulichung. In der Literatur wird oft die Sortierung so beschrieben, daß die erste Spalte aufsteigend und innerhalb dieser Sortierung die zweite Spalte absteigend sortiert werden soll. Wir berechnen aber später den RangKorrelationskoeffizienten nach Kendall mit speziellen MathematicaAnweisungen, die unabhängig von der Sortierung zum gleichen Ergebnis kommen. XY=ColumnTake[R, {1,2}]; XY//MatrixForm
42
6
1. 2. 3.5 3.5 5. 6. 7. 8.
Rangkorrelation
1. 2. 4. 4. 6. 4. 8. 7.
Wir wollen nun eine Funktionen in zwei Variablen x und y definieren, mit der wir die Anzahl der Zeilen der Matrix X Y bestimmen können, die in der ersten Spalte einen Wert größer oder gleich x und in der zweiten Spalte einen Wert kleiner oder gleich y haben. Diese Häufigkeit verringern wir um 1, denn wir wollen die Zeile, für die die Bedingung gerade noch erfüllt ist, nicht mitzählen, sondern nur alle vorangehenden Zeilen. Durch die so definierte Funktion, ist wie bereits beschrieben, die spezielle Sortierung der Matrix X Y unerheblich. qfl{x_,yJ]:=Count[XY,a_/;And[a[[l]]>=x,a[[2]]0,l,0],{i,l,n}] {0,0,1,1,1,1,0,1} tp!us=Apply [Plus,c*rangv] 29.5 Über diese Prüfgröße, welche eine Realisierung einer asymptotisch normalverteilten zufalligen Größe ist, berechnen wir die standardisierte Prüfgröße PG zunächst ohne die Berücksichtigung von Bindungen. Wir bestimmen nun den Erwartungswert „Etplus" und die Varianz „Vartplus" der Zufallsvariable, deren Realisierung unsere Größe tplus ist. Etplus=n(n+l)/4; Etplus//N 18.
Vartplus=n(n+l)(2n+l)/24; Vartplus//N 51. PG=(tplus-Etplus)/Sqrt [Vartplus]; PG//N 1.61032 Mit dieser Prüfgröße könnten wir jetzt den p-Wert berechnen und den Test durchfuhren. Da in unserem Fall Bindungen vorkommen (die Liste
52
8 Wilcoxon-Vorzeichenrangtest I
t besteht nicht nur aus Einsen, da Werte auch doppelt bzw. dreifach vorkommen), wollen wir den p-Wert und die Prüfgröße PG unter Berücksichtigung dieser Bindungen berechnen. Dabei definieren wir die Varianz „Vartplus", welche Bindungen berücksichtigt, neu.
Vartplus=(n(n+l)(2n+l)-(l/2)*Apply[Plus,t(t-l)(t+l)l)/24; Vartplus//N 50.25 PG=(tplus-Etplus)/Sqrt [Vartplus]; PG//N 1.62229 Die folgende Funktion FN stellt wieder die Verteilungsfunktion der Standardnormalverteilung dar. Mit dieser berechnen wir nun den pWert „ProbApprox" des approximativen Tests: FN|x]:=CDF[NormalDistribution[0,l],x] ProbApprox=2(l-FN[Abs[PG]]) 0.10474 Wie anhand des p-Werts (ProbApprox > 0,05) zu sehen ist, kann auf einem Signifikanzniveau von 5% die Nullhypothese nicht verworfen werden und demnach kein Unterschied des Medians vom Wert 2 nachgewiesen werden.
9 Kruskal- Wallis- Test
53
9 Der Kruskal-Wallis Test 9.1 Globaler Vergleich Der Test von Kruskal und Wallis, auch H-Test genannt, ist ein Test, mit dem man die Verteilungen von Teilstichproben auf Unterschiede untersuchen kann. Dieser Test geht davon aus, daß m Teilstichproben mit nicht notwendigerweise gleichen Teilstichprobenumfängen vorliegen. Die Teilstichproben sollen nicht verbunden (d.h. unabhängig) sein. Jede Teilstichprobe wird als Realisierung von unabhängig identisch verteilten Zufallsvariablen verstanden. Das Datenniveau sollte mindestens einer Ordinalskala genügen. In unserem Beispiel handelt es sich um 3 Teilstichproben mit gleichen Teilstichprobenumfängen. In unserem Beispiel gehen wir davon aus, daß bei drei Gruppen von Versuchspersonen die Testleistungen gemessen wurden. Dabei erfassen wir in einer Variablen die Testleistungen aller Personen und in einer zweite Variable die Gruppenzugehörigkeit (Gruppe 1 bis 3). Die Teilstichproben ergeben sich nun, indem man die Gesamtstichprobe nach den Ausprägungen dieser zweiten Variable aufteilt. Allgemein wird folgende Hypothese getestet: Ho: FI(z) = F2(Z) = ... = Fm(z) für alle z gegen H a : nicht alle m Verteilungen sind gleich für mindestens ein z
In unserem Beispiel wollen nun die Verteilungen der drei Teilstichproben vergleichen. Dazu definieren wir zunächst die Liste y, die die Beobachtungen aller drei Teilstichproben enthält, und später die Liste x, mit der wir festlegen, welche Beobachtungen zur ersten, zweiten oder dritten Teilstichprobe gehören. Dabei kann man die Liste
54
9 Kruskal- Wallis-Test
y als die abhängige Variable auffassen und die Liste x als die unabhängige, wie dies auch bei vielen Statistikprogrammpaketen getan wird. Wir beginnen mit der Definition von y. Danach programmieren bzw. laden wir wieder unser Modul RANG zur Rangzahlenberechnung. Needs["Statistics Master "] y=Transpose[{{8.7,1.1,4.9,3.8,7.5,16.7,17.1,15.3, 14.5,12,5.8,9.3,17.5,9,11.3,20.2,16.3,16.7}}]; Wir benötigen wieder das von uns erstellte Modul „RANG", mit dem wir zu einer Datenreihe die Rangzahlen berechnen können. Das Modul „RANG", das wir im zweiten Kapitel erstellt und abgespeichert haben, laden wir nun mit der „Get"-Anweisung hinzu. Wer dieses Modul dort nicht abgespeichert hat, muß es nun dort nachsehen und eingeben. SetDirectory["C:\hilf'] C:\hilf Get["rangmodul",RANG] ?RANG "Global'RANG" RANG[yJ: =Module[ {h,n,z,t,r,rij,yr}, h[vj:= Count[Flatten[y],a_/;v=a]; n=Length[y]; z=Union[Flatten[y]], t=Map[h,z]; ry=Table[Sum[t[[j]], {j, 1 ,k-1} ]+(t[[k]]+1 )/2, {k,l,Length[z]}]//N; r [ v j : = Do [ If[v=z[[i]],a=ry[[i]]],{i,l,Length[z]}];
9 Kruskal-Wallis-Test
55
rij=Transpose[Table[{r[y[[i,l]]],a},{i,l,n}]][[2]]; {t,Transpose[{rij}]} ] Wir bestimmen nun die Rangzahlen für die gesamte Stichprobe y und die absoluten Häufigkeiten für das Auftreten der einzelnen Beobachtungen, die wir bei der Berechnung der Prüfgröße unter der Berücksichtigung von Bindungen benötigen. yr=RANG[y][[2]] {{6.}, {1.}, {3.}, {2.}, {5.}, {14.5}, {16.}, {12.}, {11.}, {10.}, {4.}, {8.}, {17.},{7.},{9.},{18.},{13.},{14.5}} t=RANG[y][[l]] {1,1,1,1,1,1,1,1,1,1,1,1,1,2,1,1,1} In der Liste x (kleines „x") speichern wir die Kennzeichnung der Gruppenzugehörigkeit der in y gespeicherten Beobachtungen zur entsprechenden Teilstichprobe 1, 2 oder 3. *={1,1,1,1,1,1,2,2,2,2,2,2,3,3,3,3,3,3}; Mit Hilfe der folgenden Designmatrix X (großes „X") berechnen wir die Summen der Rangzahlen Rj innerhalb der jeweiligen Teilstichproben. X=Table[Table[If[x[[i]]=k,l,0],{k,l,Length[Union[x]]}], {i,l,Length[y]}]; Rj=Flatten[Transpose[X].yr]; Rj//N {31.5,61.,78.5} Bemerkung:
56
9 Kruskal- Wallis- Test
Sollten Sie die Zugehörigkeit zu einer Gruppe bzw. Teilstichprobe mit anderen Werten (als die Werte 1,2,3,..) bezeichnen, wie wir das mit unserer Liste x getan haben, so müssen Sie anstelle der oberen Anweisung (für die Definition von X) die folgende verwenden: X=Table[Table[If[x[[i]]=Union[x][[k]], 1,0], {k, 1 ,Length[Union[x]]} ], {i,l,Length[y]}];
Im folgenden enthält die Liste nj die Teilstichprobenumfange, die Variable n erfaßt den Umfang der Gesamtstichprobe und g erfaßt die Anzahl der Beobachtungen, ohne die doppelt vorkommenden Werte in der Gesamtstichprobe: nj=Table[Count[x,v_/;v=l],{i,Min[x],Max[xl}] {6,6,6} n=Length[y]; g=Length [Union [y] ];
Nun kommen wir zur Berechnung der Prüfgröße h. Dabei benötigen wir zunächst die unten bestimmte Variable b, die den Wert 1 aufweist, falls keine Bindungen vorhanden sind. In unserem Fall gibt es eine Bindung (siehe Liste t). b=l-(l/(n A 3-n))*Sum[t[[i]] A 3-t[[i]],{i,l,g}]; b//N 0.998968 p=Length [Union [x] ] 3
9 Kruskal- Wallis- Test
57
h=l/b*(12/(n*(n+l))*Sum[(l/nj[[i]])*Rj[[i]]A2,{i,l,p}]-3*(n+l)); h//N 6.60623 h ist eine Realisierung einer asymptotisch Chi-Quadrat verteilten zufälligen Größe, womit wir den p-Wert berechnen können. In der Praxis sollten aber, da wir den Test über die asymptotische Verteilung den p-Wert berechnen, die Teilstichprobenumfange größer oder gleich 5 und mindestens 3 Teilstichproben vorhanden sein. Wie anhand des pWertes zu sehen ist, kann die Nullhypothese der Gleichheit der Verteilungen verworfen werden. Wir haben somit einen signifikanten Unterschied zwischen den Teilstichproben nachgewiesen. F[x]:=CDF[ChiSquareDistribution[p-lJ,x] 1-F[h]//N 0.0367684
58
9 Kruskal-
Wallis-Test
9.2 Multipler Vergleich In unserem Beispiel haben wir gesehen, daß sich mindestens eine der drei Teilstichproben signifikant von einer anderen (in Bezug auf ihre Verteilungsfunktion) unterscheidet, wir können aber nicht sagen, welche dies im einzelnen sind. Hierzu ist ein multipler paarweiser Vergleich der Teilstichproben nötig, den wir im folgenden mit unserem Beispiel durchfuhren möchten. Die hier benutzte Form des Tests wird bei Sachs [8] als Chi-Quadrat Ansatz bezeichnet Dazu verwenden wir die Daten und die berechneten Größen aus dem vorhergehenden Abschnitt. Wie beginnen mit der Berechnung der mittleren Ränge: mRj=Rj/nj {5.25,10.1667,13.0833} Über die mittleren Ränge berechnen wir nun die Prüfgrößen „pgm" für die paarweisen Vergleiche. Diese können ebenfalls als Realisierungen von asymptotisch Chi-Quadrat verteilten zufälligen Größen angesehen werden. Hierbei sollten die Teilstichprobenumfänge mindestens 6 Beobachtungen aufweisen. In der Liste „Rd" speichern wir die Differenzen zwischen den mittleren Rängen. Dabei besteht diese Liste wiederum aus drei Listen, wobei in der ersten dieser drei Listen die Differenzen zwischen dem ersten und dem zweiten, sowie die zwischen dem ersten und dem dritten mittleren Rang steht. Die zweite Liste enthält dann noch die Differenz zwischen dem zweiten und dem dritten mittleren Rang. Die dritte Liste ist leer, da es keine weiteren Differenzen gibt. Die folgenden Listen sind in der gleichen Reihenfolge zu interpretieren. Rd=Table[mRj[[i]]-mRj[|j]],{i,l,p},{j,i+l,p}] {{-4.91667,-7.83333},{-2.91667},{}}
9 Kruskal- Wallis-Test
59
Die Liste „temp" dient zum Speichern der Summen der reziproken Teilstichprobenumfänge, die in unserem Fall alle gleich sind. Diese Summen werden zur Berechnung der Prüfgrößen in der Liste „pgm" benötigt. Dabei nutzen wir die in Mathematica möglichen Operationen für Listen, indem wir mit Rd2 jedes Element der Liste „Rd" quadrieren. Wenn wir dann zur Berechnung der Prüfgröße dieses Ergebnis durch die Liste „temp" teilen, so wird jeweils der Quotient aus den entsprechenden Listenelementen gebildet. Dabei stehen im Nenner auch einfache reelle Zahlen. Hier wird jedes Element Rd 2 der Liste durch diese Zahl dividiert.
temp=Table[l/nj[[i]]+l/iij[ü]],{i,l,p},{j,i+l,p}]
pgm=RdA2/(b*temp*n*(n+l)/12) {{2.54722,6.46574},{0.896393},{}} Es folgt die Berechnung der Liste „prob" aller p-Werte. Dabei wird auf jedes Element der Liste „pgm" die Verteilungsfunktion F der ChiQuadrat-Verteilung mit p-1 Freiheitsgraden angewendet und das Ergebnis von 1 subtrahiert.
prob=l-F[pgm] {{0.27982,0.0394442},{0.638779},{}} Auf einem 5%-igen Signifikanzniveau kann also nur ein Unterschied zwischen der ersten und der zweiten Teilstichprobe nachgewiesen werden (p-Wert = 0,03944... < 0,05).
60
10 Friedman-Rang-
Varianzanalyse
10 Die Friedman Rang - Varianzanalyse Der Test von Friedman ist das Analogon zur Varianzanalyse, nur daß dieser Test nichtparametrisch ist und deshalb im Gegensatz zur Varianzanalyse keine Normalverteilung voraussetzt. Das Dateniveau wird als mindestens ordinal skaliert vorausgesetzt. Wir gehen nun von m Teilstichproben gleichen Umfangs aus, die verbunden (d.h. abhängig) sind. Dabei könnte es sich beispielsweise um eine Studie zur Untersuchung der Gewichtsveränderung von n Personen handeln, von denen die Körpergewichte aus m Zeitpunkten vorliegen. Wir gehen allgemein vom Modell der doppelten Varianzanalyse aus: Xij = n + BOXW,
70
11 Wilcoxon-Rangsummentest
PlotRange->{{0,3},{Min[yl]-l,Max[yl]+l}}, PlotStyle->PointSize[0.01]]
0.5
1
1.5
2
2.5
3
Wir haben ja bereits mit unserem vorher durchgeführten Test nach Wilcoxon einen signifikanten Unterschied zwischen den Verteilungen bzw. der Mediane nachgewiesen. Dies zeigt auch die Grafik. Wie zu sehen ist, gibt es wesentliche Unterschiede in den Verteilungen der beiden Teilstichproben, denn zum einen sind die empirischen Mediane stark unterschiedlich, zum anderen zeigen die Grenzen der Boxen an, daß sich die empirischen Quartiisbereiche nicht überlagern, was auf einen wesentlichen Unterschied der Verteilungen hinweist.
12 Page-Test
71
12 Der Page Test Der Page Test ist ein nichtparametrischer Test auf Trend. Wir gehen dabei von p Teilstichproben und dem folgenden Modell (analog zum Test nach Friedman) aus: Xij = M- + cii + ßj + Eij, i = 1, 2,..., n; j = 1, 2,..., p Dabei ist Xy die i-te Beobachtung der j-ten Teilstichprobe (oder auch der j-ten Behandlung). Ey sind die Fehlervariablen, die innerhalb einer Teilstichprobe bzw. Gruppe paarweise voneinander unabhängig sein müssen, cti ist der Effekt der i-ten Beobachtung und ßj der Effekt der jten Gruppe. Wir wollen nun auf einen Unterschied zwischen den Gruppen testen und formulieren die Hypothesen, wobei es insgesamt 3 mögliche Alternativhypothesen gibt: Ho: ßi = ß2 = .. =ßm gegen HAI: mindestens ein ßj ist verschieden von ßk H^: ß l < ß 2 < HAS:
. ß2 > ... > ßm
In dem folgenden Beispiel wollen wir einen positiven Trend nachweisen, d.h. wir wählen die Alternativhypothese Ha2. Wir beschreiben aber zusätzlich die Berechnung der p-Werte für alle 3 Alternativhypothesen. Wir beginnen mit der Definition der Datenmatrix V, deren Spalten die Beobachtungen der vier Teilstichproben enthält:
72
¡2 Page-Test
Needs["Statistics , Master " ] V={{50,55,56,56},{80,85,90,100},{60,70,71,72},{55,55,58,61}, {55,54,58,56},{50,60,75,78}}; V//MatrixForm 50 80
55 85
60 55 55
70 55 54
50
60
56 90 71
100 72
56
58 58
61 56
75
78
Nun laden bzw. programmieren wir unser Modul R A N G zur Rangzahlenbestimmung. Wir werden dann in Analogie zur FriedmanRangvarianzanalyse die Rangzahlen getrennt für jede Zeile der Datenmatrix V bestimmen. Der Page Test ist wie die FriedmanRangvarianzanalyse auch für abhängige Teilstichproben geeignet. SetDirectory["C:\hilf'] C:\hilf Get["rangmodul",RANG] ?RANG "Global R A N G " R A N G [ y J : =Module[ {h,n,z,t,r,rij,yr}, h [ v j : = Count[Flatten[y],a_/;v=a]; n=Length[y]; z=Union[Flatten[y] ]; t=Map[h,z]; ry=Table[Sum[t[[j]], {j, 1 ,k-1} ]+(t[[k]]+1 )/2,
12 Page-Test
73
{k,l,Length[z]}]//N; r[vJ:=Do[ If[v=z[[i]],a=ry[[i]]],{i,l,Length[z]}]; rij=Transpose[Table[ {r[y[[i, 1 ]]],a}, {i, 1 ,n} ]] [[2]]; {t,Transpose[{rij}]} ] Als Beispiel berechnen wir die Rangzahlen für die erste Zeile der Datenmatrix V. Da in dieser Zeile Bindungen auftreten (die dritte und vierte Beobachtung weisen den gleichen Wert auf), werden an dieser Stelle die mittleren Ränge vergeben: RANG[Transpose [ {V[ [ 1 ] ]} ] ] [ [2] ] {{1.}, {2.},
{3.5}, {3.5}}
n=Length[V] 6 RV=Table[Flatten[RANG[Transpose[{V[[i]]}]][[2]]],{i,l,n}]; RV//MatrixForm 1. 2. 3.5 3.5 1. 2. 3. 4. 1. 2. 3. 4. 1.5 1.5 3. 4. 2. 1. 4. 3. , 1. 2. 3. 4. ) Die obere Matrix RV enthält in ihren Zeilen die Rangzahlen der Zeilen der Datenmatrix V. n ist hier der Umfang der Teilstichproben und in der Variablen p wird die Anzahl der Teilstichproben erfaßt. p=Length [Transpose[V]] 4
74
12 Page-Test
Die Liste Rj enthält die Summe der Rangzahlen innerhalb jeder Teilstichprobe. Zur Berechnung der Prüfgröße wird nun die erste Rangsumme mit 1, die zweite mit 2, usw. multipliziert und über diese gewichteten Rangzahlen summiert. Diese gewichtete Summe speichern wir in der Variablen tp. Rj =AppIy [Plus,RV] {7.5,10.5,19.5,22.5} g=Table[i,{i,l,p}] {1,2,3,4} tp=gRj 177. Im folgenden berechnen wir den Erwartungswert und die Varianz der Zufallsvariable (unter Ho), deren Realisierung die gewichtete Summe tp ist. Danach bestimmen wir die Prüfgröße z, die eine Realisierung einer asymptotisch standardnormalverteilten Zufallsvariable Z ist. ETP=l/4*n*p*(p+l) A 2; ETP//N 150. VarTP=l/144* n*p A 2(p A 2-l)(p+l); VarTP//N 50. z=(tp-ETP)/Sqrt[VarTP] 3.81838
12 Page-Test
75
Wir definieren nun wieder die Verteilungsfunktion FN der Standardnormalverteilung, mit der wir die p-Werte bestimmen können: FN[xJ:=CDF[NormalDistribution[0,l],x] Da wir einen positiven Trend nachweisen und somit die Nullhypothese zugunsten der zweiten Alternativhypothese (Ha2) verwerfen wollen, definieren wir den p-Wert wie folgt: Prob 1 SideR=l -FN [z]//N 0.0000671664 Wir können also die Nullhypothese zugunsten der zweiten Alternativhypothese (Ha2) auf einem Signifikanzniveau von 5% verwerfen (ProblSideR < 0,05), womit wir einen signifikanten positiven Trend nachgewiesen hätten. Hätten wir uns für die dritte Alternativhypothese (Ha3) entschieden und hätten somit eine negativen Trend (also ein Abfallen der Werte in den Zeilen der Datenmatrix V) nachweisen wollen, so hätten wir den pWert ProblSideL verwenden müssen, mit dem wir natürlich in unserem Fall nicht zum Verwerfen der Nullhypothese gekommen wären. Prob 1 SideL=FN [z]//N 0.999933 Falls wir nur einen Unterschied ohne speziellen Trend nachweisen hätten wollen, so hätten wir die dritte Alternativhypothese gewählt. In diesem Fall ist der folgende p-Wert Prob2Side zu verwenden, mit dem wir in unserem Fall ebenfalls zum Verwerfen der Nullhypothese gekommen wären. Prob2Side=2(l-FN[Abs[z]])//N
76
12 Page-Test
0.000134333
13 Wilcoxon- Vorzeichenrangtest II
77
13 Der Wilcoxon Vorzeichenrangtest für zwei verbundene Stichproben Zur Durchfuhrung des Vorzeichenrangtests nach Wilcoxon müssen zwei verbundene Teilstichproben gleichen Stichprobenumfangs vorliegen. Bei diesem Test wird die Differenz beider Teilstichproben gebildet und danach wird mit der Differenz der Werte der Wilcoxon Vorzeichenrangtest für eine Stichprobe durchgeführt mit den Hypothesen Ho: Median = 0 gegen H a : Median * 0 Wir testen somit auf Gleichheit der Mediane beider Teilstichproben. In unserem Beispiel sei die Datenmatrix X gegeben, in der die beiden verbundenen Teilstichproben erfaßt sind. Sie sehen in der zweiten Teilsstichprobe eine Beobachtung mit dem Wert 12, die offensichtlich ein Ausreißer darstellt. Da bei der Berechnung der Prüfgröße nur der Rang dieser Beobachtung eingeht, beeinflußt der Wert des Ausreißers den Test nur indirekt. Needs [" Statistics" Master'"] X=Transpose[{{4.6,1.3,0.5,1.6,-4.2,2.1,-3,3.2,2.2,-0.6,-0.3,0.0,-2.1, 1.2,-0.2}, {-0.7,0.9,4.3,-1.6,-4.1,-3,-12,0.8,-0.9,1.1,1.9,--1.3, 3.2,-1.2,1.5}}]; X//MatrixForm
78
(
4.6 1.3 0.5 1.6 -4.2 2.1 -3 3.2 2.2 -0.6 -0.3 0. -2.1 1.2 -0.2
13 Wilcoxon-Vorzeichenrangtest II
-0.7 0.9 4.3 -1.6 -4.1 -3 -12 0.8 -0.9 1.1 1.9 -1.3 3.2 -1.2 1.5 >
Wir bilden die Differenz aus der ersten und der zweiten Zeile. Das Ergebnis speichern wir in der Liste d.
d=ColumnTake[X,{l}]-ColumnTake[X,{2}]; d//MatrixForm I
-3 0.4 -3.8 3.2 5
-0.1
5.1 9 2.4 3.1 -1.7 -2.2
1.3 -5.3 2.4 -1.11
13 Wilcoxon-Vorzeichenrangtest
II
79
Es ist zu Beachten, daß Mathematica wegen Rundungsfehlern bei der obigen Differenzbildung Zahlenwerte als ungleich betrachtet, wenn Sie sich in einer für uns nicht relevanten Nachkommastelle unterscheiden. Da wir uns jedoch nur für die erste Nachkommastelle als relevante Stelle interessieren, müssen wir dafür sorgen, das Mathematica unsere Zahlenwerte auf diese Stelle rundet. Dies tun wir mit der folgenden Anweisung. Sollten Sie mit einem Datensatz rechnen, bei dem mehr als die erste Nachkommastelle von Interesse sind, so müssen Sie nur die beiden Zahlen 10 in der folgenden Anweisung durch die entsprechende Zehnerpotenz ersetzen. Unterläßt man die Rundung, so führt dies zu Fehlern bei der Rangbildung. d=Round[d*10]/10//N; Im nächsten Schritt definieren wir wieder unser Modul RANG zur Berechnung der Rangzahlen und der absoluten Häufigkeiten der Beobachtungen. Danach übergeben wir in n die Teilstichprobenumfänge und in t die Liste der absoluten Häufigkeiten der Werte aus der Liste der Differenzen d. Die Rangzahlen speichern wir in der Liste rang. RANG[y_]: =ModuIe [ {h,n,z,t,r,rij ,y r}, h[vj:= Count [Flatten [y] ,a_/; v = a ] ; n=Length[y]; z=Union [Flatten [y] ]; t=Map|h,zj; ry=Table[Sum[t[[j]],{j,l,k-l}]+(t[[k]]+l)/2, {k,l,Length[z]}]//N; r[vj:= Do [ H [ v = z [ [i] ] ,a=ry [ [i] ] ], {i, 1 »Length [z]} ]; rij=Transpose[Table[{r[y[[i,l]]],a},{i,l,n}]][[2]]; {t,Transpose [ {rij}]} ] n=Length[d]
80
13 Wilcoxon-Vorzeichenrangtest
II
15
t=RANG[Abs[d]][[l]] {1,1,1,2,1,2,1,1,1,1,2,1} rang-FIatten| RANG |Abs[d]] [[2]]] {13.5,2.,11.,10.,1.,12.,15.,7.5,9.,4.5,6.,3.,13.5,7.5,4.5} Wir wollen nun jede Rangzahl der Liste rang mit dem Vorzeichen der entsprechenden Beobachtung versehen. Dazu das Ergebnis wird in der Liste rangv gespeichert. sig=Flatten [Sign [d] ] {1,1,-1,1,-1,1,1,1,1,-1,-1,1,-1,1,-1} rangv=rang*sig {13.5,2.,-11.,10.,-1.,12.,15.,7.5,9.,-4.5,-6.,3.,-13.5,7.5,-4.5} Bei der Berechnung der Prüfgröße tplus wird nur über die Rangzahlen summiert, die zu positiven Beobachtungen gehören. Aus dieser Prüfgröße bilden wir dann die Prüfgöße pg, welche als eine Realisierung einer asymptotisch standardnormalverteilten Zufallsvariable angesehen werden kann, indem wir von der Realisierung tplus (der Zufallsvariablen TPLUS) den Erwartungswert Etplus subtrahieren und das Ergebnis durch die Wurzel aus der Varianz Vartplus dividieren. c=Table[Iflrangv[[i]]>0,l,0],{i,l,n}] {1,1,0,1,0,1,1,1,1,0,0,1,0,1,0}
13 Wilcoxon-Vorzeichenrangtest 11
81
tplus=Apply [Plus,c* rangv] 19.5
Etplus=n(n+l)/4; Etplus//N 60.
Vartplus=n(n+l)(2n+l)/24; Vartplus//N 310. Die obere Varianz Vartplus berücksichtigt keine Bindungen. Mit dieser Varianz ergibt sich die folgende Prüfgröße pg. Da es aber in unserem Fall Bindungen gibt (einige Differenzen in der Liste d kommen doppelt vor), berechnen wir danach die Prüfgröße pg nochmals unter der Berücksichtigung der Bindungen (mit der entsprechenden Varianz). Mit dieser Prüfgröße berechnen wir dann den p-Wert. PG=(tplus-EtpIus)/Sqrt [Vartplus]; PG//N 1.10753 Vartplus=(n(n+l)(2n+l)-(l/2)*Apply[Plus,t(t-l)(t+l)])/24; Vartplus//N 309.625 PG=(tplus-Etplus)/Sqrt [Vartplus]; PG//N 1.1082
82
13 Wilcoxon-Vorzeichenrangtest II
Prob=2(l-CDF[NormalDistribution[0,l],Abs[PG]])//N 0.267777 Über die oben definierte Verteilungsfunktion FN der Standardnormalverteilung berechnen wir den p-Wert ProbApprox. Wie zu sehen ist, kann die Nullhypothese auf einem Signifikanzniveau von 5% nicht verworfen werden, womit kein signifikanter Unterschied zwischen den Medianen der beiden Teilstichproben nachgewiesen werden kann.
14 Logistische Regressionsanalyse
83
14 Die logistische Regressionsanalyse Mit der logistischen Regressionsanalyse hat man die Möglichkeit den Einfluß einer stetigen Variable X auf eine dichotome Variable Y zu untersuchen. Wir nehmen nun an, daß die dichotome Variable die beiden möglichen Ausprägungen '0' und '1' besitzt. Ist dabei z.B. die zweite Ausprägung von Interesse, so gehen wir von dem folgenden Modell aus: a+ßx
P(Y = l|X = x) = ^ - ^
r
Unsere Aufgabe ist nun die unbekannten Parameter a und ß zu schätzen, Tests bezüglich dieser Parameter durchzufuhren (hier ist besonders der Parameter ß von Interesse, da dieser den Einfluß von x auf die Wahrscheinlichkeit P erfaßt) und natürlich die Güte des Modells mit einem Anpassungstest zu untersuchen. Die Zufallsvariable Y ist für jeweils einen festen Wert x bernoulliverteilt. Kommen wir zu unserem Beispiel. Es sei dabei die folgende Datenmatrix V gegeben. Die erste Spalte dieser Matrix enthält die unabhängige Variable und die zweite Spalte enthält die abhängige, welche zwei Ausprägungen '0' und '1' aufweist. Wir sortieren zunächst die Datenmatrix V und speichern das Ergebnis in der Matrix VS. Diese Sortierung ist für die Durchführung irrelevant, sie dient nur zur besseren Beschreibung der Vorgehensweise, da anhand dieser Matrix die Anzahl der Einsen innerhalb der durch die unabhängige Variable x definierten Teilstichproben besser zu erkennen sind. Needs["Statistics Master "] V={{1,0}, {1,0}, {1,0}, {1,1}, {2,0}, {2,0}, {2,0}, {2,1}, {2,0}, {2,1}, {3,0}, {3,0},{3,1},{3,1},{4,0},{4,1},{4,1},{4,1},{4,1}};
84-
14 Logis tische
Regressionsanalyse
VS=Sort[VJ; VS//MatrixForm 1
1 1 1 2 2 2 2 2 2 3 3 3 3 4 4 4 4 4
°)
o 0 1 0 0 0 0 1 1 0 0 1 1 0 1 1 1 1,
Die erste Spalte der oberen Matrix enthält die Beobachtungen der unabhängigen Variable und die zweite Spalte enthält die Beobachtungen der abhängigen Variable. Die Ausprägungen der unabhängigen Variable definieren jeweils für die abhängige Variable eine Teilstichprobe. Wir interessieren uns nun für die zweite Antwortkategorie („1") der abhängigen Variable. Wie zu sehen ist, nimmt der relative Anteil der Einsen mit dem Anstieg der unabhängigen Variable x in unserer Stichprobe zu. Diesen Zusammenhang können wir nun mit der logistischen Regressionsanalyse untersuchen. Die relative Anzahl der Einsen in der jeweiligen Teilstichprobe werden in der Liste p erfaßt. Diese lieste der relativen Häufigkeiten wird dann als abhängiger Vektor in der Modellgleichung betrachtet .Die absolute Anzahl der Einsen kann dabei jeweils (innerhalb der jeweiligen Teistichprobe) als Realisierung einer binomialverteilten Zufallsvariable angesehen werden. Z.B. tritt für x = 2 insgesamt zweimal die '1' auf. Der Wert zwei ist dann eine Realisierung einer binomialverteilten Zufallsvariable mit den
14 Logistische Regressionsanalyse
8 5
Parametern n = 6 (Umfang der Teilstichprobe, bzw. Anzahl der Zweien) und dem unbekannten Parameter p anzusehen. Diese Parameter können dabei für jede Teilstichprobe andere Werte aufweisen. Wir wählen nun die erste und die zweite Spalte der Datenmatrix aus und bezeichnen diese mit x und y. x=ColumnTake[VS,{l}] {{1},{1},{1},{1},{2},{2},{2},{2},{2},{2},{3},{3},{3},{3},{4},{4}, {4},{4},{4}} y=ColumnTake [ VS, {2} ] {{0},{0},{0},{1}5{0},{0},{0},{0},{1},{1},{0},{0},{1},{1},{0},{1}, {!},{!},{1}} Die Ausprägungen der unabhängigen Variable werden in der Liste xu gespeichert. Zur Berechnung der Anzahl der Einsen innerhalb der Teilstichprobe, in der die unabhängige Variable den Wert v aufweist, definieren wir die Funktion hl[v]. nj[v] stellt den Teilstichprobenumfang der Ausprägung v der unabhängigen Variable dar, und n ist der Stichprobenumfang der Gesamtstichprobe. xu=Union[Transpose[x] [[1]]] {1,2,3,4} hl [vJ :=Count[VS,x_/;x=={v,l}] nj[vJ:=Count[VS,x_/;x[[l]]=v] n=Length[x] 19
86
/ 4 Logistische
Regressionsanalyse
Die Liste templ enthält nun die absolute Anzahl der Einsen in der jeweiligen Teilstichprobe und die Liste temp2 enthält die Teilstichprobenumfänge. temp l=Map [h 1 ,xu] {1,2,2,4} temp2=Map [nj ,xu) {4,6,4,5} Nun erhalten wir die relativen Häufigkeiten p für die Ausprägung V in der jeweiligen Teilstichprobe: p=templ/temp2; p//N {0.25,0.333333,0.5,0.8} Bei der Durchfuhrung der logistischen Regressionsanalyse ist zu beachten, daß die Liste p keine Elemente enthalten darf, die gleich Null oder die gleich Eins sind. Diese Werte liegen nicht im Wertebereich der logistischen Funktion. Dieser Fall tritt auf, wenn eine Teilstichprobe nur Einsen oder nur Nullen enthält. Um dennoch die logistische Regression anwenden zu können, kann man eine lineare Transformation auf die Liste p anwenden wie z.B. p = 0.98 p + 0.01. Damit erhält man nur Werte in der Liste p im Bereich von [0.01,0.99], Diese Transformation muß später bei der Definition der Funktion f[t] berücksichtigt werden (f[t_]:=(f[t]-0.01)/0.98). np erfaßt die Anzahl der Teilstichproben. Mit X definieren wir die Designmatrix in unserer Regressionsgleichung. np=Length[p] 4
14 Logistische Regressionsanalyse
87
X=Transpose[{Table[l,{np}],xu}]; X//MatrixForm 1
1
1 2 1 3 ,14; Da wir nun die beiden unbekannten Parameter in unserer Regressiongleichung mit Hilfe der Methode der gewichteten kleinsten Quadrate schätzen wollen, berechnen wir die zunächst die VarianzKovarianzmatrix Sigma und deren Inverse Sigl. Sigma=IdentityMatrix[np]/(temp2 * p* (1 -p)); Sigma//MatrixForm//N / 1.33333 0 0 v 0
0 0.75 0 0
0 0 1. 0
0 0 0 1.25;
SigI=Inverse[Sigma]; Damit wir die Parameter linear schätzen können, wenden wir die LogitFunktion (die wir zunächst definieren) als Umkehrfunktion der logistischen Funktion auf die Liste p. Logit[xJ:= Log[E, x/(l - x)] lp=Logit[p]; lp//N {-1.09861,-0.693147,0,1.38629}
88
14 Logistische
Regressionsanalyse
Es folgt die Berechnung der Schätzvektors b, dessen Komponenten die Schätzer für die beiden unbekannten Parameter a und ß der Modellgleichung enthält. b=Inverse[Transpose[X].SigI.X].Transpose[X].SigI.lp; b//MatrixForm//N -2.20143\ 0.822506 / Nun wollen wir im nächsten Schritt über einen Modell-Anpassungstest die Anpassung unseres Modells überprüfen. In der folgenden Liste sehen Sie die Abweichungen der Daten vom Modell. Über diese Liste definieren wir die gewichtete Fehlerquadratsumme SSE, die eine Prüfgröße in unserem Modellanpassungstest dastellt. Hier wird die Nullhypothese: Das Modell paßt gegen die Anternativhypothese. Das Modell paßt nicht getestet. Ip-X.b//N {0.280311,-0.136729, -0.266088, 0.297701} SSE=(lp-X.b).SigI.(lp-X.b); SSE//N 0.225561 ModProb=l-CDF[ChiSquareDistribution[2],SSE]//N 0.893347
14 Logistische Regressionsanalyse
89
Wie sie sehen können, kann aufgrund des p-Wertes ModProb die Nullhypothese nicht verworfen werden, womit nichts gegen unser Modell einzuwenden wäre. Als nächstes wollen wir überprüfen, ob die Regressionsparameter signifikant von Null verschieden sind. Hierbei ist speziell der zweite Modellparameter von Interesse, da dieser die Steigung erfaßt. Falls dieser signifikant von Null verschieden ist, so ist ein signifikanter Einfluß der unabhängigen Variable auf die abhängige nachgewiesen. Getestet wird hier somit die Nullhypothese: ß = 0 (bzw. a = 0) gegen die Alternativhypothese: ß * 0 (bzw. a * 0) getestet. Wir beginnen mit der Berechnung der empirischen VarianzKovarianz Matrix des Schätzers B (dessen Realisierung b ist). VarB=Inverse [Transpose [X]. Sigl.X]; VarB//MatrixForm//N / 1.76477 - 0 . 6 0 8 6 5 \ 1 - 0 . 6 0 8 6 5 0.245781)
SB = Sqrt[IdentityMatrix[2] * VarB]; SB//MatrixForm//N /1.32845 l 0
0 \ 0.495763)
Es folgt die Berechnung der Prüfgrößen, die in der Liste PG gespeichert werden und die der p-Werte: PG=(Inverse[SB].b)A2; PG//N
90
14 Logistische Regressionsanalyse
{ 2 . 7 4 6 1 3 , 2.75252} F[x]:=CDF[ChiSquareDistribution[l],x] prob=l-F[PG]//N {0.0974899, 0.0971014} Wie zu sehen ist, ist weder der erste, noch der für uns interessante zweite Parameter signifikant von Null verschieden, womit kein Einfluß nachzuweisen ist (prob[[i]]>0,05). Nun wollen wir noch die Regressionskurve und zeichnen: f [ t j := E x p [ « l , t } } . b]/(l + Exp[{{l, t}} . b]) Gl =Plot [f[t], {t,0,6} ,DisplayFunction->Identity]
G2=ListPlot[Transpose[{xu,p}],PlotStyle->PointSize[0.015], DisplayFunction->Identity]
Show [Gl ,G2,DispIayFunction->$Display Function]
14 Logistische Regressionsanalyse
91
Die obere Grafik zeigt, wie mit dem Anstieg der unabhängigen Variable die Wahrscheinlichkeit für das Auftreten einer Eins in der jeweiligen Teilstichprobe ansteigt.
92
15 Das loglineare Modell
15 Das loglineare Modell Mit dem loglinearen Modell kann ein Zusammenhang zwischen kategoriellen Variablen untersucht werden. Wir beziehen uns auf zwei kategorielle Variablen. Dabei hat die erste Variable r und die zweite s Ausprägungen. Wir gehen dabei von dem folgenden Modell aus: Pij = e
J
J
1= l,...,r;j=l,...,s
Dabei ist py die Wahrscheinlichkeit für das Auftreten der i-ten Kategorie der ersten und der j-ten Kategorie der zweiten Variable. Der Parameter ul; erfaßt den Einfluß der i-ten Kategorie der ersten Variable und der Parameter u2j erfaßt den Einfluß der j-ten Kategorie der zweiten Variable. ul2y erfaßt die entsprechenden Wechselwirkungen. Da wir ein Modell mit Wechselwirkungen, d.h. ein saturiertes Modell, definiert haben, gibt es keine Abweichungen vom Modell. Für den Zusammenhang der beiden Zufallsvariablen sind später die Wechselwirkungsterme von Interesse, denn ist hier einer ungleich Null, so besteht ein Zusammenhang zwischen den Zufallsvariablen. Durch das Logarithmieren der Wahrscheinlichkeiten p^ erhält man ein lineares Modell (daher der Name loglineares Modell):
ln(pij) = u + uli + u2j +ul2ij i = l,...,r;j=l,...,s
Wir werden im folgenden Beispiel die Modellparameter des loglinearen Modells schätzen. Danach stellen wir einen Test bezüglich der Modellparameter vor. Dabei sind, wie bereits beschrieben, die Wechselwirkungsterme von besonderem Interesse, da falls diese nicht alle verschwinden, ein Zusammenhang zwischen den Variablen nachgewiesen werden kann.
15 Das loglineare Modell
93
In unserem Beispiel gehen wir von zwei kategoriellen Variablen mit jeweils drei Ausprägungen aus. Ein solcher Datensatz könnte beim Erfassen von Antworten auf zwei Fragen mit jeweils drei Antwortmöglichkeiten entstanden sein. Als Grundlage für das loglineare Modell dient, wie bei vielen anderen Verfahren für kategorielle Variablen, die Kontingenztafel. Diese werden wir in Mathematica mit M bezeichnen. Wie eine solche Kontingenztafel aus dem beschriebenen Datensatz mit Mathematica erzeugt werden kann, haben wir bereits im Kapitel 5 (McNemar Test) für zwei Variablen mit zwei Ausprägungen beschrieben. Wir beginnen nun mit der Definition der Kontingenztafel M. Needs["Statistics'Master"] M={{40,112,85},{66,214,15},{115,8,125}}; M//MatrixForm 40 112 85 \ 66 214 15 ( 115 8 1251
Wir benötigen zunächst die Anzahl n der Beobachtungen, sowie die Anzahl r der Zeilen und s der Spalten: n=Apply[Plus,Apply[Plus,M]] 780 r=Length[M] 3
s=Length[Transpose[M]] 3
94
15 Das loglineare Modell
Wir schätzen nun die Wahrscheinlichkeiten p;j über die relativen Häufigkeiten und speichern diese in der Matrix P: P=M/n; P//MatrixForm//N 0.0512821 0.14359 0.108974^ 0.0846154 0.274359 0.0192308 | , 0.147436 0.0102564 0.160256 } Als Hilfsgröße zur Schätzung der Parameter u, ul[[i]], u2[[j]] und der Wechselwirkungsterme ul2[[i,j]] definieren wir die Matrix logP der natürlichen Logarithmen der Elemente aus der Matrix P. Hier sollte darauf geachtet werden, daß alle Elemente der Matrix größer als 0 sind, das heißt, es sollten keine unbesetzten Zellen vorkommen. Im Fall unbesetzter Zellen muß man, um das loglineare Modell anwenden zu können, zu jeder Zelle einen festen Betrag (z.B 0.5) hinzu addieren. Hierzu müßten Sie vor die Berechnung des Stichprobenumfangs n die Zeile M=M+0.5 eingeben. Sie erhalten so eine neue Matrix M , mit der die Berechnung der Logarithmen im loglinearen Modell keine Probleme bereitet. logP=Log[P]; logP//MatrixForm//N (-2.97041 -1.9408 -2.46964 -1.29332 , - 1 . 9 1 4 3 6 -4.57985
-2.21664^ -3.95124 -1.83098)
Kommen wir zur Schätzung der Parameter des loglinearen Modells. Wir bezeichnen in Mathematica den Schätzer für u aus Gründen der Übersichtlichkeit ebenfalls mit u. u = l/(r*s)*App!y [Plus,Apply [Plus,IogP]]
] 5 Das loglineare Modell
95
1 9
L
IV
J
11
u//N - 2 . 5 7 4 1 4
Nun folgt die Berechnung der Schätzer uli. Dazu geben wir den Schätzer für uli einmal exakt aus. Die Schätzer werden danach für i = 1,2,3 in einer Liste mit dem Namen eul gespeichert. Statistikprogrammpakete beschränken sich oft auf die Ausgabe der ersten beiden Schätzer, da sich der dritte jeweils direkt aus den anderen beiden über eine sogenannte Reparametrisierungsbedingung (u 1 i+u 12+u 13=0) ergibt. ul[i_]:=(l/s)*Apply[Plus,logP[[i]J]-u ul[l] 1 3
1
+
9
L
17
J
L
11
Hill %//N 0 . 1 9 8 1 8 8
eul=Table[ul [i],{i,l,r}]//N
96
15 Das loglineare Modell
{0.198188, 0.00273833, -0.200926} Analog gehen wir bei der Berechnung der Schätzer für u2j vor, die wir in der Liste eu2 speichern. Den Schätzer für u2i geben wir auch wieder exakt aus. u2ü_|:=(l/r)*Apply[Plus,Transpose[logP][[j]l]-u u2[l]
\
L 107 J
L 25 J
L 23 J
j . L o g ^ j . L ^ f
28
+
]*Log[52].
Wl5]) %//N 0.122667 eu2=Table[u2[j],{j,l,s}]//N {0.122667,-0.0305165, -0.0921503} Es folgt die Berechnung der Schätzer für die Wechselwirkungsterme ul2y. Als Beispiel geben wir hier exakt die Schätzung für ul2n aus. Die Schätzer werden dann in einer Matrix mit dem Namen eul2 für i, j = 1,2,3 gespeichert. Durch die Reparametrisierungsbedingung ergibt sich für die Zeilen/Spaltensumme immer 0. Aus diesem Grund könnte man bei der Ausgabematrix auf die letzte Zeile und Spalte verzichten ul2[i_jJ:= logP[[i,j]]-(l/s) Ä Apply[Plus,logP[[i]]]-(l/r)
15 Das loglineare Modell
97
Apply[Plus,Transpose[logP][[j]]]+u ul2[l,l]
L o g [ ^ f ] - L o g [ ^ ] - L o g [ f ] -1^(52]-
%//N -0.717131 eul2=Table[ul2[ij],{i,l,r},{j,l,s}]; eul2//MatrixForm//N -0.717131 0.465672 0.251458 \ -0.0209057 1.3086 -1.28769 , 0.738036 -1.77427 1.03623 J Wir berechnen nun über unser Modell eine Prognose für die Matrix P der relativen Häufigkeiten, die wir mit PS bezeichnen. Als Probe geben wir die Prognose über das Modell für das Element Pn der Matrix P aus. Ps[UJ:=Exp[u+ul[i]+u2[j]+ul2[ij]] ps[l,l]//N 0.0512821
98
¡5 Das loglineare Modell
PS=Table[ps[ij],{i,l,r},{j,l,s}]; PS//MatrixForm//N 0.0512821 0.0846154 , 0.147436
0.14359 0.274359 0.0102564
0.108974 0.0192308 0.160256 I
Wie unten zu sehen ist, gibt es in saturierten Modell (im Modell mit allen Wechselwirkungstermen) keine Abweichungen (bis auf Rundungsfehler) von den beobachteten relativen Häufigkeiten. Aus diesem Grund ist auch ein Modellanpassungstest überflüssig. P-PS//MatrixForm//N - 2 . 0 8 1 6 7 x 10" 17 4 . 1 6 3 3 4 x 10" 17 0.
5.55112x10-" 1.11022xl0"16 5 . 2 0 4 1 7 x 10' 1 8
- 1 . 3 8 7 7 8 x 10" 17 \ 1 . 0 4 0 8 3 x 10" 17 - 2 . 7 7 5 5 6 x 10- 17 j
Als nächstes ist von Interesse, ob einige Wechselwirkungsterme signifikant von Null verschieden sind. Somit läßt sich dann, wie bereits beschrieben, ein Zusammenhang zwischen den beiden kategoriellen Variablen nachweisen. Hierbei fuhren wir bezüglich aller Modellparameter einen Test durch mit der Nullhypothese, ul, = 0 bzw. u2j = 0 bzw. ul2ij = 0
; i,j=l,2,3
gegen die Alternativhypothese: ulj * 0 bzw. u2j * 0 bzw. ul2y * 0 ; i,j=l,2,3
Für die Durchfuhrung dieses Tests benötigen wir zuerst die Varianzen der Zufallsvariablen, deren Realisierungen die Schätzer der Parameter sind. Dazu berechnen wir eine Hilfsmatrix RM mit den reziproken absoluten Häufigkeiten. Die positiven Wurzeln aus den Varianzen (also die Standardabweichungen) speichern wir in Listen, die jeweils mit den Buchstaben 'Std' beginnen. Somit enthält die Liste Stdul die
15 Das loglineare Modell
99
Standardabweichungen der hinter den Schätzern für ul; stehenden Zufallsvariablen.
RM=1/M; RM//MatrixForm//N 0.025 0.0151515 .0.00869565
0.00892857 0.0046729 0.125
0.0117647^ 0.0666667) 0.008 )
Varu=(l/(r*s))A2*Apply[Plus^Apply[PIus,RM]]-l/n; Varu//N 0.00209918
Stdu=Sqrt[ Varu]; Stdu//N 0.0458168
Vanil[iJ:=(l/(r*s))A2*Apply[PIus,Apply[Plus,RM]]+ ((r-2)/(r*sA2))*Apply[Plus,RM[[i]]] Vul=Table[Varul [i],{i,l,r}]//N {0.00507358, 0.00658461, 0.00862922}
Stdul=Sqrt[Vul] {0.0712291, 0.0811456, 0.0928936}
Varu2[j_J:=(l/(r*s))A2*AppIy[Plus^pply[Plus,RM]]+ ((s-2)/(rA2 * s)) * Apply [PlUs,Transpose[RM] [ [j ]] ] Vu2=Table[Varu2|j],{j,l»s}]//N
100
15 Das loglineare Modell
{0.00519039, 0.00851462, 0.0065824}
Stdu2=Sqrt[Vu2] {0.0720444, 0.0922747, 0.081132}
Varul2[i_, j_]:= (l/(r*s))A2*Apply [Plus,Apply [Plus,RM]]+((s-2)/(rA2*s))* Apply[Plus,Transpose[RM][[j]ll+((r-2)/(r*sA2))* Apply [Plus,RM[[i]]]+((r-2)*(s-2))/(r*s)*RM[[ij]] Vul2=Table[Varul2[ij],{i,l,r},{j,l,s}]//N 0.00966051 0.011199 0.00958193 \ 0.0100773 0.0122372 0.0171932 f , 0.0114046 0.0276515 0.0127193 I
Stdul2=Sqrt[Vul2] {{0.0982879, 0.105825, 0.0978873}, {0.100386, 0.110622, 0.131123}, {0.106792, 0.166287, 0.11278}} Nun können wir mit der Berechnung der Prüfgrößen für die Tests bezüglich der Modellparameter beginnen. Die Prüfgrößen für die Tests bezüglich der Parameter uli speichern wir in der Liste pul, die für die Parameter u2j in der Liste pu2 und die bezüglich der Wechselwirkungsterme ul2ij in der Liste pul2. Bezüglich des Parameter u führen wir keinen Test durch, da dessen Wert für unsere Fragestellung nicht von Interesse ist.
pul=(eul/Stdul)A2 {7.74176, 0.00113878, 4.67844}
15 Das loglineare Modell
101
pu2=(eu2/Stdu2)A2 {2.89904,0.109372,1.29006} pul2=(eul2/Stdul2) A 2 {{53.2349,19.3633,6.59901}, {0.0433697,139.936,96.4425}, {47.7614,113.847, 84.4217}} Es folgt die Berechnung der p-Werte. Wir fuhren dann alle Tests auf einem Signifikanzniveau von 5% durch. F[xJ:=CDF[ChiSquareDistribution[l],x] probul=l-F[pul] {0.00539582, 0.97308, 0.0305434} Signifikant von Null verschieden ist demnach der Parameter uli und ul 3 (probul[[l]] < 0,05 und probul[[3]] < 0,05). probu2=l-F[pu2] {0.0886324, 0.740861, 0.256037} Signifikant von Null verschieden ist weder der Parameter u2i noch u22 oder u23. probul2=l-F[pul2] {{2.95985x 10 -13 , 0.0000108062, 0.0102035}, {0.835031, 0., 0.}, {4.81382x 10'12, 0., 0.}}
102
/5 Das loglineare Modell
Die Wechselwirkungsterme sind alle, bis auf ul22i, signifikant von Null verschieden. Für den Nachweis eines Zusammenhangs genügt es, wenn ein Wechselwirkungsterm signifikant von 0 verschieden ist. Es konnte somit ein signifikanter Zusammenhang zwischen den beiden kategoriellen Variablen nachgewiesen werden.
16 Index
1 03
16 Index erwartete absolute Häufigkeiten 25 „Get"-Anweisung 15, 54 „Module"-Anweisung 7 „rangmodul" 14 „Remove"-Anweisung 16 A absolute Häufigkeiten 12 approximativer Test 19 B bernoulliverteilt 83,18 Bindungen 12 Binomialtest 17 Boxplot 47; 68 C Chi-Quadrat Anpassungstest 22 Chi-Quadrat Ansatz 58 ColumnForm 9 Count 12 D dichtomen 17 Do 13 E empirische Verteilung 47
exakter Test 20 F Flatten 12 Friedman 60 Friedman-Rangvarianzanalyse 62 G gemessenen Häufigkeiten 25 H Häufigkeiten 16 Histogramm 24 H-Test 53 Hypothesen bezüglich des Medians 44 I If 13 Inhaltsverzeichnis 5 K kategoriellen Variablen 92 keine Bindungen 63 Kendall 32; 39 Klasseneinteilung 23 Komponenten 10 Kontingenztafel 28; 29; 93
104
16 Index
R
Kruskal und Wallis 53 L Length 12; 13 Liste 8; 9; 11 logistische Regressionsanalyse 83 loglineares Modell 92 M Map 12 Mathematica-Dateien 11 MatrixForm 9; 10 McNemar 28 Median 7; 8 Mittelwert 8 Modul 7; 11; 13 monotone Transformationen 11
multipler paarweiser Vergleich 58 O OddQ 8 Ordinalskala 11 P Prognose über das Modell 97 Prüfgröße 12 Prüfgrößen 11 Q Quartilsabstand 47
Rangzahl 12 Rangzahlen 11; 13; 14 Realisierungen 22 Reparametrisierungsbedingung 96 S sortiert 8 Spaltenform 9 Spaltenvektor 8; 9; 11 Spearman 32 SpearmanRankCorrelation 37 stetige Verteilung 47 Stichprobenumfang 8; 12 Sum 13 T Table 13 Test auf Symmetrie 30 Test auf Trend 71 Transponierte 9 Transpose 10; 11 U Union 12 V Vektor 8 Vorzeichen Test 44 Vorzeichenrangtests nach Wilcoxon 77 W Wechselwirkungsterme 92, 98
16 Index
Wilcoxon-Rangsummentest 65
105
Z Zeilenvektoren 9 Zufallszahlengenerator 22