Inkonsistente Normalitätstests: Kolmogorov-Smirnov gegen Shapiro-Wilk


8

Ich untersuche derzeit einige Daten, die von einer von mir geschriebenen MC-Simulation erstellt wurden. Ich erwarte, dass die Werte normal verteilt sind. Natürlich habe ich ein Histogramm gezeichnet und es sieht vernünftig aus (denke ich?):

[Oben links: Histogramm mit dist.pdf(), oben rechts: kumulatives Histogramm mit dist.cdf(), unten: QQ-Plot, datavs dist]

Dann habe ich mich entschlossen, dies mit einigen statistischen Tests genauer zu untersuchen. (Beachten Sie das dist = stats.norm(loc=np.mean(data), scale=np.std(data)).) Was ich getan habe und die Ausgabe, die ich bekam, war die folgende:

  1. Kolmogorov-Smirnov-Test:

    scipy.stats.kstest(data, 'norm', args=(data_avg, data_sig))
    KstestResult(statistic=0.050096921447209564, pvalue=0.20206939857573536)
    
  2. Shapiro-Wilk-Test:

    scipy.stats.shapiro(dat)
    (0.9810476899147034, 1.3054057490080595e-05)
    # where the first value is the test statistic and the second one is the p-value.
    
  3. QQ-Plot:

    stats.probplot(dat, dist=dist)

Meine Schlussfolgerungen daraus wären:

  • Wenn ich mir das Histogramm und das kumulative Histogramm anschaue, würde ich definitiv eine Normalverteilung annehmen

  • Gleiches gilt nach dem Betrachten des QQ-Diagramms (wird es jemals viel besser?)

  • Der KS-Test sagt: "Ja, das ist eine Normalverteilung."

Meine Verwirrung ist: Der SW-Test sagt, dass er nicht normal verteilt ist (p-Wert viel kleiner als die Signifikanz alpha=0.05, und die anfängliche Hypothese war eine Normalverteilung). Ich verstehe das nicht, hat jemand eine bessere Interpretation? Habe ich es irgendwann vermasselt?


5
QQ-Diagramme für die Normalität können besser sein: Versuchen Sie, einige zufällige Normalen derselben Stichprobengröße zu zeichnen, um einen Benchmark zu erhalten. Sie haben eine leichte Nichtnormalität, wie durch die systematische Krümmung im QQplot angezeigt. Histogramme und kumulative Verteilungsdiagramme sind für präzise Arbeiten weniger nützlich. Ich würde KS hier nicht privilegieren; Es ist in der Regel empfindlicher in der Mitte einer Verteilung als in den Schwänzen, was das Gegenteil von dem ist, was Sie brauchen. SW ist ein Test und misst nicht (kann nicht!), Wie problematisch Nichtnormalität ist.
Nick Cox

5
@Nick Diese Anwendung von KS ist ungültig, da sie die Daten mit einer Normalverteilung mit durch die Daten bestimmten Parametern vergleicht : Sie benötigt die Lilliefors-Version. (Ich weiß, dass Sie das wissen, aber Sie scheinen diesen Fehler übersehen zu haben.) Folglich ist sein p-Wert viel zu hoch.
whuber

4
@Nick Ich nahm an, dass die Anwendung aufgrund von zwei Beweisstücken fehlerhaft war: (1) Der Funktionsname bezieht sich auf KS und (2) das argsArgument gibt keine Möglichkeit , anzugeben, ob die Parameter aus den Daten abgeleitet wurden oder nicht. Die Dokumentation ist nicht klar , aber das Fehlen jeglicher Erwähnung dieser Unterscheidungen deutet stark darauf hin, dass der Lilliefors-Test nicht durchgeführt wird. Dieser Test wird anhand eines Codebeispiels unter stackoverflow.com/a/22135929/844723 beschrieben .
whuber

1
Ah! Das fand ich faul, aber ich war mir dieser Methode nicht bewusst - ich werde das sofort ändern. Vielen Dank für den Hinweis auf @whuber!
Rammelmüller

2
@Nick Ich liebe den KS-Test aus mehreren Gründen: seiner Einfachheit, seiner direkten Verbindung zum QQ-Plot, seiner Flexibilität und seiner Leistung. Ich behaupte, dass jeder statistische Test visualisiert werden kann und (fast) jede Visualisierung einen entsprechenden Test vorschlägt - und dies ist eines der besten Beispiele für diese These (insbesondere wenn man die Residuen in einem QQ-Diagramm darstellt, das visuell leistungsfähiger ist). . Obwohl ich viele andere GoF-Tests wie SW, SF und AD implementiert habe, war KS immer meine erste Wahl für die (relativ seltenen) Fälle, in denen ein formeller Verteilungstest erforderlich war.
whuber

Antworten:


6

Es gibt unzählige Möglichkeiten, wie sich eine Verteilung von einer Normalverteilung unterscheiden kann. Kein Test konnte alle erfassen. Infolgedessen unterscheidet sich jeder Test darin, wie überprüft wird, ob Ihre Verteilung mit der Normalverteilung übereinstimmt. Der KS-Test untersucht beispielsweise das Quantil, in dem sich Ihre empirische kumulative Verteilungsfunktion maximal von der theoretischen kumulativen Verteilungsfunktion der Normalen unterscheidet. Dies ist oft irgendwo in der Mitte der Verteilung, wo wir uns normalerweise nicht um Fehlanpassungen kümmern. Der SW-Test konzentriert sich auf die Schwänze. Hier ist es uns normalerweise wichtig, ob die Verteilungen ähnlich sind. Infolgedessen wird üblicherweise die SW bevorzugt. Darüber hinaus ist der KW-Test nicht gültig, wenn Sie Verteilungsparameter verwenden, die anhand Ihrer Stichprobe geschätzt wurden (siehe:Was ist der Unterschied zwischen dem Shapiro-Wilk-Normalitätstest und dem Kolmogorov-Smirnov-Normalitätstest? ). Sie sollten die SW hier verwenden.

Diagramme werden jedoch im Allgemeinen empfohlen und Tests nicht (siehe: Sind Normalitätstests „im Wesentlichen nutzlos“? ). Sie können aus all Ihren Darstellungen ersehen, dass Sie einen schweren rechten Schwanz und einen leichten linken Schwanz relativ zu einer echten Normalität haben. Das heißt, Sie haben ein wenig Rechtsversatz.


2

Sie können keine Normalitätstests basierend auf den Ergebnissen auswählen. In diesem Fall gehen Sie entweder mit der Ablehnung in einem durchgeführten Test vor oder verwenden sie überhaupt nicht. Der KS-Test ist nicht sehr leistungsfähig, er ist kein "spezialisierter" Normalitätstest. Wenn überhaupt, ist SW in diesem Fall wahrscheinlich vertrauenswürdiger.

Für mich hat Ihr QQ-Plot Anzeichen von entweder fettem rechten Schwanz oder Schrägstellung nach links oder von beidem. Ich würde vorschlagen, Tukeys Werkzeug zu verwenden, um die Fettigkeit von Schwänzen zu untersuchen. Es gibt Ihnen einen Hinweis darauf, wie sehr eine Verteilung normal oder Cauchy ist.


Wie schlussfolgern Sie aus QQ-Plots die Fettigkeit der Schwänze? Und: Welche Distribution würden Sie vorschlagen?
Rammelmüller

1
@rammelmüller, die dickeren Schwänze würden eine s-ähnliche Kurve zeigen, in der sich links nach unten und rechts nach oben biegt. In Ihrem Fall biegt sich auch die linke Seite nach oben, was ein Zeichen für eine Linksverschiebung sein könnte.
Aksakal

Vielen Dank für den Hinweis auf das Tool, ich werde es untersuchen. Nur der Vollständigkeit halber: Ich habe einige andere Datensätze und die Ergebnisse unterscheiden sich manchmal geringfügig: Der obere Schwanz des QQ-Diagramms variiert, aber der untere Schwanz ist durchweg etwas zu hoch - ein Zeichen für Verzerrung?
Rammelmüller

1
Ich denke, Sie müssen sich fragen, wie wichtig das Testen der Normalitätsannahme für Sie ist, wie von @NickCox vorgeschlagen. Warum testest du überhaupt? Ein kurzer Schwanz nach oben und ein langer Schwanz nach unten könnten ein Zeichen für einen kurzen Schwanz sein. Am wichtigsten ist, dass dies alles für Sie
unwichtig sein

1
Ich bin mir bewusst, dass ich nach dieser Aussage möglicherweise enthauptet werde, aber jetzt kann es losgehen: Ich möchte, dass meine Daten "einigermaßen gaußsch" sind - wenn es etwas sehr Fischiges gibt, dh extrem fette Schwänze oder extreme Schiefe, dann müsste ich jagen für einige grundlegende Fragen. Dies scheint nicht der Fall zu sein und das Projekt ist in Ordnung. Der Grund für die Frage hier war mehr zu überprüfen, ob ich nicht ganz falsch in meinem Tun bin (dh Ergebnisse und dergleichen interpretieren)
Rammelmüller
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.