Können Sie die Leistung eines Kolmogorov-Smirnov-Tests in R berechnen?

10

Ist es möglich, eine Leistungsanalyse für einen zweiseitigen Kolmogorov-Smirnov-Test in R durchzuführen?

Ich teste mit ks.test (), ob sich zwei empirische Verteilungen unterscheiden, und möchte eine Leistungsanalyse hinzufügen.

Ich konnte in R keine integrierten Leistungsanalysen für KS-Tests finden. Irgendwelche Vorschläge?

Bearbeiten : Dies sind zufällig generierte Verteilungen, die meinen Daten sehr nahe kommen (mit wahren Stichprobengrößen und geschätzten Abklingraten für Exponentialverteilungen).

set.seed(100)
x <- rexp(64, rate=0.34)
y <- rexp(54,rate=0.37)

#K-S test: Do x and y come from same distribution?
ks.test(x,y)

Diese Daten sind Maße für die Körpergröße in zwei verschiedenen Gruppen. Ich möchte zeigen, dass die beiden Gruppen im Wesentlichen die gleiche Verteilung haben, wurde aber von einem Mitarbeiter gefragt, ob ich die Möglichkeit hätte, dies anhand der Stichprobengröße zu sagen. Ich habe hier zufällig aus einer Exponentialverteilung gezogen, aber diese liegen nahe an den realen Daten.

Bisher habe ich gesagt, dass es keinen signifikanten Unterschied in diesen Verteilungen gibt, basierend auf dem zweiseitigen KS-Test. Ich habe auch die beiden Verteilungen aufgezeichnet. Wie kann ich zeigen, dass ich angesichts der Stichprobengrößen und Zerfallsraten für x und y die Möglichkeit habe, eine solche Aussage zu treffen?

Sarah
quelle
4
Die Leistung hängt von vielen Faktoren ab, weshalb für den Test mit zwei Beispielen kein eingebauter Test vorhanden wäre. Sie können für bestimmte Situationen simulieren. Also: Macht angesichts welcher Annahmen über die Situation? Gegen welche Alternative oder Abfolge von Alternativen? Sie können beispielsweise eine Leistungskurve für exponentiell verteilte Daten gegen eine Reihe von Skalenverschiebungsalternativen berechnen (simulieren). Oder Sie könnten die Leistung für eine Normalen gegen eine Standortverschiebung berechnen. Oder Sie können die Leistung in einem Weibull berechnen, indem Sie den Formparameter variieren. Haben Sie zusätzliche Details?
Glen_b -State Monica
Um die Leistung tatsächlich zu berechnen, benötigen Sie ebenfalls Stichprobengrößen. Wenn Sie versuchen, die Stichprobengröße bei gegebener Leistung anhand einer bestimmten Alternative zu ermitteln, kann dies über die Wurzelfindung erfolgen. Oft können Sie den Punkt jedoch durch einfache Ansätze ermitteln (das Ausprobieren einiger Stichprobengrößen reicht normalerweise aus, um sehr nahe zu kommen ).
Glen_b -State Monica
Welche Variable wird gemessen? Sind das Zeiten?
Glen_b -Rate State Monica
@Glen_b Dies sind keine Zeiten. Sie sind Maße für die Körpergröße in zwei verschiedenen Gruppen. Ich möchte zeigen, dass die beiden Gruppen im Wesentlichen die gleiche Verteilung haben, wurde aber gefragt, ob ich die Möglichkeit hätte, dies anhand der Stichprobengröße zu sagen.
Sarah
1
Ah! Das sind zwei nützliche Zusammenhänge, die in Ihrer Frage hilfreich sein können. Die Idee ist also, wenn Sie zeigen, dass die Fähigkeit, einige fiktiv bescheidene Unterschiede zu identifizieren, vernünftig war, könnte man das Versäumnis, dies abzulehnen, als Hinweis darauf ansehen, dass der Unterschied gering war. Ja, eine vorherige Leistungsanalyse kann dabei helfen, dieses Argument vorzubringen. Nach der Tatsache würde ich mich wahrscheinlich mehr auf so etwas wie eine Schätzung (und vielleicht ein Konfidenzintervall) der Skalenänderung konzentrieren, um anzuzeigen, dass der Unterschied tatsächlich gering war, sowie auf eine Darstellung der beiden Beispiel-CDFs.
Glen_b -Rate State Monica

Antworten:

16

Das Finden von Macht gegen exponentielle Skalenverschiebungsalternativen ist ziemlich einfach.

Ich weiß jedoch nicht, dass Sie Werte verwenden sollten, die aus Ihren Daten berechnet wurden , um herauszufinden, wie hoch die Leistung gewesen sein könnte. Diese Art der Post-hoc-Leistungsberechnung führt tendenziell zu kontraintuitiven (und möglicherweise irreführenden) Schlussfolgerungen.

Macht ist wie das Signifikanzniveau ein Phänomen, mit dem Sie sich vorher befassen. Sie würden ein A-priori-Verständnis (einschließlich Theorie, Argumentation oder früherer Studien) verwenden, um eine vernünftige Reihe von Alternativen und eine wünschenswerte Effektgröße zu bestimmen

Sie können auch eine Vielzahl anderer Alternativen in Betracht ziehen (z. B. können Sie das Exponential in eine Gammafamilie einbetten, um die Auswirkungen von mehr oder weniger verzerrten Fällen zu berücksichtigen).

Die üblichen Fragen, die man durch eine Leistungsanalyse beantworten könnte, sind:

1) Wie hoch ist die Leistung für eine bestimmte Stichprobengröße bei einer bestimmten Effektgröße oder einer Reihe von Effektgrößen *?

2) Wie groß ist bei gegebener Stichprobengröße und Leistung ein Effekt erkennbar?

3) Welche Stichprobengröße wäre bei einer gewünschten Leistung für eine bestimmte Effektgröße erforderlich?

* (wobei hier "Effektgröße" allgemein gemeint ist und beispielsweise ein bestimmtes Verhältnis von Mitteln oder Mittelwertdifferenzen sein kann, das nicht unbedingt standardisiert ist).

Natürlich haben Sie bereits eine Stichprobengröße, also sind Sie nicht in Fall (3). Sie könnten vernünftigerweise Fall (2) oder Fall (1) in Betracht ziehen.

Ich würde Fall (1) vorschlagen (der auch eine Möglichkeit bietet, mit Fall (2) umzugehen).

Um einen Ansatz für Fall (1) zu veranschaulichen und zu sehen, wie er sich auf Fall (2) bezieht, betrachten wir ein spezifisches Beispiel mit:

  • Skalenverschiebungsalternativen

  • exponentielle Populationen

  • Stichprobengrößen in den beiden Stichproben 64 und 54

Da die Stichprobengrößen unterschiedlich sind, müssen wir den Fall berücksichtigen, in dem die relative Streuung in einer der Stichproben sowohl kleiner als auch größer als 1 ist (wenn sie dieselbe Größe hätten, könnten Symmetrieüberlegungen es ermöglichen, nur eine Seite zu berücksichtigen). Da sie jedoch nahezu gleich groß sind, ist der Effekt sehr gering. Legen Sie in jedem Fall den Parameter für eines der Beispiele fest und variieren Sie das andere.

Was man also tut ist:

Vorweg:

choose a set of scale multipliers representing different alternatives
select an nsim (say 1000)
set mu1=1

So führen Sie die Berechnungen durch:

for each possible scale multiplier, kappa 
  repeat nsim times
    generate a sample of size n1 from Exp(mu1) and n2 from Exp(kappa*mu1)
    perform the test
  compute the rejection rate across nsim tests at this kappa

In R habe ich Folgendes getan:

alpha = 0.05
n1 = 54
n2 = 64
nsim = 10000
s = c(1.1,1.2,1.5,2,2.5,3) # set up grid for kappa
s = c(1/rev(s),1,s)        #  also below and at 1
rr = array(NA,length(s))   # to hold rejection rates

for(i in seq_along(s)) rr[i]=mean(replicate(nsim,
                                    ks.test(rexp(n1,1),rexp(n2,s[i]))$p.value)<alpha
                                 )

plot(rr~s,log="x",ylim=c(0,1),type="n") #set up plot
points(rr~rev(s),col=3) # plot the reversed case to show the (tiny) asymmetry+noise
points(rr~s,col=1) # plot the "real" case last 
abline(h=alpha,col=8,lty=2) # draw in alpha

was die folgende Potenz "Kurve" ergibt

Geben Sie hier die Bildbeschreibung ein

Die x-Achse liegt auf einer logarithmischen Skala, die y-Achse ist die Ablehnungsrate.

Hier ist es schwer zu sagen, aber die schwarzen Punkte sind links etwas höher als rechts (das heißt, es gibt etwas mehr Leistung, wenn das größere Sample den kleineren Maßstab hat).

Unter Verwendung des inversen normalen cdf als Transformation der Ablehnungsrate können wir die Beziehung zwischen der transformierten Ablehnungsrate und log kappa (kappa ist sim Diagramm, aber die x-Achse ist logarithmisch skaliert) nahezu linear machen (außer nahe 0) ), und die Anzahl der Simulationen war hoch genug, dass das Rauschen sehr gering ist - wir können es für die gegenwärtigen Zwecke fast ignorieren.

Wir können also nur die lineare Interpolation verwenden. Im Folgenden sind ungefähre Effektgrößen für 50% und 80% Leistung bei Ihren Stichprobengrößen dargestellt:

Geben Sie hier die Bildbeschreibung ein

Die Effektgrößen auf der anderen Seite (größere Gruppe hat einen kleineren Maßstab) sind nur geringfügig davon abweichen (können eine geringfügig kleinere Effektgröße aufnehmen), aber es macht wenig Unterschied, so dass ich nicht auf den Punkt eingehen werde.

Der Test wird also einen wesentlichen Unterschied (von einem Skalenverhältnis von 1) feststellen, aber keinen kleinen.


Nun zu einigen Kommentaren: Ich denke nicht, dass Hypothesentests für die zugrunde liegende Frage von Interesse besonders relevant sind ( sind sie ziemlich ähnlich? ), Und folglich sagen uns diese Leistungsberechnungen nichts, was für diese Frage direkt relevant ist.

Ich denke, Sie sprechen diese nützlichere Frage an, indem Sie vorab angeben, was Ihrer Meinung nach "im Wesentlichen dasselbe" tatsächlich operativ bedeutet. Dies sollte - rational zu einer statistischen Aktivität verfolgt - zu einer aussagekräftigen Analyse der Daten führen.

Glen_b - Monica neu starten
quelle
Ich danke dir sehr! Das ist wirklich hilfreich, sehr geschätzt.
Sarah
0

Da Kolmogorov-Smirnov nicht parametrisch ist, kann per Definition keine anwendbare Leistungsanalyse durchgeführt werden. Um eine Schätzung zu erhalten, müssen Sie ein Hintergrundmodell annehmen (und somit von der nichtparametrischen Welt ablenken ...) und es verwenden, um eines der folgenden zu berechnen: Stichprobengröße, MDE oder Leistung (dh Sie fixiere / wähle zwei und berechne die dritte).

MDman
quelle