Wie verwandle ich die leptokurtische Verteilung in Normalität?

12

Angenommen, ich habe eine leptokurtische Variable, die ich in Normalität umwandeln möchte. Welche Transformationen können diese Aufgabe erfüllen? Mir ist durchaus bewusst, dass die Umwandlung von Daten nicht immer wünschenswert ist, aber als akademische Maßnahme möchte ich die Daten in die Normalität "hämmern". Wie Sie aus der Grafik ersehen können, sind alle Werte streng positiv.

Ich habe verschiedene Transformationen ausprobiert (so ziemlich alles, was ich vorher gesehen habe, einschließlich usw.), aber keines von ihnen funktioniert besonders gut. Gibt es bekannte Transformationen, um die Verteilung von Leptokurtika zu normalisieren?1X,X,asinh(X)

Siehe das folgende Beispiel eines normalen QQ-Diagramms:

Bildbeschreibung hier eingeben

Underminer
quelle
5
Kennen Sie die Wahrscheinlichkeitsintegraltransformation ? Es wurde in einigen Threads auf dieser Site aufgerufen , wenn Sie es in Aktion sehen möchten.
Whuber
8
Sie brauchen etwas, das symmetrisch funktioniert (Variable "Mitte") und gleichzeitig das Vorzeichen respektiert. Nichts, was du ausprobiert hast, kommt dir nahe, wenn du keine "Mitte" hast. Verwenden Sie den Median für "Mitte" und versuchen Sie die Kubikwurzel der Abweichungen. Denken Sie daran, die Kubikwurzel als Zeichen (.) * Abs (.) ^ (1/3) zu implementieren. Keine Garantien und sehr ad hoc, aber es sollte in die richtige Richtung gehen. -
Nick Cox
1
Äh, warum nennst du das platykurtisch? Wenn ich nichts verpasst habe, sieht es so aus, als hätte es eine höhere Kurtosis als die normale.
Glen_b -Reinstate Monica
3
@ Glen_b Ich denke, es ist richtig: Es ist leptokurtisch. Aber diese beiden Begriffe sind ziemlich albern, es sei denn, sie lassen einen Verweis auf den Original-Cartoon von Student in Biometrika zu . Das Kriterium ist Kurtosis; Werte sind hoch oder niedrig oder (noch besser) quantifiziert.
Nick Cox
3
Warum wird Leptokurtikum als "dünnschwänzig" beschrieben? Während es keine notwendige Beziehung zwischen Schwanzdicke und Kurtosis gibt, besteht die allgemeine Tendenz, dass schwere Schwänze mit Kurtosis assoziiert sind (vergleiche z. B. mit normal, für standardisierte Dichten)t6
Glen_b -Reinstate Monica

Antworten:

12

Ich benutze Lambert W x F-Verteilungen mit schwerem Schwanz , um leptokurtische Daten zu beschreiben und zu transformieren. Weitere Details und Referenzen finden Sie in (meinen) folgenden Posts:

Hier ist ein reproduzierbares Beispiel mit dem LambertW R-Paket.

library(LambertW)
set.seed(1)
theta.tmp <- list(beta = c(2000, 400), delta = 0.2)
yy <- rLambertW(n = 100, distname = "normal", 
                theta = theta.tmp)

test_norm(yy)

Test der Normalität der Originaldaten

## $seed
## [1] 267509
## 
## $shapiro.wilk
## 
##  Shapiro-Wilk normality test
## 
## data:  data.test
## W = 1, p-value = 0.008
## 
## 
## $shapiro.francia
## 
## 	Shapiro-Francia normality test
## 
## data:  data.test
## W = 1, p-value = 0.003
## 
## 
## $anderson.darling
## 
##  Anderson-Darling normality test
## 
## data:  data
## A = 1, p-value = 0.01

yy×XN(2000,400)δ=0,25

Zurück zu Ihrer Frage: Wie können diese leptokurtischen Daten wieder normalisiert werden? Nun, wir können die Parameter der Verteilung mit MLE abschätzen (oder für Methoden von Momenten verwenden IGMM()),

mod.Lh <- MLE_LambertW(yy, distname = "normal", type = "h")
summary(mod.Lh)

## Call: MLE_LambertW(y = yy, distname = "normal", type = "h")
## Estimation method: MLE
## Input distribution: normal
## 
##  Parameter estimates:
##        Estimate  Std. Error  t value Pr(>|t|)    
## mu     2.05e+03    4.03e+01    50.88   <2e-16 ***
## sigma  3.64e+02    4.36e+01     8.37   <2e-16 ***
## delta  1.64e-01    7.84e-02     2.09    0.037 *  
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## -------------------------------------------------------------- 
## 
## Given these input parameter estimates the moments of the output random variable are 
##   (assuming Gaussian input): 
##  mu_y = 2052; sigma_y = 491; skewness = 0; kurtosis = 13.

W_delta()X

# get_input() handles does the right transformations automatically based on
# estimates in mod.Lh
xx <- get_input(mod.Lh)
test_norm(xx)

Test der Normalität von Gaußschen Daten

## $seed
## [1] 218646
## 
## $shapiro.wilk
## 
##  Shapiro-Wilk normality test
## 
## data:  data.test
## W = 1, p-value = 1
## 
## 
## $shapiro.francia
## 
## 	Shapiro-Francia normality test
## 
## data:  data.test
## W = 1, p-value = 1
## 
## 
## $anderson.darling
## 
##  Anderson-Darling normality test
## 
## data:  data
## A = 0.1, p-value = 1

Voila!

Georg M. Goerg
quelle
Ich bin ein Fan und habe angefangen, an einer Scikit-ähnlichen Version für Python zu arbeiten: github.com/gregversteeg/gaussianize
Greg Ver Steeg
Georg, ist es dir möglich, eine intuitivere Erklärung zu geben, wie deine Transformation funktioniert?
Azuric
Z=Uexp(δ/2U2)Uδ>0Z
9

Zeichen(.)Abs(.)13Y.-Median(Y.)

Obwohl die Kubikwurzel-Transformation nicht gut funktioniert hat, stellt sich heraus, dass die Quadratwurzel und die undurchsichtige Dreiviertelwurzel gut funktionieren.

Hier war die ursprüngliche Kerndichte-Darstellung, die der QQ-Darstellung der leptokurtischen Variablen in der ursprünglichen Frage entsprach:

Bildbeschreibung hier eingeben


Nachdem die Quadratwurzel-Transformation auf die Abweichungen angewendet wurde, sieht das QQ-Diagramm folgendermaßen aus:

Bildbeschreibung hier eingeben

Besser, aber näher kann es sein.


Wenn Sie die Dreiviertelwurzeltransformation auf die Abweichungen anwenden, erhalten Sie:

Bildbeschreibung hier eingeben


Und die endgültige Kerneldichte dieser transformierten Variablen sieht folgendermaßen aus:

Bildbeschreibung hier eingeben

Sieht mir nahe.

Underminer
quelle
8

In vielen Fällen kann es einfach keine monotone Transformation einfacher Form geben, die ein nahezu normales Ergebnis liefert.

Stellen Sie sich zum Beispiel vor, wir hätten eine Verteilung, die eine endliche Mischung logarithmischer Normalverteilungen verschiedener Parameter ist. Eine Protokolltransformation würde alle Komponenten der Mischung in Normalität transformieren, aber die Mischung der Normalen in den transformierten Daten lässt Sie mit etwas zurück, das nicht normal ist.

Oder es gibt eine relativ nette Transformation, aber keine der Formen, die Sie ausprobieren möchten. Wenn Sie die Verteilung der Daten nicht kennen, werden Sie sie möglicherweise nicht finden. Wenn die Daten beispielsweise gammaverteilt wären, würden Sie nicht einmal die exakte Transformation zur Normalität finden (die sicherlich existiert), es sei denn, ich sage Ihnen genau, wie die Verteilung ist (obwohl Sie möglicherweise auf die darin enthaltene Kubikwurzel-Transformation stoßen case würde es ziemlich normal machen, solange der shape-Parameter nicht zu klein ist).

Es gibt unzählige Möglichkeiten, wie die Daten für eine Transformation einigermaßen geeignet erscheinen können, die jedoch auf keiner Liste offensichtlicher Transformationen gut aussehen.

Wenn Sie uns Zugriff auf die Daten gewähren, können wir möglicherweise eine Transformation erkennen, die in Ordnung ist, oder Ihnen zeigen, warum Sie keine finden.

Nur vom visuellen Eindruck her sieht es eher aus wie eine Mischung aus zwei Normalen mit unterschiedlichen Maßstäben. Es gibt nur einen leichten Hinweis auf Asymmetrie, den Sie leicht zufällig beobachten können. Hier ist ein Beispiel für eine Stichprobe aus einer Mischung von zwei Normalen mit einem gemeinsamen Mittelwert - wie Sie sehen, ähnelt es Ihrer Handlung ziemlich stark (andere Stichproben sehen jedoch möglicherweise schwerer oder schwächer aus - bei dieser Stichprobengröße gibt es große Abweichungen in der Reihenfolge Statistiken außerhalb von 1 sd auf beiden Seiten des Mittelwerts).

Bildbeschreibung hier eingeben

In der Tat sind hier Ihre und meine übereinander gelegt:

Bildbeschreibung hier eingeben

Glen_b - Setzen Sie Monica wieder ein
quelle
Es sieht auf jeden Fall aus wie eine Mischung aus zwei Normalverteilungen unterschiedlichen Maßstabs, eine hervorragende Beobachtung.
Underminer