statistics.median_grouped

Nombre completo
statistics.median_grouped
Librería
statistics
Sintaxis

statistics.median_grouped(data, interval = 1)

Descripción

La función statistics.median_grouped calcula la mediana de los elementos de data agrupados en bloques de tamaño interval (parámetro que, por defecto, toma el valor 1). Más información en este enlace.

El código de esta función (simplificado) es el siguiente:

def median_grouped(data, interval):
    data = sorted(data)
    n = len(data)                           # Número de puntos
    x = data[n//2]                          # Valor central (centro del intervalo)
    L = x - interval / 2                    # Valor inferior del intervalo de la mediana
    l1 = _find_lteq(data, x)                # Posición de la primera aparición de x en data
    l2 = _find_rteq(data, x)                # Posición de la última aparición de x en data
    cf = l1                                 # Número de puntos menores que x
    f = l2 - l1 + 1                         # Número de ocurrencias de x
    return L + interval * (n / 2 - cf) / f  # Interpolation

Como puede apreciarse, tras ordenar los datos y obtener el número de elementos (variable n), se calcula el valor que ocupa la posición central (variable x). Este valor coincide con el resultado devuelto por la función statistics.median_high.

Una vez obtenida la mediana de los datos se calculan los límites del intervalo al que pertenece. En realidad solo interesa el límite inferior de este intervalo, lo que se almacena en la variable L:

L = x - interval / 2

A continuación se obtiene la posición más baja y más alta de la mediana en data (variables l1l2). A partir de estos valores se calcula el número de apariciones de la mediana en data:

f = l2 - l1 + 1

La funciones _find_lteq_find_rteq pueden implementarse de forma sencilla (aunque poco eficiente) con el siguiente código:

def _find_lteq(data, x):
    return data.index(x)
def _find_rteq(data, x):
    data.reverse()
    return len(data) - data.index(x) - 1

Por último, se interpola el valor a devolver en función del tamaño del intervalo:

L + interval * (n / 2 - cf) / f
Parámetros
  • data: Secuencia o iterable a partir de cuyos datos deseamos calcular la mediana agrupada.
  • interval: Argumento opcional. Tamaño del intervalo a considerar.
Resultado

La función statistics.median_grouped devuelve un número real.

Ejemplos

Supongamos que partimos del siguiente iterable de cinco elementos:

data = [1, 4, 5, 5, 7]

...y que el tamaño del intervalo es 2:

interval = 2

La mediana de nuestra lista es 5, por lo que el intervalo al que pertenece es [4, 6) (intervalo cerrado por la izquierda y abierto por la derecha) y este valor aparece dos veces en la lista. Es decir:

L = 4 (límite inferior del intervalo al que pertenece la mediana)

n = 5 (número de elementos en el iterable)

cf = 2 (número de valores inferiores a la mediana)

f = 2 (número de ocurrencias de la mediana)

Si aplicamos estos valores a la expresión

L + interval * (n / 2 - cf) / f

...obtenemos:

4 + 2 * (5 / 2 - 2) / 2
4.5

...valor que coincide con el devuelto por la función:

statistics.median_grouped(data, interval)
4.5
Enviado por admin el Mar, 30/03/2021 - 11:42