Kann ich einen Hypothesentest für verzerrte normale Daten durchführen?


11

Ich habe eine Sammlung von Daten, von denen ich ursprünglich dachte, dass sie normal verteilt sind. Dann habe ich es mir tatsächlich angesehen und festgestellt, dass dies nicht der Fall ist, hauptsächlich, weil die Daten verzerrt sind, und ich habe auch einen Shapiro-Wilks-Test durchgeführt.

Ich möchte es immer noch mit statistischen Methoden analysieren und daher einen Hypothesentest auf Schrägnormalität durchführen.

Ich würde gerne wissen, ob es eine Möglichkeit gibt, die Normalität des Versatzes zu testen, und wenn möglich eine Bibliothek, um den Test für mich durchzuführen.

Antworten:


8

Bezüglich der Anpassung von Daten an eine Schrägnormalverteilung Sie können den Maximum-Likelihood-Schätzer anhand der ersten Prinzipien berechnen. Zunächst ist zu beachten, dass die Wahrscheinlichkeitsdichtefunktion für die Schrägnormalverteilung mit dem Ortsparameter , dem Skalenparameter ω und dem Formparameter α istξωα

2ωϕ(xξω)Φ(α(xξω))

Dabei ist die Standardfunktion der normalen Dichte und Φ ( ) die Standard-Normal-CDF. Beachten Sie, dass diese Dichte ein Mitglied der Klasse ist, die in meiner Antwort auf diese Frage beschrieben ist .ϕ()Φ()

Die Log-Wahrscheinlichkeit basierend auf einer Stichprobe von unabhängigen Beobachtungen aus dieser Verteilung ist:n

nlog(ω)+i=1nlogϕ(xξω)+logΦ(α(xξω))

Es ist eine Tatsache, dass es für diese MLE keine geschlossene Lösung gibt. Es kann jedoch numerisch gelöst werden. Zum Beispiel Rkönnten Sie in die Wahrscheinlichkeitsfunktion wie folgt codieren (Hinweis: Ich habe sie weniger kompakt / effizient als möglich gemacht, um sie vollständig transparent zu machen, wie dies die Wahrscheinlichkeitsfunktion oben berechnet).

set.seed(2345)

# generate standard normal data, which is a special case
n = 100 
X = rnorm(n) 

# Calculate (negative) log likelihood for minimization
# P[1] is omega, P[2] is xi and P[3] is alpha
L = function(P)
{

    # positivity constraint on omega
    if( P[1] <= 0 ) return(Inf)

    S = 0
    for(i in 1:n) 
    {
        S = S - log( dnorm( (X[i] - P[2])/P[1] ) ) 
        S = S - log( pnorm( P[3]*(X[i] - P[2])/P[1] ) ) 
    }


    return(S + n*log(P[1]))
}

Jetzt minimieren wir diese Funktion nur numerisch (dh maximieren die Wahrscheinlichkeit). Sie können dies tun, ohne Ableitungen berechnen zu müssen, indem Sie den Simplex-Algorithmus verwenden , der die Standardimplementierung im optim()Paket in ist R.

In Bezug auf das Testen auf Schiefe: Wir können explizit auf Schiefe-Normal gegenüber Normal testen (da Normal ein Submodell ist), indem wir einschränken und einen Likelihood-Ratio-Test durchführen .α=0

# log likelihood constraining alpha=0. 
L2 = function(Q) L(c(Q[1],Q[2],0))

# log likelihood from the constrained model
-optim(c(1,1),L2)$value
[1] -202.8816

# log likelihood from the full model
-optim(c(1,1,1),L)$value
[1] -202.0064

# likelihood ratio test statistic
LRT = 2*(202.8816-202.0064)

# p-value under the null distribution (chi square 1)
1-pchisq(LRT,1)
[1] 0.1858265

Wir lehnen also die Nullhypothese, dass (dh kein Versatz), nicht ab.α=0

Hier war der Vergleich einfach, da die Normalverteilung ein Untermodell war. In anderen, allgemeineren Fällen können Sie die Versatznormale mit anderen Referenzverteilungen vergleichen, indem Sie beispielsweise AICs (wie hier ausgeführt ) vergleichen, wenn Sie in allen konkurrierenden Anpassungen Schätzer für die maximale Wahrscheinlichkeit verwenden. Beispielsweise könnten Sie die Daten nach maximaler Wahrscheinlichkeit unter einer Gammaverteilung und unter der Versatznormalen anpassen und prüfen, ob die hinzugefügte Wahrscheinlichkeit die zusätzliche Komplexität der Versatznormalen rechtfertigt (3 Parameter anstelle von 2). Sie können auch den Kolmogorov-Smirnov-Test mit einer Stichprobe verwenden , um Ihre Daten mit der am besten passenden Schätzung aus der Familie der Schrägnormalen zu vergleichen.


1
+1, ich denke das ist eine klare, gründliche und konstruktive Antwort. Ich habe 1 Nitpick / Bedenken im letzten Absatz bezüglich der Verwendung des AIC. Ein Problem, das ich mit den verschiedenen Informationskriterien habe, ist, dass sie davon ausgehen, dass alle Parameter gleichermaßen zur Fähigkeit des Modells beitragen, die Daten anzupassen. Bei der Bewertung verschiedener multipler Regressionsmodelle halte ich dies für in Ordnung. Wenn ich jedoch verschiedene Arten von Verteilungen untersuche, ist mir a priori nicht klar, dass alle Parameter die gleiche Flexibilität bieten. Daher fühle ich mich damit unwohl. Wie stehen Sie zu diesem Thema?
Gung - Reinstate Monica

αα=0α(μ,σ,α)

@gung, das ist ein guter Punkt. Ich habe AIC mehr als alles andere als Beispiel verwendet - etwas anderes könnte verwendet werden -, aber ich habe gesehen, dass Leute AIC verwenden, um Modelle mit unterschiedlichen Fehlerverteilungen zu vergleichen, was effektiv die gleiche Annahme macht, dass alle Parameter "gleich erstellt" sind. Haben Sie Literatur zu diesem Thema gesehen? Das würde mich interessieren.
Makro

α=0±.9α±αα

1
α

5

Ich bin ein Statistiker, der seit über 30 Jahren in diesem Beruf tätig ist. Bevor ich diesen Beitrag gelesen habe, hatte ich noch nie von der Normalverteilung gehört. Wenn Sie stark verzerrte Daten haben, warum möchten Sie dann speziell den normalen Versatz im Gegensatz zu lognormal oder gamma betrachten? Immer wenn Sie eine parametrische Familie von Verteilungen wie Gamma, Lognormal oder Skew Normal haben, können Sie einen Anpassungstest wie Chi-Quadrat oder Kolmogorov-Smirnov anwenden.


5
Die Azzalini Skew Normal ist eine beliebte Verteilung im Jahr 1985 vorgeschlagen , es Unterstützung auf der ganzen reale Linie hat.

1
@Procrastinator Ich weiß das jetzt und hätte wahrscheinlich vorher davon hören sollen. Aber ich denke, mein Punkt ist, dass es, da ich nichts davon gehört habe, vielleicht etwas dunkler ist als andere verzerrte Verteilungen. Ich verstehe den Punkt über die Unterstützung über die gesamte reale Linie im Gegensatz zu meinen Beispielen, die nur auf [0.∞) oder {a, ∞) Unterstützung haben, wenn ein Verschiebungsparameter hinzugefügt wird. Diese Verteilungen sind nur Näherungswerte, um zu beschreiben, wie die Daten verteilt werden. Wissen wir wirklich, dass alle negativen Werte möglich sind? In praktischen Fällen haben die Daten wahrscheinlich Unter- und Obergrenzen.
Michael R. Chernick

1
@Procrastinator Das hat nichts mit meinem Kommentar zu tun. Ich sage, dass reale Daten oft wirklich begrenzt sind, selbst wenn sie mit unbegrenzten Verteilungen gut angenähert werden können.
Michael R. Chernick

1
@Procrastinator Nicht ganz. Wenn Sie eine endliche Anzahl von Zahlen erhalten, können Sie anhand der Daten nicht erkennen, ob sie aus einer diskreten oder kontinuierlichen Verteilung stammen oder nicht. Gleiches gilt für die Begrenztheit. Ich sage, abgesehen von den Daten, die Sie genau anhand Ihrer Messung wissen würden, ob sie begrenzt und kontinuierlich oder diskret sind oder nicht. Wenn Sie zum Beispiel das Gewicht einer Person messen, wissen Sie, dass das Gewicht größer als 0 ist und oben durch körperliche Einschränkungen begrenzt ist, sagen wir 5000 Pfund.
Michael R. Chernick

1
Auch wenn Gewichtsmessungen nur bis zu einer bestimmten Anzahl von Dezimalstellen bestimmt werden können, ist es sinnvoll, das Gewicht als kontinuierlich zu behandeln. Wenn Sie nun zehnmal eine Münze werfen, wissen Sie, dass die Anzahl der Köpfe, die Sie erhalten, eine ganze Zahl zwischen 0 und 10 sein muss (also diskret und begrenzt). Mein Punkt ist, dass Grenzen der Verteilung normalerweise sehr offensichtlich sind. Bei der Entscheidung zwischen kontinuierlicher und diskreter Verteilung ist dies nicht so klar.
Michael R. Chernick

1

Am Ende bestand meine Lösung darin, das fGarch- Paket herunterzuladen , und snormFit von fGarch bereitzustellen, um MLEs für die Parameter zu einem Skewed-Normal zu erhalten.

Dann habe ich diese Parameter mit der dsnormvon fGarch bereitgestellten Funktion in einen Kolmogorov-Smirnov-Test eingefügt.


Wie können Sie MLE und den nicht parametrischen Kolmogorov-Smirnov-Test kombinieren?

Ich möchte darauf hinweisen, dass ich keine Ahnung habe, was ich tue, und einfach blindlings herumwandere. Ich nahm an, dass KS wie ein Chi-Quadrat funktioniert, und untersuchte die Unterschiede zwischen den Beispieldaten, die ich habe, und der Verteilung selbst. Rs ks.test akzeptiert zuerst die Beispieldaten und dann eine Verteilung zusammen mit den Parametern für diese Verteilung. Ich habe die MLEs als Parameter verwendet. Auch meine Annahme / Erinnerung, wie Chi-Quadrat funktioniert, könnte auch falsch gewesen sein ...
Tintenfisch

H0:λ=0

H0=λ=0H0

1
@Procrastinator Es gibt viele Anpassungstests, die auf dem empirischen cdf basieren. Kolmogorov Smirnov ist einer. Dieser Test kann verwendet werden, um das empirische cdf mit einer bestimmten Verteilung zu vergleichen (und mit Anpassungen, wenn unbekannte Parameter vor dem Testen geschätzt werden. Sie haben absolut Recht, dass das Ablehnen einer Verteilung aus Gründen der Normalität beispielsweise nicht sagt, wie sich die Verteilungen unterscheiden. Aber MrBones, wenn er Wenn er dies formal tun möchte, kann er auf signifikante Schiefe testen und dann einen KS- oder Chi-Quadrat-Test auf normale Schiefe durchführen. Anpassungen können für mehrere Tests vorgenommen werden. Warum mit dem OP selbstgefällig sein?
Michael R. Chernick

0

Überprüfen Sie http://www.egyankosh.ac.in/bitstream/123456789/25807/1/Unit6.pdf und http://en.wikipedia.org/wiki/Skewness

Sie können den Karl Pearson-Test für die Schiefe verwenden. Das Verhältnis des dritten Moments zum Würfel der Standardabweichung wird als Schräglaufkoeffizient bezeichnet. Symmetrische Verteilungen hätten eine Schiefe von 0


2
Ich möchte den Versatz meiner Daten nicht herausfinden. Ich weiß, dass es schief ist. Ich möchte wissen, ob meine Daten einer Schrägnormalverteilung folgen.
Tintenfisch

2
Welche Software Sie verwenden, R hat ein Paket 'sn' (Skew Normal), das Funktionen enthält, die die ML-Schätzungen berechnen. Ich bin mir jedoch nicht sicher über die genauen Funktionen - siehe diese Seite azzalini.stat.unipd.it/SN für Details zum R-Paket
NaN

0

In SPSS können Sie eine Schätzung der Schiefe erhalten (indem Sie die Schiefe analysieren und dann beschreiben und dann die Schiefe markieren). Anschließend erhalten Sie eine Bewertung der Schiefe und einen SE (Standardfehler) der Schiefe. Teilen Sie die Schiefe durch ihre SE und wenn Ihre Punktzahl zwischen + -1,96 liegt, ist sie normalerweise schief. Wenn es nicht schief ist, gibt es viele nicht parametrische Tests! Viel Glück und alles Gute!

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.