Kolmogorov-Smirnov mit diskreten Daten: Was ist die richtige Verwendung von dgof :: ks.test in R?


23

Anfängerfragen:

Ich möchte testen, ob zwei diskrete Datensätze von derselben Verteilung stammen. Ein Kolmogorov-Smirnov-Test wurde mir vorgeschlagen.

Conover ( Praktische nichtparametrische Statistik , 3d) scheint zu sagen, dass der Kolmogorov-Smirnov-Test für diesen Zweck verwendet werden kann, aber sein Verhalten ist bei diskreten Verteilungen "konservativ", und ich bin nicht sicher, was das hier bedeutet.

DavidRs Kommentar zu einer anderen Frage lautet: "... Sie können immer noch einen Level α-Test basierend auf der KS-Statistik durchführen, aber Sie müssen eine andere Methode finden, um den kritischen Wert zu erhalten, z. B. durch Simulation."

Die Version von ks.test () im dgof R-Paket ( article , cran ) fügt einige Funktionen hinzu, die in der Standardversion von ks.test () im Statistikpaket nicht vorhanden sind. Unter anderem enthält dgof :: ks.test diesen Parameter:

simulate.p.value: eine logische Angabe, ob p-Werte durch Monte-Carlo-Simulation berechnet werden sollen, nur für diskrete Anpassungstests.

Ist der Zweck von simulate.p.value = T, um das zu erreichen, was DavidR vorschlägt?

Auch wenn dies der Fall ist, bin ich mir nicht sicher, ob ich dgof :: ks.test wirklich für einen Test mit zwei Stichproben verwenden kann. Es sieht so aus, als ob es nur einen Test mit zwei Stichproben für eine kontinuierliche Verteilung gibt:

Wenn y numerisch ist, wird ein Test mit zwei Stichproben der Nullhypothese durchgeführt, dass x und y aus derselben kontinuierlichen Verteilung gezogen wurden.

Alternativ kann y eine Zeichenkette sein, die eine kontinuierliche (kumulative) Verteilungsfunktion (oder eine solche Funktion) oder eine ecdf-Funktion (oder ein Objekt der Klasse stepfun) benennt, die eine diskrete Verteilung ergibt. In diesen Fällen wird ein Test mit einer Stichprobe aus der Null ausgeführt, bei der die Verteilungsfunktion, die x erzeugt hat, die Verteilung y ist.

(Hintergrunddetails: Genau genommen sind meine zugrunde liegenden Verteilungen stetig, aber die Daten liegen in der Regel sehr nahe an einer Handvoll von Punkten. Jeder Punkt ist das Ergebnis einer Simulation und ist ein Mittelwert aus 10 oder 20 reellen Zahlen zwischen -1 und 1. Am Ende der Simulation liegen diese Zahlen fast immer in der Nähe von 0,9 oder -9. Daher gruppieren sich die Mittelwerte um einige Werte, und ich behandle sie als diskret. Die Simulation ist komplex, und ich habe keine Grund zu der Annahme, dass die Daten einer bekannten Verteilung folgen.)

Rat?


Ich habe gerade den Kommentar von Dr. G bemerkt , der darauf hindeutet, dass ks.boot das ist, was ich brauche, aber ich frage mich immer noch, ob die Simulationsoption von dgof :: ks.test funktionieren würde und was "konservativ" bedeutet.
Mars

Antworten:


16

Dies ist eine Antwort auf die Erweiterung von @jbrucks (aber sie beantwortet auch das Original).

Ein allgemeiner Test, ob 2 Proben aus derselben Population / Verteilung stammen oder ob es einen Unterschied gibt, ist der Permutationstest. Wählen Sie eine interessante Statistik aus. Dies kann die KS-Teststatistik oder die Differenz der Mittelwerte oder die Differenz der Mediane oder das Verhältnis der Varianzen sein. Oder ... (Was auch immer für Ihre Frage am aussagekräftigsten ist, Sie können Simulationen unter wahrscheinlichen Bedingungen durchführen Welche Statistik liefert die besten Ergebnisse?) und berechnen Sie diese Statistik anhand der ursprünglichen 2 Stichproben. Anschließend permutieren Sie die Beobachtungen zwischen den Gruppen nach dem Zufallsprinzip (gruppieren Sie alle Datenpunkte in einem großen Pool, teilen Sie sie dann nach dem Zufallsprinzip in zwei Gruppen mit derselben Größe wie die ursprünglichen Stichproben auf) und berechnen die interessierende Statistik für die permutierten Stichproben. Wiederholen Sie dies ein paar Mal, Die Verteilung der Stichprobenstatistik bildet Ihre Nullverteilung, und Sie vergleichen die ursprüngliche Statistik mit dieser Verteilung, um den Test zu bilden. Beachten Sie, dass die Nullhypothese besagt, dass die Verteilungen identisch sind und nicht nur das Mittel / median / etc. sind gleich.

Wenn Sie nicht davon ausgehen möchten, dass die Verteilungen identisch sind, sondern nach einem Unterschied in means / medians / etc suchen möchten. dann könntest du einen Bootstrap machen.

Wenn Sie wissen, aus welcher Verteilung die Daten stammen (oder zumindest bereit sind, eine Verteilung anzunehmen), können Sie einen Wahrscheinlichkeitstest für die Gleichheit der Parameter durchführen (vergleichen Sie das Modell mit einem einzelnen Parametersatz für beide Gruppen mit dem Modell) mit separaten Parametersätzen). Der Liklihood-Ratio-Test verwendet normalerweise eine Chi-Quadrat-Verteilung, die in vielen Fällen in Ordnung ist (Asymtotik). Wenn Sie jedoch kleine Stichprobengrößen verwenden oder einen Parameter in der Nähe seiner Grenze testen (z. B. eine Varianz von 0), ist die Approximation möglicherweise nicht ausreichend Gut, Sie können den Permutationstest erneut verwenden, um eine bessere Nullverteilung zu erhalten.

Diese Tests arbeiten alle mit kontinuierlichen oder diskreten Verteilungen. Sie sollten auch ein Maß für die Leistung oder ein Konfidenzintervall angeben, um das Ausmaß der Unsicherheit anzuzeigen. Eine mangelnde Signifikanz kann auf eine geringe Leistung zurückzuführen sein, oder ein statistisch signifikanter Unterschied kann praktisch bedeutungslos sein.


Greg, danke. Dies ist eine sehr hilfreiche allgemeine Antwort auf die Frage von jbruck, und sie ist auch für mich hilfreich. (Meine Fragen waren spezifischer. Vielleicht zu eng, um Antworten zu erwarten.)
Mars

1
@ Mars, ich denke, meine Antwort beantwortet zumindest Teile von Ihnen indirekt. Der reguläre KS-Test geht von keinen Bindungen aus und verwendet ein theoretisches Modell für die Teststatistik unter der Nullhypothese. Mit Bindungen ist das theoretische Modell nicht genau, aber Sie können stattdessen eine Simulation (Permutationstest, Simulation von Nullpunkt usw.) verwenden, um die Nullverteilung zu berechnen und daher einen p-Wert usw. zu erhalten Argument, das Sie erwähnen.
Greg Snow
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.