Existe-t-il une mesure de «régularité» de la propagation?


14

J'ai recherché sur le Web, mais je n'ai rien trouvé d'utile.

Je cherche essentiellement un moyen de mesurer la répartition «égale» d'une valeur. Comme dans, une distribution distribuée «uniformément» comme X : entrez la description de l'image ici

et une distribution Y «inégalement répartie » d'environ la même moyenne et l'écart-type: entrez la description de l'image ici

Mais existe-t-il une mesure de régularité m, telle que m (X)> m (Y)? S'il n'y en a pas, quelle serait la meilleure façon de créer une mesure comme celle-ci?

(Capture d'écran des images de la Khan Academy)


1
Et le biais?
wolfsatthedoor

L'entropie est agréable pour les distributions discrètes ayant le même support. Mais je ne sais pas si c'est bien pour les distributions continues.
Stéphane Laurent

Etes-vous sûr que ce point dot est ce que vous voulez? Je ne pense pas que vous vouliez vraiment poser des questions sur l'uniformité. Cela ressemble à une question sur la «grosseur» ou le «degré de regroupement» ou même la multimodalité.
shadowtalker

@ StéphaneLaurent - Quelques autres m'ont également recommandé l'entropie. Pourriez-vous, s'il vous plaît, prendre le temps et en parler un peu?
Ketan

1
Vous devez définir plus clairement ce que vous entendez par "uniformément distribué". Mon cerveau à l'esprit littéral dit que les données telles que 1,4,7,10,13, ... sont parfaitement réparties. Mais vous pourriez vouloir dire quelque chose de complètement différent.
Emil Friedman

Réponses:


16

Une fonction standard, puissante, bien comprise, théoriquement bien établie et fréquemment mise en œuvre de la «régularité» est la fonction Ripley K et son proche parent, la fonction L. Bien que ceux-ci soient généralement utilisés pour évaluer les configurations de points spatiaux bidimensionnels, l'analyse nécessaire pour les adapter à une dimension (qui n'est généralement pas donnée dans les références) est simple.


Théorie

La fonction K estime la proportion moyenne de points à une distance d'un point typique. Pour une distribution uniforme sur l'intervalle [ 0 , 1 ] , la vraie proportion peut être calculée et (asymptotiquement dans la taille de l'échantillon) égale 1 - ( 1 - d ) 2 . La version unidimensionnelle appropriée de la fonction L soustrait cette valeur de K pour montrer les écarts par rapport à l'uniformité. Nous pourrions donc envisager de normaliser tout lot de données pour avoir une plage d'unités et d'examiner sa fonction L pour les écarts autour de zéro.d[0,1]1(1d)2


Exemples travaillés

Pour illustrer , j'ai simulé échantillons indépendants de la taille 64 d'une distribution uniforme et tracer leur (normalisé) des fonctions de L pour des distances plus courtes (de 0 à une / 3 ), créant ainsi une enveloppe pour estimer la distribution d'échantillonnage de la fonction L. (Les points tracés bien à l'intérieur de cette enveloppe ne peuvent pas être distingués de manière significative de l'uniformité.) Sur ce point, j'ai tracé les fonctions L pour des échantillons de la même taille à partir d'une distribution en U, d'une distribution de mélange avec quatre composants évidents et d'une distribution normale standard. Les histogrammes de ces échantillons (et de leurs distributions parentes) sont présentés à titre de référence, en utilisant des symboles linéaires pour correspondre à ceux des fonctions L.9996401/3

Figure

Les pointes fortement séparées de la distribution en forme de U (ligne rouge en pointillés, histogramme le plus à gauche) créent des groupes de valeurs étroitement espacées. Cela se traduit par une très grande pente de la fonction L à . La fonction L diminue ensuite, devenant finalement négative pour refléter les écarts à des distances intermédiaires.0

L'échantillon de la distribution normale (ligne bleue continue, histogramme le plus à droite) est assez proche de la distribution uniforme. En conséquence, sa fonction L ne s'écarte pas rapidement de . Cependant, par des distances de 0,10 environ, il s'est élevé suffisamment au-dessus de l'enveloppe pour signaler une légère tendance à se regrouper. L'augmentation continue sur des distances intermédiaires indique que le regroupement est diffus et répandu (non limité à certains pics isolés).00.10

La grande pente initiale de l'échantillon à partir de la distribution du mélange (histogramme central) révèle un regroupement à de petites distances (moins de ). En tombant à des niveaux négatifs, il signale une séparation à des distances intermédiaires. La comparaison avec la fonction L de la distribution en U est révélatrice: les pentes à 0 , les montants par lesquels ces courbes montent au-dessus de 0 et les taux auxquels elles finissent par revenir à 0 fournissent toutes des informations sur la nature du regroupement présent dans les données. Chacune de ces caractéristiques pourrait être choisie comme une seule mesure de "régularité" pour convenir à une application particulière.0.15000

Ces exemples montrent comment une fonction L peut être examinée pour évaluer les écarts des données par rapport à l'uniformité («uniformité») et comment on peut en extraire des informations quantitatives sur l'échelle et la nature des écarts.

(On peut en effet tracer la fonction L entière, s'étendant jusqu'à la distance normalisée complète de , pour évaluer les écarts à grande échelle par rapport à l'uniformité. Cependant, l'évaluation du comportement des données à de plus petites distances est généralement plus importante.)1


Logiciel

RLe code pour générer cette figure suit. Il commence par définir des fonctions pour calculer K et L. Il crée une capacité à simuler à partir d'une distribution de mélange. Ensuite, il génère les données simulées et crée les tracés.

Ripley.K <- function(x, scale) {
  # Arguments:
  # x is an array of data.
  # scale (not actually used) is an option to rescale the data.
  #
  # Return value:
  # A function that calculates Ripley's K for any value between 0 and 1 (or `scale`).
  #
  x.pairs <- outer(x, x, function(a,b) abs(a-b))  # All pairwise distances
  x.pairs <- x.pairs[lower.tri(x.pairs)]          # Distances between distinct pairs
  if(missing(scale)) scale <- diff(range(x.pairs))# Rescale distances to [0,1]
  x.pairs <- x.pairs / scale
  #
  # The built-in `ecdf` function returns the proportion of values in `x.pairs` that
  # are less than or equal to its argument.
  #
  return (ecdf(x.pairs))
}
#
# The one-dimensional L function.
# It merely subtracts 1 - (1-y)^2 from `Ripley.K(x)(y)`.  
# Its argument `x` is an array of data values.
#
Ripley.L <- function(x) {function(y) Ripley.K(x)(y) - 1 + (1-y)^2}
#-------------------------------------------------------------------------------#
set.seed(17)
#
# Create mixtures of random variables.
#
rmixture <- function(n, p=1, f=list(runif), factor=10) {
  q <- ceiling(factor * abs(p) * n / sum(abs(p)))
  x <- as.vector(unlist(mapply(function(y,f) f(y), q, f)))
  sample(x, n)
}
dmixture <- function(x, p=1, f=list(dunif)) {
  z <- matrix(unlist(sapply(f, function(g) g(x))), ncol=length(f))
  z %*% (abs(p) / sum(abs(p)))
}
p <- rep(1, 4)
fg <- lapply(p, function(q) {
  v <- runif(1,0,30)
  list(function(n) rnorm(n,v), function(x) dnorm(x,v), v)
  })
f <- lapply(fg, function(u) u[[1]]) # For random sampling
g <- lapply(fg, function(u) u[[2]]) # The distribution functions
v <- sapply(fg, function(u) u[[3]]) # The parameters (for reference)
#-------------------------------------------------------------------------------#
#
# Study the L function.
#
n <- 64                # Sample size
alpha <- beta <- 0.2   # Beta distribution parameters

layout(matrix(c(rep(1,3), 3, 4, 2), 2, 3, byrow=TRUE), heights=c(0.6, 0.4))
#
# Display the L functions over an envelope for the uniform distribution.
#
plot(c(0,1/3), c(-1/8,1/6), type="n", 
     xlab="Normalized Distance", ylab="Total Proportion",
     main="Ripley L Functions")
invisible(replicate(999, {
  plot(Ripley.L(x.unif <- runif(n)), col="#00000010", add=TRUE)
}))
abline(h=0, lwd=2, col="White")
#
# Each of these lines generates a random set of `n` data according to a specified
# distribution, calls `Ripley.L`, and plots its values.
#
plot(Ripley.L(x.norm <- rnorm(n)), col="Blue", lwd=2, add=TRUE)
plot(Ripley.L(x.beta <- rbeta(n, alpha, beta)), col="Red", lwd=2, lty=2, add=TRUE)
plot(Ripley.L(x.mixture <- rmixture(n, p, f)), col="Green", lwd=2, lty=3, add=TRUE)
#
# Display the histograms.
#
n.breaks <- 24
h <- hist(x.norm, main="Normal Sample", breaks=n.breaks, xlab="Value")
curve(dnorm(x)*n*mean(diff(h$breaks)), add=TRUE, lwd=2, col="Blue")
h <- hist(x.beta, main=paste0("Beta(", alpha, ",", beta, ") Sample"), 
          breaks=n.breaks, xlab="Value")
curve(dbeta(x, alpha, beta)*n*mean(diff(h$breaks)), add=TRUE, lwd=2, lty=2, col="Red")
h <- hist(x.mixture, main="Mixture Sample", breaks=n.breaks, xlab="Value")
curve(dmixture(x, p, g)*n*mean(diff(h$breaks)), add=TRUE, lwd=2, lty=3, col="Green")

1
Je travaille principalement à Numpy, et parfois à SciPy. Avez-vous une idée si cette mesure est disponible dans n'importe quelle bibliothèque de statistiques python? La recherche ne renvoie rien de pertinent.
Ketan

La fonction L n'est probablement pas disponible, car elle est généralement codée pour deux dimensions ou plus. L'algorithme est simple, comme vous pouvez le voir dans l'implémentation ici: calculez la fonction de distribution cumulative empirique des distances entre toutes les paires de données distinctes, puis ajustez comme indiqué dans Ripley.L.
whuber

La variance de la mesure est-elle agnostique ou dépendante de la variance?
Ketan

1
[0,1]1(1d)2

Vous avez dit "Ce problème peut être un problème grave dans les dimensions supérieures". Il a été adapté pour les tableaux univariés, non? Je ne suis pas tout à fait sûr d'avoir tout bien compris. Pourriez-vous s'il vous plaît écrire Ripley.L dans une autre langue ou en pseudocode? Ou vous pouvez simplement commenter un peu le code existant ou au moins formater Ripley.L sur plusieurs lignes pour améliorer sa lisibilité. Le manque de documentation appropriée sur statsmodels.sourceforge.net/stable/generated/… , ne m'aide pas beaucoup de toute façon.
Ketan

5

Je suppose que vous voulez mesurer à quel point la distribution de l'uniforme est proche.

Vous pouvez regarder la distance entre la fonction de distribution cumulative d'une distribution uniforme et la fonction de distribution cumulative empirique de l'échantillon.

{1,2,3,4,5}Fu(x)

Fu(x)=i=1[x]1/5.

X1,3,5X

FX(1)=1/3,FX(2)=1/3,FX(3)=2/3,FX(4)=2/3,FX(5)=1

Y1,1,5Y

FY(1)=2/3,FY(2)=2/3,FY(3)=2/3,FY(4)=2/3,FY(5)=1

Maintenant, comme mesure de la distance entre les distributions, prenons la somme des distances en chaque point, c'est-à-dire

d(F,G)=i=15|F(x)G(x)|.

d(Fu,FX)<d(Fu,FY)

Dans les cas plus compliqués, vous devez réviser la norme utilisée ci-dessus, mais l'idée principale reste la même. Si vous avez besoin d'une procédure de test, il peut être utile d'utiliser des normes pour lesquelles des tests sont développés (ceux que @TomMinka a souligné).


Le test de Kolmogorov – Smirnov et le test d' Anderson – Darling sont d'autres mesures populaires de la distance à une distribution .
Tom Minka

Salut. Merci d'avoir répondu. Veuillez revoir la question mise à jour pour lever toute ambiguïté et faites-moi savoir si votre réponse s'y applique. Si c'est le cas. Je vais devoir le vérifier.
Ketan

Oui, ma réponse s'applique à cela, tant que «même» signifie «uniforme».
Łukasz Kidziński

D'accord. Pourriez-vous nous expliquer un peu la réponse?
Ketan

@TomMinka merci, définitivement les normes ces normes sont encore meilleures, car une procédure de test a été développée.
Łukasz Kidziński

1

Si je comprends bien votre question, la distribution "la plus uniforme" pour vous serait celle où la variable aléatoire prend une fois chaque valeur observée - uniforme dans un sens. S'il y a des "grappes" d'observations à la même valeur, ce serait inégal. En supposant que nous parlons d'observations discrètes, vous pourriez peut-être regarder à la fois la différence moyenne entre les points de masse de probabilité, la différence maximale ou peut-être combien d'observations ont une différence par rapport à la "moyenne" au-dessus d'un certain seuil.

S'il était vraiment uniforme dans les observations, tous les points PM devraient avoir la même valeur et la différence entre max et min est 0. Plus la différence moyenne est proche de 0, plus la masse des observations est "uniforme", plus la différence est faible la différence maximale et le moins de «pics» qui existent montrent également à quel point les observations empiriques sont «égales».

Mise à jour Bien sûr, vous pouvez utiliser un test du khi carré pour l'uniformité ou comparer la fonction de distribution empirique avec un uniforme, mais dans ces cas, vous serez pénalisé par de grandes "lacunes" dans les observations, même si les distributions des observations sont toujours "même".


Pour un ensemble donné de valeurs possibles, je veux essentiellement modéliser à quel point «rare» ou «particulier» ce serait avoir une valeur particulière à partir de cet ensemble de valeurs. En l'absence d'autres options, j'essaie de mesurer la répartition uniforme ou uniforme des valeurs. Plus la distribution est uniforme, moins il y a de chance d'avoir une valeur particulière de l'ensemble. Alors que si, par exemple, toutes les données se trouvent dans les extrêmes d'une distribution, toute valeur peut être quelque chose de digne d'être considérée comme «particulière». J'espère que tu l'as compris?
Ketan

1

La mesure que vous recherchez est officiellement appelée divergence .

La version unidimensionnelle est la suivante:

I=[a,b)x1,,xNI

JIA(J,N)J

A(J,N)=|{x1,,xN}J|,
V(J)J

x1,,xN

>DN=supJ|A(J,N)V(J)N|,
J=j=1[0,tj)0tj1.

x1,,xNI

Les séquences à faible écart sont souvent appelées séquences quasi aléatoires .

Un aperçu de base des séquences à faible écart peut être trouvé ici , et mon article de blog " L'efficacité déraisonnable des séquences quasi aléatoires " compare diverses méthodes lorsqu'elles sont appliquées à l'intégration numérique, la cartographie des points à la surface d'une sphère et la mosaïque quasi-périodique.


0

Il semble que vous vous intéressiez aux différences par paire de valeurs observées au hasard dans une séquence particulière, comme dans le cas de la modélisation de la croissance ou de la tendance. Il existe plusieurs façons de procéder dans les analyses de séries chronologiques. Une approche très basique n'est qu'un simple modèle linéaire régressant les valeurs de séquence sur leurs valeurs d'index. Dans le premier cas, votre modèle linéaire vous donnerait un coefficient de régression singulier de 1 (prédictifR2=1). Dans le dernier cas, ce serait un coefficient de 1,51 et unR2 de 0,78.


Je ne sais pas si j'ai bien compris ce que vous vouliez dire, mais j'ai simplement besoin de comprendre comment «uniformément» quelque chose est distribué dans une distribution. La variance n'est pas très utile étant donné que l'on peut obtenir la même variance et la moyenne pour deux distributions distribuées très différemment.
Ketan

@Ketan, vous avez considérablement modifié votre question. De toute façon, je ne sais pas ce que cela pourrait être. À tout égard, il est clair que ma réponse ne traite pas de ce qui vous intéresse d'après la version la plus récente de votre question.
AdamO

Pour un ensemble donné de valeurs possibles, je veux essentiellement modéliser à quel point «rare» ou «particulier» ce serait avoir une valeur particulière à partir de cet ensemble de valeurs. En l'absence d'autres options, j'essaie de mesurer la répartition uniforme ou uniforme des valeurs. Plus la distribution est uniforme, moins il y a de chance d'avoir une valeur particulière de l'ensemble. Alors que si, par exemple, toutes les données se trouvent dans les extrêmes d'une distribution, toute valeur peut être quelque chose de digne d'être considérée comme «particulière». J'espère que tu l'as compris?
Ketan

Non, désolé de ne toujours pas suivre. Juste pour vérifier, connaissez-vous la définition officielle des données distribuées "uniformément"? Une distribution "normale", par exemple, n'est pas uniforme. Les deux sont symétriques. Vous semblez faire allusion à la question de savoir si la symétrie pourrait être intéressante, mais vous semblez dire que la probabilité d'échantillonnage de valeurs «rares» est intéressante. Par exemple, une distribution de Cauchy est symétrique, mais est connue pour être un exemple de distribution qui générera des valeurs aberrantes en tant que modèle de probabilité.
AdamO

Permettez-moi de le dire ainsi: chaque ensemble est simplement l'ensemble de toutes les valeurs d'un attribut particulier dans un ensemble de données. Je veux essentiellement quantifier chaque attribut en fonction de la «stabilité» de ses valeurs, pour lesquelles j'ai utilisé la variance simple jusqu'à présent. Mais hier soir, j'ai réalisé que exactement la même variance et la même moyenne sont possibles pour 2 attributs, même si l'un pourrait être «pair», et l'autre ayant la plupart des valeurs dans 2 extrêmes. Par conséquent, maintenant, je veux une mesure supplémentaire pour mesurer si les valeurs peuvent être trouvées uniformément, ou résident-elles davantage dans les extrêmes.
Ketan
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.