Ist es sinnvoll, mit einer sehr kleinen Stichprobengröße (z. B. n = 6) auf Normalität zu testen?

26

Ich habe eine Stichprobengröße von 6. Ist es in einem solchen Fall sinnvoll, mit dem Kolmogorov-Smirnov-Test auf Normalität zu prüfen? Ich habe SPSS benutzt. Ich habe eine sehr kleine Stichprobengröße, da es einige Zeit dauert, bis ich sie bekomme. Wenn es keinen Sinn ergibt, wie viele Proben ist die niedrigste Zahl, die zum Testen sinnvoll ist?

Hinweis: Ich habe einige Experimente zum Quellcode durchgeführt. Das Beispiel ist die Zeit, die für das Codieren in einer Softwareversion (Version A) aufgewendet wurde. Eigentlich habe ich eine andere Stichprobengröße von 6, die für das Codieren in einer anderen Softwareversion (Version B) aufgewendet wurde.

Ich möchte Hypothesentests mit einem T-Test mit einer Stichprobe durchführen , um zu testen, ob sich die in der Codeversion A verbrachte Zeit von der in der Codeversion B verbrachten Zeit unterscheidet oder nicht (dies ist mein H1). Voraussetzung für einen T-Test mit einer Stichprobe ist, dass die zu testenden Daten normal verteilt sind. Deshalb muss ich auf Normalität prüfen.

BB01
quelle
6
Ich für meinen Teil habe Schwierigkeiten, mir einen Kontext vorzustellen, in dem n = 6 und Normalität eine Hypothese sind, die es wert ist, geprüft zu werden. Ich befürchte, dass dies ein Fall ist, in dem ein unerfahrener Benutzer mehrere Hypothesentests durchführt (dann eine Regression durchführen und auf Normalität der Residuen prüfen) und dass wir die Symptome behandeln, aber die Skelette im Schrank sozusagen ignorieren.
user603
3
@user Es ist unfair, über den Fragesteller zu spekulieren. Lassen Sie uns die Frage beantworten, sollen wir? Angenommen, Sie planen, eine obere Vorhersagegrenze für einen Wert zu berechnen, der verwendet wird, um eine kostspielige Entscheidung zu treffen. Der Wert des PL hängt von den Normalitätsannahmen ab. Sie sind sich ziemlich sicher, dass der Prozess der Datengenerierung nicht normal ist, aber die Generierung von Daten ist teuer und zeitaufwändig. Frühere Experimente deuten darauf hin, dass genug ist, um die Normalität abzulehnen. (Ich habe gerade einen Standardrahmen für Grundwasserüberwachungsprogramme in den USA beschrieben.)n=6
whuber
3
User603 (zu Ihrem ersten Kommentar): Ich möchte darauf hinweisen, dass @Joris weder eine Antwort geliefert hat, noch dass sein Kommentar mit irgendeiner Begründung versehen ist. Wenn ein nachdrückliches "Nein" eine gültige allgemeine Antwort auf diese Frage ist, lassen Sie es uns mit einem unterstützenden Argument als solche aufschreiben, damit es von der Community nach oben und unten bewertet werden kann.
whuber
2
@whuber: Ich habe ein Argument für das nachdrückliche "Nein" hinzugefügt.
Joris Meys
1
@Joris Danke! Das ist hilfreich und aufschlussreich.
whuber

Antworten:

38

Ja.

Alle Hypothesentests haben zwei herausragende Eigenschaften : ihre Größe (oder ihr "Signifikanzniveau"), eine Zahl, die in direktem Zusammenhang mit dem Vertrauen und den erwarteten falsch positiven Raten steht, und ihre Stärke, die die Wahrscheinlichkeit von falsch negativen Ergebnissen ausdrückt. Wenn die Stichprobengröße klein ist und Sie weiterhin auf einer kleinen Größe bestehen (hohes Vertrauen), wird die Leistung schlechter. Dies bedeutet, dass Tests mit kleinen Stichproben normalerweise keine kleinen oder mäßigen Unterschiede erkennen können. Aber sie sind immer noch sinnvoll .

Der KS-Test beurteilt, ob die Probe von einer Normalverteilung zu stammen scheint. Eine Stichprobe von sechs Werten muss in der Tat sehr ungewöhnlich aussehen, um diesen Test nicht zu bestehen. In diesem Fall können Sie diese Zurückweisung der Null genau so interpretieren , als würden Sie sie mit höheren Stichprobengrößen interpretieren. Wenn der Test dagegen die Nullhypothese nicht ablehnt, sagt dies aufgrund der hohen Rate falsch negativer Ergebnisse wenig aus. Insbesondere wäre es relativ riskant, so zu handeln, als ob die zugrunde liegende Verteilung normal wäre.

Eine weitere Sache, auf die Sie hier achten sollten: Einige Software verwendet Näherungswerte, um p-Werte aus der Teststatistik zu berechnen. Oft funktionieren diese Näherungen gut für große Stichproben, wirken sich jedoch schlecht für sehr kleine Stichproben aus. In diesem Fall können Sie nicht darauf vertrauen, dass der p-Wert korrekt berechnet wurde, was bedeutet, dass Sie nicht sicher sein können, dass die gewünschte Testgröße erreicht wurde. Weitere Informationen finden Sie in Ihrer Softwaredokumentation.

Einige Ratschläge: Der KS-Test ist zum Testen der Normalität wesentlich weniger leistungsfähig als andere Tests, die speziell für diesen Zweck entwickelt wurden. Das beste von ihnen ist wahrscheinlich der Shapiro-Wilk- Test, aber andere, häufig verwendete und fast ebenso leistungsfähige sind Shapiro-Francia und Anderson-Darling .

Dieses Diagramm zeigt die Verteilung der Kolmogorov-Smirnov-Teststatistik in 10.000 Stichproben von sechs normalverteilten Variablen:

Histogramm der KS-Statistik

α=5%

0.000, 0.001, 0.002, 1.000, 1.001, 1000000

Die Teststatistik beträgt 0,5 (was weniger als der kritische Wert ist). Eine solche Stichprobe würde unter Verwendung der anderen Normalitätstests abgelehnt.

whuber
quelle
10
Ich denke, jede Distribution, die ein Zeichen gibt. Das Ergebnis mit N = 6 ist so ungewöhnlich, dass es die IOTT mit Bravour besteht - das ist der interokulare Traumatest. Es trifft dich zwischen den Augen.
Peter Flom - Wiedereinsetzung von Monica
2
N=6N=6
Nur zum Spaß habe ich versucht, set.seed (3833782) x <- runif (6) ks.test (x, pnorm) Dies war bei p = .04 signifikant. So kann es passieren
Peter Flom - Wiedereinsetzung von Monica
4
@ Peter gut! Ein KS-Test auf Normalität hat eine einheitliche Stichprobe verworfen. Das hofft man.
Whuber
3
set.seed(140);x=rnorm(6);ks.test(x,pnorm)produziert p-value = 0.0003255. Natürlich musste ich es mit 140 Samen versuchen, bevor ich dies fand ...
Spacedman
20

Wie @whuber in den Kommentaren gefragt hat, eine Validierung für mein kategorisches NO. edit: beim shapiro test, da der one sample ks test nämlich falsch angewendet wird. Whuber ist richtig: Für die korrekte Anwendung des Kolmogorov-Smirnov-Tests müssen Sie die Verteilungsparameter angeben und dürfen sie nicht aus den Daten extrahieren. Dies geschieht jedoch in statistischen Paketen wie SPSS für einen KS-Test mit einer Stichprobe.

Sie versuchen, etwas über die Verteilung zu sagen, und Sie möchten überprüfen, ob Sie einen T-Test anwenden können. Dieser Test wird durchgeführt, um zu bestätigen, dass die Daten nicht signifikant genug von der Normalität abweichen, um die zugrunde liegenden Annahmen der Analyse ungültig zu machen. Sie interessieren sich also nicht für den Typ-I-Fehler, sondern für den Typ-II-Fehler.

Jetzt muss man "signifikant anders" definieren, um das Minimum n für akzeptable Leistung (z. B. 0,8) berechnen zu können. Bei Distributionen ist das nicht einfach zu definieren. Daher habe ich die Frage nicht beantwortet, da ich abgesehen von der von mir verwendeten Faustregel keine vernünftige Antwort geben kann: n> 15 und n <50. Worauf aufbauend? Im Grunde genommen ein gutes Gefühl, daher kann ich diese Entscheidung nicht ohne Erfahrung verteidigen.

Aber ich weiß, dass mit nur 6 Werten Ihr Typ-II-Fehler fast 1 sein muss, was Ihre Potenz nahe an 0 bringt. Mit 6 Beobachtungen kann der Shapiro-Test nicht zwischen einer Normal-, Gift-, Gleich- oder sogar Exponentialverteilung unterscheiden. Mit einem Typ II-Fehler von fast 1 ist Ihr Testergebnis bedeutungslos.

Zur Veranschaulichung der Normalitätstests mit dem Shapiro-Test:

shapiro.test(rnorm(6)) # test a the normal distribution
shapiro.test(rpois(6,4)) # test a poisson distribution
shapiro.test(runif(6,1,10)) # test a uniform distribution
shapiro.test(rexp(6,2)) # test a exponential distribution
shapiro.test(rlnorm(6)) # test a log-normal distribution

Das einzige, bei dem etwa die Hälfte der Werte kleiner als 0,05 ist, ist das letzte. Welches ist auch der extremste Fall.


Wenn Sie herausfinden möchten, welches Minimum n Ihnen beim Shapiro-Test eine Leistung verleiht, die Sie mögen, können Sie eine Simulation wie die folgende durchführen:

results <- sapply(5:50,function(i){
  p.value <- replicate(100,{
    y <- rexp(i,2)
    shapiro.test(y)$p.value
  })
  pow <- sum(p.value < 0.05)/100
  c(i,pow)
})

Das gibt Ihnen eine Leistungsanalyse wie folgt:

Bildbeschreibung hier eingeben

Daraus schließe ich, dass Sie in 80% der Fälle mindestens 20 Werte benötigen, um ein Exponential von einer Normalverteilung zu unterscheiden.

Code-Plot:

plot(lowess(results[2,]~results[1,],f=1/6),type="l",col="red",
    main="Power simulation for exponential distribution",
    xlab="n",
    ylab="power"
)
Joris Meys
quelle
2
@whuber: Zur Logik des Hypothesentests auf den Kopf gestellt: In welchem ​​Fall interessieren Sie sich für die Alternativhypothese? Bei allen Anwendungen dieser Tests, die ich gesehen habe, sind die Leute an der Bestätigung der Null interessiert: Meine Daten unterscheiden sich nicht wesentlich von einer Normalverteilung. Deshalb betone ich den Typ II-Fehler.
Joris Meys
4
n5
4
n=8n
3
@whuber: Wir müssen uns einigen, um uns zu unterscheiden. Ich bin nicht ganz ein Fan der EPA-Richtlinien (und definitiv nicht der FDA-Richtlinien). Ich habe diesen Missbrauch einmal zu oft gesehen, um immer noch an seine Nützlichkeit zu glauben. Zufall ist eine seltsame Sache und mit nur 6 Fällen höchst unvorhersehbar. Ich glaube nicht, dass man mit nur 6 Beobachtungen etwas über eine komplexe Funktion wie ein PDF sagen kann. YMMV
Joris Meys
5
@ImAlso Der t-Test toleriert viele Nicht-Normalitäten, wenn er ziemlich symmetrisch ist, aber nicht zu viele Asymmetrien. (Tatsächlich ist ein Skewness-Test für die Normalität im OP möglicherweise eine bessere Option als der KS-Test.) Dies zeigt einen der größten Unterschiede zwischen Fit-Tests und anderen Hypothesentests: Es gibt einen großen Unterschied Der Raum möglicher Alternativen und die GoF-Tests sind in der Regel gut gegen einige von ihnen, aber nicht gegen andere. Sie können sie nicht gegen alle Alternativen arbeiten lassen.
whuber
-2

Die hier gestellte Frage hat ein Missverständnis darüber, warum die Normalitätsprüfung für eine Stichprobengröße von 6 erforderlich ist. Hier besteht das Hauptziel darin, zu testen, ob die in der Codeversion A verbrachte Zeit von der in der Codeversion B verbrachten Zeit abweicht oder nicht ( Das ist mein H1) ”. Wenn das Wort "unterscheiden" verwendet wird, handelt es sich um einen Schwanztest ?. Das Testen der Normalität ist jedoch ein zweiter Schritt. Der erste Schritt besteht darin, die Angemessenheit der vorgegebenen (1 - & bgr;) - Leistung des Tests für eine gegebene Probengröße zu prüfen, wenn die Leistung sehr schlecht ist. Die Überprüfung des Normalzustands hilft uns bei der Entscheidung, ob ein parametrischer oder ein nicht parametrischer Test durchgeführt werden soll. Wenn Ihre Stichprobengröße keine ausreichende Leistung hat, warum sollte man an die Prüfung der Normalität denken?

user202344
quelle
(-1) Das ist sehr unklar. Bitte lesen Sie diese Seite, um zu erfahren,
mkt - Reinstate Monica