¿Hay alguna medida de 'uniformidad' de propagación?

14

Busqué en la web, pero no pude encontrar nada útil.

Básicamente estoy buscando una manera de medir qué tan 'uniformemente' se distribuye un valor. Como en, una distribución distribuida 'uniformemente' como X : ingrese la descripción de la imagen aquí

y una distribución distribuida 'desigualmente' Y de aproximadamente la misma media y desviación estándar: ingrese la descripción de la imagen aquí

Pero, ¿hay alguna medida de uniformidad m, tal que m (X)> m (Y)? Si no lo hay, ¿cuál sería la mejor manera de crear una medida como esta?

(Captura de pantalla de imágenes de Khan Academy)

Ketan
fuente
1
¿Qué hay de sesgo?
wolfsatthedoor
La entropía es buena para distribuciones discretas que tienen el mismo soporte. Pero no sé si es bueno para distribuciones continuas.
Stéphane Laurent
¿Estás seguro de que el diagrama de puntos es lo que quieres? No creo que realmente quieras preguntar sobre la uniformidad. Esto suena como una pregunta sobre "agrupamiento" o "grado de agrupamiento" o incluso multimodalidad.
shadowtalker
@ StéphaneLaurent: algunos otros me recomendaron la entropía. ¿Podría por favor tomarse el tiempo y explicar un poco más?
Ketan
1
Necesita definir más claramente lo que quiere decir con "distribuido uniformemente". Mi cerebro de mentalidad literal dice que datos como 1,4,7,10,13, ... están perfectamente distribuidos de manera uniforme. Pero puede querer decir algo completamente diferente.
Emil Friedman

Respuestas:

16

Una medida de "uniformidad" estándar, poderosa, bien entendida, teóricamente bien establecida y frecuentemente implementada es la función Ripley K y su pariente cercano, la función L. Aunque normalmente se usan para evaluar configuraciones de puntos espaciales bidimensionales, el análisis necesario para adaptarlas a una dimensión (que generalmente no se da en las referencias) es simple.


Teoría

La función K estima la proporción media de puntos dentro de una distancia de un punto típico. Para una distribución uniforme en el intervalo [ 0 , 1 ] , la proporción real se puede calcular y (asintóticamente en el tamaño de la muestra) es igual a 1 - ( 1 - d ) 2 . La versión unidimensional apropiada de la función L resta este valor de K para mostrar desviaciones de la uniformidad. Por lo tanto, podríamos considerar normalizar cualquier lote de datos para tener un rango de unidades y examinar su función L para detectar desviaciones alrededor de cero.d[0,1]1(1d)2


Ejemplos trabajados

Para ilustrar , he simulado muestras independientes de tamaño 64 a partir de una distribución uniforme y tracé sus funciones L (normalizadas) para distancias más cortas (desde99964 a 1 / 3 ), creando así un sobre para estimar la distribución de muestreo de la función L. (Los puntos trazados dentro de este sobre no se pueden distinguir significativamente de la uniformidad). Sobre esto, he trazado las funciones L para muestras del mismo tamaño de una distribución en forma de U, una distribución de mezcla con cuatro componentes obvios y una distribución Normal estándar. Los histogramas de estas muestras (y de sus distribuciones principales) se muestran como referencia, utilizando símbolos de línea para que coincidan con los de las funciones L.01/3

Figura

Los agudos picos separados de la distribución en forma de U (línea roja discontinua, histograma más a la izquierda) crean grupos de valores muy cercanos. Esto se refleja en una pendiente muy grande en la función L en . La función L luego disminuye, llegando a ser negativa para reflejar los espacios a distancias intermedias.0

La muestra de la distribución normal (línea azul continua, histograma de la derecha) está bastante cerca de la distribución uniforme. En consecuencia, su función L no se aparta de rápidamente. Sin embargo, por distancias de 0,1000.10 aproximadamente, se ha elevado lo suficiente por encima de la envolvente como para indicar una ligera tendencia a agruparse. El aumento continuo a través de distancias intermedias indica que el agrupamiento es difuso y generalizado (no limitado a algunos picos aislados).

La gran pendiente inicial para la muestra de la distribución de la mezcla (histograma medio) revela la agrupación a pequeñas distancias (menos de ). Al caer a niveles negativos, señala la separación a distancias intermedias. Comparar esto con la función L de la distribución en forma de U es revelador: las pendientes en 00.150 , las cantidades en que estas curvas se elevan por encima de y las tasas a las que finalmente descienden de nuevo a 0 proporcionan información sobre la naturaleza del agrupamiento presente en los datos. Cualquiera de estas características podría elegirse como una medida única de "uniformidad" para adaptarse a una aplicación particular.00

Estos ejemplos muestran cómo se puede examinar una función L para evaluar las desviaciones de los datos de la uniformidad ("uniformidad") y cómo se puede extraer de ella información cuantitativa sobre la escala y la naturaleza de las desviaciones.

(De hecho, se puede trazar la función L completa, extendiéndose a la distancia normalizada completa de , para evaluar las desviaciones a gran escala de la uniformidad. Sin embargo, ordinariamente, evaluar el comportamiento de los datos a distancias más pequeñas es de mayor importancia).1


Software

Rcódigo para generar esta figura sigue. Comienza definiendo funciones para calcular K y L. Crea una capacidad para simular a partir de una distribución de mezcla. Luego genera los datos simulados y hace los gráficos.

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")
whuber
fuente
1
Trabajo principalmente en Numpy y, a veces, en SciPy. ¿Tienes alguna idea de si esta medida está disponible en alguna biblioteca de estadísticas de Python? Buscarlo no devuelve nada relevante.
Ketan
La función L probablemente no esté disponible, porque generalmente está codificada para dos o más dimensiones. El algoritmo es simple, como puede ver en la implementación aquí: calcule la función de distribución acumulativa empírica de las distancias entre todos los pares de datos distintos y luego ajuste como se muestra en la figura Ripley.L.
whuber
¿La varianza de la medida es agnóstica o depende de la varianza?
Ketan
1
[0,1]1(1d)2
Usted dijo "Este problema puede ser un problema grave en dimensiones superiores". Se ha adaptado para matrices univariadas, ¿verdad? No estoy del todo seguro si entendí todo bien. ¿Podría por favor escribir Ripley.L en cualquier otro idioma o en pseudocódigo? O simplemente puede comentar un poco el código existente o, al menos, formatear Ripley.L a varias líneas para mejorar su legibilidad. La falta de documentación adecuada en statsmodels.sourceforge.net/stable/generated/… , de todos modos , no me está ayudando mucho.
Ketan
5

Supongo que desea medir qué tan cerca está la distribución del uniforme.

Puede observar la distancia entre la función de distribución acumulativa de distribución uniforme y la función de distribución acumulativa empírica de la muestra.

{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

Ahora, como medida de distancia entre distribuciones, tomemos la suma de distancias en cada punto, es decir

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

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

En casos más complicados, debe revisar la norma utilizada anteriormente, pero la idea principal sigue siendo la misma. Si necesita un procedimiento de prueba, puede ser bueno usar normas para las cuales se desarrollan las pruebas (las que señaló @TomMinka).

Łukasz Kidziński
fuente
Algunas otras medidas populares de distancia a una distribución son la prueba de Kolmogorov-Smirnov y la prueba de Anderson-Darling .
Tom Minka el
Hola. Gracias por la respuesta. Revise amablemente la pregunta actualizada para desambiguación, y avíseme si su respuesta se aplica a ella. Si lo hace. Tendré que verificarlo.
Ketan
Sí, mi respuesta se aplica a ella, siempre que "par" signifique "uniforme".
Łukasz Kidziński
Bueno. ¿Podrías explicar un poco la respuesta?
Ketan
@TomMinka gracias, definitivamente las normas son aún mejores, ya que se ha desarrollado un procedimiento de prueba.
Łukasz Kidziński
1

Si entiendo su pregunta correctamente, la distribución "más uniforme" para usted sería aquella en la que la variable aleatoria toma todos los valores observados una vez, uniforme en cierto sentido. Si hay "grupos" de observaciones con el mismo valor, eso sería desigual. Suponiendo que estamos hablando de observaciones discretas, tal vez podría observar tanto la diferencia promedio entre los puntos de masa de probabilidad, la diferencia máxima o quizás cuántas observaciones tienen una diferencia del "promedio" sobre un cierto umbral.

Si fuera realmente uniforme en las observaciones, todos los puntos PM deberían tener el mismo valor, y la diferencia entre máximo y mínimo es 0. Cuanto más cercana sea la diferencia promedio a 0, más "par" será el grueso de las observaciones, menor será la diferencia máxima y la menor cantidad de "picos" que hay también demuestran cuán "incluso" son las observaciones empíricas.

Actualización Por supuesto, puede usar una prueba de ji cuadrado para la uniformidad o comparar la función de distribución empírica con un uniforme, pero en esos casos, será penalizado por cualquier "brecha" grande en las observaciones, incluso si las distribuciones de las observaciones todavía son "incluso".

Abraham
fuente
Para un conjunto dado de valores posibles, básicamente quiero modelar qué tan 'raro' o 'peculiar' sería tener un valor particular de ese conjunto de valores. A falta de otras opciones, estoy tratando de medir qué tan uniforme o uniformemente distribuidos están los valores. Cuanto más uniforme sea la distribución, menos posibilidades hay de tener un valor peculiar del conjunto. Mientras que, por ejemplo, si todos los datos se encuentran en los extremos de una distribución, cualquier valor puede ser algo digno de ser considerado como "peculiar". ¿Espero que lo obtengas?
Ketan
1

La medida que está buscando se llama formalmente discrepancia .

La versión unidimensional es la siguiente:

I=[a,b)x1,,xNI

JIA(J,N)J

A(J,N)=|{x1,,xN}J|,
and let V(J) denote the volume of J.

The discrepancy of the sequence x1,,xN is defined as

>DN=supJ|A(J,N)V(J)N|,
where the supremum is taken over all half-open subintervals J=j=1[0,tj), with 0tj1.

The discrepancy thus compares the actual number of points in a given volume with the expected number of points in that volume, assuming the sequence x1,,xN is uniformly distributed in I.

Low discrepancy sequences are often called quasirandom sequences.

A basic overview of low discrepancy sequences can be found here, and my blog post "The unreasonable effectiveness of quasirandom sequences" compares various methods when applied to Numerical Integration, mapping points to the surface of a sphere, and quasiperiodic tiling.

Martin Roberts
fuente
0

It sounds like you are interested in the pairwise differences of randomly observed values in a particular sequence, as in the case of modeling growth or trend. There are a number of ways to do so in time series analyses. A very basic approach is just a simple linear model regressing the sequence values upon their index values. In the first case, your linear model would give you a singular regression coefficient of 1 (predictive R2=1). In the later case, this would be a coefficient of 1.51 and an R2 of 0.78.

AdamO
fuente
I don't know if I understood clearly enough what you meant, but I simply need to understand how 'evenly' something is distributed in a distribution. Variance is not that useful given that one can get the same variance and mean for two very differently distributed distributions.
Ketan
@Ketan, you changed your question substantially. Either way, I am not clear what that might be. In any regard, it's clear that my answer is not addressing what you are interested in based on the most recent version of your question.
AdamO
For a given set of possible values, I want to basically model how 'rare' or 'peculiar' it would be have a particular value from that set of values. In lack of any other options, I'm trying to measure how evenly or uniformly distributed the values are. The more even the distribution, the less chance there is to have any peculiar value from the set. Whereas, if for example all the data lies in the extremes of a distribution, any value can be something worthy to be considered as 'peculiar'. I hope you get it?
Ketan
No, sorry still not following. Just to verify, are you familiar with the formal definition of "uniformly" distributed data? A "normal" distribution, for example, is not uniform. Both are symmetric. You seem to allude to whether symmetry might be of interest, but then you seem to say that the probability of sampling "rare" values is of interest. For instance, a Cauchy distribution is symmetric, but is known to be an example of a distribution that will generate outliers as a probability model.
AdamO
Let me put it this way: Each set is simply the set of all values of a particular attribute in a dataset. I basically want to quantify each attribute by how 'stable' its values are, for which I've been using simple variance till now. But last night, I realized that exactly same variance and mean is possible for 2 attributes, even though one could be 'even', and other having most of the values in 2 extremes. Hence now I want an additional measure to measure if the values can be found evenly, or do they reside more in the extremes.
Ketan