Quelle est la distribution de ces données?

8

J'ai obtenu les données, tracé la distribution des données et utilisé la fonction qqnorm, mais il semble que ne suit pas une distribution normale, alors quelle distribution dois-je utiliser pour décrire les données?

Fonction de distribution cumulative empirique entrez la description de l'image ici

entrez la description de l'image ici

PepsiCo
la source
Un tracé de l'histogramme peut également être utile à inspecter. Cela pourrait ressembler à une distribution asymétrique, plutôt que d'avoir besoin d'un modèle de mélange.
John
1
Pourriez-vous nous expliquer un peu pourquoi vous essayez de décrire cette distribution? Après tout, il existe de nombreuses alternatives pour donner le nom d'une fonction mathématique bien connue: lissage du noyau, résumés à n lettres, ECDF lui-même, etc. Tous sont des descriptions adéquates dans les paramètres appropriés.
whuber

Réponses:

12

Je vous suggère d' essayer les distributions Lambert W x F à queue lourde ou asymétriques Lambert W x F (avis de non-responsabilité: je suis l'auteur). Dans R, ils sont implémentés dans le package LambertW .

Ils proviennent d'une paramétrique, transformation non linéaire d'une variable aléatoire (RV) , à une lourde queue Version (asymétrique) . Pour étant gaussien, le Lambert W x F à queue lourde se réduit à la distribution de Tukey . (Je décrirai ici la version à queue lourde, celle asymétrique est analogue.)XFYLambert W×FFh

Ils ont un paramètre ( pour Lambert W x F asymétrique) qui régule le degré de lourdeur de la queue (asymétrie). En option, vous pouvez également choisir différentes queues lourdes gauche et droite pour obtenir des queues lourdes et une asymétrie. Il transforme un Normal normal en Lambert W Gaussian par δ0γRUN(0,1)×Z

Z=Uexp(δ2U2)

Si a des queues plus lourdes que ; pour , .δ>0 ZUδ=0ZU

Si vous ne voulez pas utiliser le gaussien comme base de référence, vous pouvez créer d'autres versions Lambert W de votre distribution préférée, par exemple, t, uniforme, gamma, exponentielle, bêta, ... Cependant, pour votre jeu de données, un double lourd- La distribution de la queue Lambert W x gaussienne (ou une asymétrie Lambert W xt) semble être un bon point de départ.

library(LambertW)
set.seed(10)

### Set parameters ####
# skew Lambert W x t distribution with 
# (location, scale, df) = (0,1,3) and positive skew parameter gamma = 0.1
theta.st <- list(beta = c(0, 1, 3), gamma = 0.1)
# double heavy-tail Lambert W x Gaussian
# with (mu, sigma) = (0,1) and left delta=0.2; right delta = 0.4 (-> heavier on the right)
theta.hh <- list(beta = c(0, 1), delta = c(0.2, 0.4))

### Draw random sample ####
# skewed Lambert W x t
yy <- rLambertW(n=1000, distname="t", theta = theta.st)

# double heavy-tail Lambert W x Gaussian (= Tukey's hh)
zz =<- rLambertW(n=1000, distname = "normal", theta = theta.hh)

### Plot ecdf and qq-plot ####
op <- par(no.readonly=TRUE)
par(mfrow=c(2,2), mar=c(3,3,2,1))
plot(ecdf(yy))
qqnorm(yy); qqline(yy)

plot(ecdf(zz))
qqnorm(zz); qqline(zz)
par(op)

ecdf et qqplot des distributions Lambert W x F asymétriques / à queue lourde

En pratique, bien sûr, vous devez estimer , où est le paramètre de votre distribution d'entrée (par exemple, pour un gaussien, ou pour une distribution ; voir le papier pour plus de détails):θ=(β,δ)ββ=(μ,σ)β=(c,s,ν)t

### Parameter estimation ####
mod.Lst <- MLE_LambertW(yy, distname="t", type="s")
mod.Lhh <- MLE_LambertW(zz, distname="normal", type="hh")

layout(matrix(1:2, ncol = 2))
plot(mod.Lst)
plot(mod.Lhh)

entrez la description de l'image ici

Étant donné que cette génération de queue lourde est basée sur des transformations bijectives de VR / données, vous pouvez supprimer les queues lourdes des données et vérifier si elles sont bien maintenant, c'est-à-dire si elles sont gaussiennes (et les tester en utilisant des tests de normalité).

### Test goodness of fit ####
## test if 'symmetrized' data follows a Gaussian
xx <- get_input(mod.Lhh)
normfit(xx)

entrez la description de l'image ici

Cela a plutôt bien fonctionné pour l'ensemble de données simulé. Je vous suggère de l'essayer et de voir si vous pouvez également Gaussianize()vos données .

Cependant, comme l'a souligné @whuber, la bimodalité peut être un problème ici. Alors peut-être que vous voulez vérifier les données transformées (sans les queues lourdes) ce qui se passe avec cette bimodalité et ainsi vous donner un aperçu de la façon de modéliser vos données (originales).

Georg M. Goerg
la source
+1 Très clair et bien illustré: vous avez travaillé pour partager ces idées avec nous et je vous en remercie.
whuber
+1, merci d'avoir posté ceci, je suis intéressé à l'expérimenter. Juste quelques clarifications mineures: à quoi fait référence dans votre deuxième paragraphe? Aussi, dans la phrase "En pratique, bien sûr, vous devez estimer ", voulez-vous dire ? γRθδ
Macro
1
@Macro: J'ai apporté des modifications dans le message d'origine pour clarifier ces deux points.
Georg M. Goerg
Je suis fan et j'ai commencé à travailler sur une version similaire à scikit-learn ici: github.com/gregversteeg/gaussianize
Greg Ver Steeg
7

Cela ressemble à une distribution asymétrique qui a des queues plus longues, dans les deux sens, que la distribution normale.

  • Vous pouvez voir la longue traîne parce que les points observés sont plus extrêmes que ceux attendus sous la distribution normale, à gauche et à droite (c'est-à-dire qu'ils sont respectivement en dessous et au-dessus de la ligne).

  • Vous pouvez voir l'asymétrie parce que, dans la queue droite, la mesure dans laquelle les points sont plus extrêmes que ce qui serait attendu dans une distribution normale est plus grande que dans la queue gauche.

Je ne peux pas penser à des distributions "en conserve" qui ont cette forme, mais il n'est pas trop difficile de "préparer" une distribution qui a les propriétés indiquées ci-dessus.

Voici un exemple simulé (en R):

set.seed(1234)
x=rexp(1e3)
y=-rexp(1e3,rate=2)
z=c(x,y)
qqnorm(z)
qqline(z) # see below for the plot. 
plot( ecdf(z) ) # see below for plot (2nd plot)

La variable ici est un mélange 50/50 entre une et une reflétée autour de 0. Ce choix a été fait car il sera asymétrique par définition, car il existe différents paramètres de débit , et ils seront tous les deux à longue queue par rapport à la distribution normale, la queue droite étant plus longue, car le taux du côté droit est plus grand.exponential(1)exponential(2)

Cet exemple produit un qqplot et un CDF empirique assez similaires (qualitativement) à ce que vous voyez:

entrez la description de l'image ici entrez la description de l'image ici

Macro
la source
1
+1 Les modèles de mélange sont utiles. Surtout si vous avez des données générées dans deux ou plusieurs circonstances différentes.
Seth
+1 L'utilisation de distributions flexibles pourrait également être envisagée.
@Procrastinator, à quelles distributions flexibles faites-vous référence (ou s'agit-il d'un terme technique)?
Macro
Par exemple, les distributions de biais-t: 1 , 2 , 3 , 4 , 5 . Ils sont unimodaux, contiennent un paramètre d'asymétrie et un paramètre de kurtosis, et évitent l'hypothèse dans les modèles de mélange qu'il y a deux populations ou plus générant les observations, comme l'a mentionné @Seth.
1
@Macro Cela dépend de la façon dont l'asymétrie est mesurée. Le troisième moment est une mesure ancienne qui est pas tout à fait acceptée de nos jours , car il n'existe pas pour de nombreuses distributions telles que l'obliquité-t symétrique et . L'asymétrie normale couvre en fait toute la gamme d'autres mesures d'asymétrie comme celle-ci . Les mesures de Pearson et d'Edgeworth sont influencées par les queues (car elles sont basées sur le moment) qui est une propriété indésirable. En outre, ils ne remplissent pas les 3 conditions requises pour être une mesure d'asymétrie spécifiée dans le document lié ...t
0

Afin de déterminer la distribution qui convient le mieux, j'identifierais d'abord certaines distributions cibles potentielles: je penserais au processus réel qui a généré les données, puis j'ajusterais certaines densités potentielles aux données et comparerais leurs scores de loglikelihood pour voir quelle distribution potentielle convient le mieux. C'est facile en R avec la fonction fitdistr de la bibliothèque MASS.

Si vos données sont comme le z de la macro, alors:

>fitdistr(z,'cauchy',list(location=mean(z),scale=sqrt(sd(z))))$loglik
[1] -2949.068

> fitdistr(z,'normal')$loglik
[1] -3026.648

> fitdistr(z,'t')$loglik
[1] -2830.861

Cela donne donc la distribution t comme la meilleure adaptation (de celles que nous avons essayées) pour les données de macro. confirmez cela avec quelques qqplots en utilisant les paramètres de fitdistr.

> qqplot(z,rt(length(z),df=2.7))  

Comparez ensuite ce graphique aux autres ajustements de distribution.

Seth
la source
1
alors que je pense que l'adaptation aux familles paramétriques connues a sa place, mais qu'est-ce que cela vous dit dans ce cas? De l'asymétrie que nous connaissons Cauchy, normal et peuvent être exclus dès le départ. Pouvez-vous penser à des familles paramétriques qui pourraient éventuellement capturer cette combinaison d'asymétrie et de longue traîne? Il me semble qu'une distribution de mélange (comme celle à partir de laquelle j'ai simulé) peut être nécessaire, ou une estimation non paramétrique, comme @whuber le mentionne dans son commentaire à la question principale. t
Macro
@Macro De nombreuses distributions «standard» peuvent gérer à la fois les situations asymétriques et les queues lourdes. F et Gamma viennent à l'esprit, avec presque toutes les distributions de paramètres 3 et 4. Je viens d'ajouter une réponse pour que l'affiche originale ait une idée de la façon de quantifier la «qualité de l'ajustement» et de faire des comparaisons numériques.
Seth
Je comprends votre point de vue, mais j'essaie simplement de déterminer si une distribution "standard" fonctionnerait ici. Gamma et F sont tous deux non négatifs et je ne pense pas que Gamma puisse obtenir ce type de forme, même si vous avez décalé les données de manière appropriée afin qu'elles ne soient pas négatives.
Macro
Seth et @Macro, l'intrigue EDF dans la question présente une bimodalité, alors oubliez de réaliser un bon ajustement avec une distribution conventionnelle s'il est nécessaire de capturer ce deuxième mode. Pour le moment, nous n'avons pas de critère efficace pour recommander un ajustement. Que se passe-t-il si le PO a des résidus de régression des données d'inondation ou de catastrophes financières et doit donc être bien adapté à la queue supérieure? Et s'il est essentiel pour lui de séparer les modes? Les réponses seront étonnamment différentes selon l'application. L'ajustement de distribution doit être plus qu'un exercice mathématique aveugle!
whuber