Comment transformer la distribution leptokurtique en normalité?

12

Supposons que j'ai une variable leptokurtique que je voudrais transformer en normalité. Quelles transformations peuvent accomplir cette tâche? Je suis bien conscient que la transformation des données n'est pas toujours souhaitable, mais en tant que poursuite académique, supposons que je veuille "marteler" les données en normalité. De plus, comme vous pouvez le voir sur le graphique, toutes les valeurs sont strictement positives.

J'ai essayé une variété de transformations (à peu près tout ce que j'ai vu auparavant, y compris , etc.), mais aucune ne fonctionne particulièrement bien. Existe-t-il des transformations bien connues pour rendre les distributions leptokurtiques plus normales?1X,X,asinh(X)

Voir l'exemple de tracé Normal QQ ci-dessous:

entrez la description de l'image ici

Underminer
la source
5
Connaissez-vous la transformation intégrale de probabilité ? Il a été invoqué dans quelques discussions sur ce site , si vous souhaitez le voir en action.
whuber
8
Vous avez besoin de quelque chose qui fonctionne symétriquement (variable "milieu") tout en respectant le signe. Rien de ce que vous avez essayé ne se rapproche si vous n'avez pas de "milieu". Utilisez la médiane pour "milieu" et essayez la racine cubique des écarts, en vous rappelant d'implémenter la racine cubique comme signe (.) * Abs (.) ^ (1/3). Aucune garantie et très ponctuel, mais il doit pousser dans la bonne direction.
Nick Cox
1
Euh, qu'est-ce qui vous fait appeler ça platykurtic? Sauf si j'ai raté quelque chose, on dirait qu'il a un kurtosis plus élevé que la normale.
Glen_b -Reinstate Monica
3
@Glen_b Je pense que c'est vrai: c'est leptokurtic. Mais ces deux termes sont assez stupides, sauf dans la mesure où ils permettent de faire référence au dessin animé original de Student in Biometrika . Le critère est le kurtosis; les valeurs sont élevées ou faibles ou (encore mieux) quantifiées.
Nick Cox
3
Pourquoi le leptokurtic est-il décrit comme «à queue mince»? Bien qu'il n'y ait pas de relation nécessaire entre l'épaisseur de la queue et la kurtosis, la tendance générale est à ce que les queues lourdes soient associées à la kurtosis (par exemple, comparer à la normale, pour des densités normalisées)t6
Glen_b -Reinstate Monica

Réponses:

12

J'utilise des distributions Lambert W x F à queue lourde pour décrire et transformer des données leptokurtiques. Voir (mes) articles suivants pour plus de détails et de références:

Voici un exemple reproductible utilisant le package LambertW R.

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)

tester la normalité des données originales

## $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

Le qqplot de yyest très proche de votre qqplot dans le message d'origine et les données sont en effet légèrement leptokurtic avec un kurtosis de 5. Par conséquent, vos données peuvent être bien décrites par une distribution gaussienne Lambert W avec l'entrée et un paramètre de queue de (ce qui implique que seuls les moments jusqu'à l'ordre existent).X N ( 2000 , 400 ) δ = 0,2 5×XN(2000,400)δ=0.25

Revenons maintenant à votre question: comment rendre à nouveau normales ces données leptokurtiques? Eh bien, nous pouvons estimer les paramètres de la distribution en utilisant MLE (ou pour les méthodes d'utilisation des moments 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.

puis utiliser la transformation inverse bijective (basée sur W_delta()) pour retransformer les données en entrée , qui - par conception - devrait être très proche d'une normale.X

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

tester la normalité des données gaussianisées

## $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
la source
Je suis fan et j'ai commencé à travailler sur une version similaire à scikit-learn pour python: github.com/gregversteeg/gaussianize
Greg Ver Steeg
Georg, est-il possible pour vous de fournir une explication plus intuitive du fonctionnement de votre transformation?
Azuric
Z=Uexp(δ/2U2)Uδ>0Z
9

sign(.)abs(.)13Ymedian(Y)

Bien que la transformation de la racine cubique n'ait pas bien fonctionné, il s'avère que la racine carrée et la racine plus obscure des trois quarts fonctionnent bien.

Voici le tracé de densité du noyau d'origine correspondant au tracé QQ de la variable leptokurtic dans la question d'origine:

entrez la description de l'image ici


Après avoir appliqué la transformation de racine carrée aux écarts, le tracé QQ ressemble à ceci:

entrez la description de l'image ici

Mieux, mais ça peut être plus proche.


En martelant un peu plus, en appliquant la transformation de la racine des trois quarts aux écarts, on obtient:

entrez la description de l'image ici


Et la densité finale du noyau de cette variable transformée ressemble à ceci:

entrez la description de l'image ici

Me ressemble.

Underminer
la source
8

Dans de nombreux cas, il peut simplement n'y avoir aucune transformation monotone de forme simple qui produira un résultat proche de la normale.

Par exemple, imaginez que nous avons une distribution qui est un mélange fini de distributions log-normales de divers paramètres. Une transformation logarithmique transformerait l'un des composants du mélange en normalité, mais le mélange de normales dans les données transformées vous laisse avec quelque chose qui n'est pas normal.

Ou il peut y avoir une transformation relativement agréable, mais pas l'une des formes que vous pensez essayer - si vous ne connaissez pas la distribution des données, vous ne la trouverez peut-être pas. Par exemple, si les données étaient distribuées gamma, vous ne trouverez même pas la transformation exacte en normalité (qui existe certainement) à moins que je ne vous dise exactement ce qu'est la distribution (bien que vous puissiez tomber sur la transformation de racine cubique qui dans ce cas le rendrait assez proche de la normale tant que le paramètre de forme n'est pas trop petit).

Il existe une myriade de façons dont les données peuvent sembler raisonnablement susceptibles d'être transformées, mais qui ne sont pas superbes sur une liste de transformations évidentes.

Si vous pouvez nous donner accès aux données, il se pourrait bien que nous puissions repérer une transformation qui fonctionne bien - ou que nous pouvons vous montrer pourquoi vous n'en trouverez pas.

Juste à partir de l'impression visuelle, cela ressemble plutôt à un mélange de deux normales avec des échelles différentes. Il n'y a qu'un léger soupçon d'asymétrie, que vous pourriez facilement observer par hasard. Voici un exemple d'un échantillon d'un mélange de deux normales avec une moyenne commune - comme vous le voyez, il ressemble un peu à votre intrigue (mais d'autres échantillons peuvent sembler plus lourds ou plus légers - à cette taille d'échantillon, il y a beaucoup de variations dans l'ordre statistiques en dehors de 1 sd de chaque côté de la moyenne).

entrez la description de l'image ici

En fait voici les vôtres et les miens superposés:

entrez la description de l'image ici

Glen_b -Reinstate Monica
la source
Cela ressemble certainement à un mélange de deux distributions normales d'échelle différente, excellente observation.
Underminer